5

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

以下是我将如何解决它的方法,这些方法都不简单。

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

还要别的吗?我缺少一些更简单的东西?

4

1 回答 1

1

4 号是正确的方法。无法保证您的任何应用程序代码在收到 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

于 2013-09-25T09:57:03.470 回答