如何使用在不同时间到达的用户数据处理多个推送通知?

Sch*_*999 5 iphone objective-c apple-push-notifications ios

我的应用程序正在接收从服务器发送到Apple后端的APN.当通知到达用户的设备时,用户自然可能无法打开应用程序.与此同时,我的服务器可能会推送更多通知.它们都包含一些在处理通知时很重要的用户数据.那怎么处理呢?iOS不会捆绑并给我一批,是吗?

以下是我将要解决的方法,其中没有一个是简单的.

  1. 服务器跟踪未看到的数据,并在到达时,新请求始终发送一批所有新通知,将计数反映为徽章计数.
  2. 通过点击通知弹出窗口打开客户端.在这种情况下,它具有所有需要的数据didReceiveRemoteNotification. 要么
  3. 客户端忽略通知弹出窗口并通过点击应用程序图标打开应用程序(可能稍后).在这种情况下didReceiveRemoteNotification不会被调用,因此app必须从服务器获取所有需要的数据. 要么
  4. 服务器从不发送任何用户数据,客户端每次启动或获取数据时都会检查新内容didReceiveRemoteNotification.

还要别的吗?我想念的更简单吗?

Mal*_*Box 1

第四点是正确的方法。无法保证您的任何应用程序代码在收到 APN 后都会运行,iOS7 除外。因此,当您的应用程序启动时,它必须检查您的服务器以获取应显示的任何新信息。

最简单的编码方式是始终向服务器询问要显示的最新信息,而不是依赖 APN 中的信息。仅使用 APN 中的信息来确定要导航到哪些新信息,以便应用程序显示用户点击的任何内容。

iOS7 改变了这一点,您可以使用remote-notification后台模式,在推送消息到达时启动。请参阅https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:didReceiveRemoteNotification:fetchCompletionHandler