Comments (3)
Until now, no, we do not have such support. However, I do think it is a very important feature and should be added in recent release.
May I know something more about your requirement? like which kind of status do you want to know? Total number of services? Total number of subscribers under some service?
Another obstacle we have here is redis. Well.. Redis is a wonderful datastore. However, not as powerful as we need right now. To support more complicated queries for status, we may need a relational database. This is partly why I did not start on the feature of status checking --- I think I may need to support SQL databases first, then add some other complex queries on top of the relational databases.
I will consider this feature request carefully and come up with some applicable approach.
from uniqush-push.
umm.. sorry, actually i would like to have a delivery status of each push request, which i can inquiry by webservice. As i am thinking if the push request is failed in first time, then it should be retry in the background. right? but the service has already returned the failed message to my http client. then how can I get the successful message if it really send successful?
Besides, i found that, maybe i'm wrong, it seems hasn't save the push request into datastore, which i'm thinking if the service down suddenly while the message is pushing. Could it be resume to which subscriber i'm sending to?
Btw, the uniqush is great pushing system, it helps me a lot.
from uniqush-push.
Thanks for using uniqush!
To answer your questions:
- When you use an HTTP request to ask uniqush-push to push message, uniqush-push will respond an HTTP response message, containing the status of the action. i.e. If it is failed, you can immediately know the failure by checking the content of the HTTP response. Uniqush-push will response success if the message is successfully delivered to the corresponding push service provider(s) (like GCM, APNS, ADM.) uniqush-push will not guarantee the delivery to the device.
- If there is an error, and the error is recoverable by re-sending according the the push service provider's documentation, then uniqush-push will try to resend the message. In this case, you will only receive an HTTP response saying that uniqush-push will retry. In this case, you cannot know the status of the message without checking the log file.
- uniqush-push will not store the message into the datastore. It is a "best-effort" system, i.e. it will not guarantee anything about the delivery of the message to the final destination (the device.)
With that being said, you may have a question like How can I make sure that the device has received my message? A short answer is: You can't. Because neither GCM, nor APNS can guarantee the success of delivery. But remember, this is not the end of the world. Uniqush (as a system) provides (or will provide) another program to solve this problem.
To understand the solution, you need to remember: Uniqush is a name of a system that providing communication facility for mobile apps. uniqush-push is only one program. It is a part of Uniqush system, but not the only part. There are other parts, like uniqush-conn, and some other client libraries.
uniqush-conn provides a facility so that mobile devices can establish TCP connections with server side to retrieve/send message from/to the server. Some typical use case is like this: Server sends a message to uniqush-conn, saying it wants to send the message to some client; Then uniqush-conn will store the message in some datastore (redis, mysql, postgresql, etc.). If there is a TCP connection between uniqush-conn and the client, uniqush-conn will send the message directly through this connection; otherwise, uniqush-conn will ask uniqush-push to push some notification to the client, including a message ID. Once the client received the push notification, it will then connect to uniqush-conn and ask for that message with its message ID. Then the problem here is: What if uniqush-push cannot send the message? What if the notification got lost? uniqush-conn provides a function that allows client to request messages sent between a time interval. As I mentioned before, uniqush-conn stores the message in a datastore. The client can connect with uniqush-conn saying I need all messages sent on yesterday. Then uniqush-conn will retrieve those messages from the datastore and send them to the client.
from uniqush-push.
Related Issues (20)
- APNs binary protocol will be disabled in November 2020 - Provide migration steps
- Add a health check for connection pools, redis being connected HOT 3
- Refuse to start up if APNs certificates cause SystemRootsError
- Plans for web push features? HOT 1
- Potential code quality issues found HOT 3
- Fix no-op Signal(os.Kill)
- Idea: Add an opt-in mode to act as a proxy without managing tokens
- Consider migrating GCM/FCM from legacy HTTP API to HTTP v1 API
- Look into token-based instead of certificate-based connections to APNs
- Add Destination pointer to all push.Error implementations, to log
- Disable APNs binary protocol and feedback checker HOT 1
- Look into supporting apns-push-type setting HOT 1
- cant receive message in android app
- Remove psps
- What about an open server-side events/REST protocol for apps on any platform?
- Document how to support new root CAs for APNs servers with uniqush
- Make FCM/APNS timeouts configurable?
- Switch to api.sandbox.push.apple.com
- what tutorials on this are complete, i cant send a push notification via fcm
- Support UnifiedPush on Android devices HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uniqush-push.