假设我有一个聊天应用程序,并且我正在给另一个用户(用户B)发送消息,我们的消息通常使用套接字接收,但是当用户B下线时,他与套接字服务器断开连接,但用户A继续发送文本他让我的服务器向用户B的设备发送用户A发送的每条消息的推送通知。我的问题是,APNS将充当消息代理并将所有消息排队,直到用户B重新登录并接收它们?还是我必须存储在别处Apple推送通知可以用作消息队列吗?
1
A
回答
3
苹果推送通知服务容易发现包括服务质量(QoS)的组件,其执行一个存储和转发功能未被接收的消息。如果APN尝试发送通知并且目标设备处于脱机状态,则APN将在一段有限的时间内存储通知,并在设备再次可用时发送通知。此组件仅存储每个设备和每个应用的最新通知。如果设备处于脱机状态,则发送针对该设备的通知请求会导致先前的请求被丢弃。如果设备长时间处于脱机状态,则其在APN中存储的所有通知都将被丢弃。
所以,不,你不能使用APN作为消息代理。
您可以使用推送通知作为信号来唤醒并与服务器端消息队列同步。 RabbitMQ或Kafka可能是候选经纪人,MQTT看起来很有希望成为协议。您将需要计算如何以及何时丢弃未成功传送到设备的消息队列的内容。
相关问题
- 1. GCM可以向VoIP iOS发送推送通知消息吗?
- 2. Apple推送通知Rails应用程序消息传送
- 3. iOS推送通知消息
- 4. Firebase推送通知的通知消息的click_action不起作用
- 5. Apple推送通知问题
- 6. Apple推送通知构造
- 7. 过滤Apple推送通知
- 8. 我可以在Cydia应用程序中使用Apple推送通知吗?
- 9. Apple推送通知或Firebase推送通知?
- 10. 无Apple推送通知服务的推送通知?
- 11. 我可以直接向队列发送消息请求吗?
- 12. Apple推送通知 - 送货回执
- 13. Apple推送通知不适用于aps_production.cer
- 14. 如何使用Apple推送通知?
- 15. quickblox ios推送通知消息问题
- 16. 不要推送通知消息
- 17. 消息不刷新推送通知
- 18. Pushpad或Web推送通知消息
- 19. iPhone推送通知(非英文消息)
- 20. 更改推送通知警报消息
- 21. 推送通知消息定制?
- 22. Apple通过代理推送PHP通知
- 23. 您可以将多少个字符挤入Apple推送通知?
- 24. 推送通知可以跳过通知中心吗?
- 25. 收到消息时推送通知iOS不起作用
- 26. 用Python推送Apple推送通知服务
- 27. 是否可以处理Apple通知消息?
- 28. 我可以使用Windows Phone中的推送通知服务将消息发送给其他用户吗?
- 29. PLSQL APPLE推通知
- 30. Apple推送通知 - 防火墙?
在RabbitMq中存储未接收到的消息是一种比将它们放入数据库然后在用户重新登录时选择它们更好的方法? –
@RyanMurphy:取决于规模。使用数据库的方法比消息队列难以缩放。消息队列倾向于具有定义好的关于“消费”消息的语义 - 如果向服务器发送请求(随后从数据库获取消息),如果移动设备没有收到回复,会发生什么情况?您需要建立某种确认,确认设备在移除它们之前实际得到了它们。实质上,你正在从数据库中构建一个并发的MSG Q,而实际上并不那么容易。 – marko