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

时间:2013-09-25 02:48:26

标签: iphone ios objective-c apple-push-notifications

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

以下是我将如何处理它的方法,其中没有一个是简单的。

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

1 个答案:

答案 0 :(得分:1)

4号是正确的方法。除了iOS7之外,无法保证在收到APN时您的任何应用代码都会运行。因此,当您的应用启动时,它必须与您的服务器核实它应显示的任何新信息。

最简单的方法是将此代码总是询问您的服务器是否要显示最新信息,而不是依赖于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