android - PunNub - 设备关闭时恢复丢失消息的最佳方法?

标签 android ios push-notification pubnub

我们有多个移动客户端(ios 和 android)订阅了一个 channel 消息。

服务器正在向 channel-msg 发布 7 条消息:
enter image description here

  1. 消息 1-3 已发布到 channel 。
  2. 设备通过本地 PubNub 获得消息 1-3。
  3. 用户关闭了设备。
  4. 消息 4-5 已发布到 channel 。
  5. 用户打开了设备,应用在前台。
  6. 消息 6 已发布。
  7. 消息 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/

相关文章:

用于引用 textView 的 Android id 数组

android - 分组 Android 通知

java - Android : Mockito (2. 0.2-beta) - 无法模拟/监视 final类

android - 使用 layout_height ="38sp"时中间显示白线的编辑文本

java - Sugar ORM 中的 count() 方法是否有任何理由采用 String[] 参数而不是 String...?

ios - 如何在 iOS 中检查文本是否被选中以及十字按钮是否被按下?

ios - React Native 推送通知未出现在设置中

ios - 有没有比 OTHER_LINKER_FLAGS 更好的方法来链接到 iOS 上配置特定的静态库?

ios - 关于在ios中保存来自远程通知的信息

ios - 推送通知后运行函数