我们有多个移动客户端(ios 和 android)订阅了一个 channel 消息。
- 消息 1-3 已发布到 channel 。
- 设备通过本地 PubNub 获得消息 1-3。
- 用户关闭了设备。
- 消息 4-5 已发布到 channel 。
- 用户打开了设备,应用在前台。
- 消息 6 已发布。
- 消息 6 到达设备。
此时(在设备代码中的“收到 PubNub 消息”回调中),我不想执行消息 6,因为我必须先执行消息 4-5。。 p>
我可以使用 history() API 来获取丢失的消息,但是通过这种策略,我必须先对我在设备上收到的每条消息执行“历史检查”,然后才能执行它。
我有更好的模式/设计来处理这种情况吗?
最佳答案
PubNub 历史
您不需要为每条消息调用历史记录,而是检索所有错过的消息(每个 history
调用最多 100 条)。
只需保存上次收到的消息的时间标记,您可以在应用重新启动时检索它 (NSUserDefaults
)。当您的应用程序启动时,只需在您的 history
调用中使用时间标记作为 end
参数(start
参数为 nil)。
如果您返回了 100 条消息(最大值),那么您可能有更多消息并且您需要 call history again (paging through storage) and again until you receive > 100 messages .
收到最后一条消息后,use the timetoken of that last message (the one closest to now), use that timetoken to subscribe
获取上次 history
调用和您的 subscribe
之间的任何消息,并继续订阅更多消息。
关于android - PunNub - 设备关闭时恢复丢失消息的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294511/