如何判断用户是否通过iOS 7远程通知后台模式通知应用程序?

use*_*008 6 apple-push-notifications ios ios7

根据didReceiveRemoteNotification,在后台,我们曾经能够通过点击推送通知上的操作按钮(或者在推送通知上滑动,取决于用户如何看到推送通知)来执行-application:didReceiveRemoteNotification:然后检查来处理用户打开应用程序在方法内部,应用程序是否applicationState未激活.

在iOS 7中,有新的remote-notification后台模式,允许应用程序在向用户显示远程通知时执行后台获取(用户无需对通知执行任何操作).要支持此模式,您应该实现该-application:didReceiveRemoteNotification:fetchCompletionHandler:方法.

文档-application:didReceiveRemoteNotification:说明如果您的应用程序委托实现该application:didReceiveRemoteNotification:fetchCompletionHandler:方法,那么"app对象将调用该方法而不是此方法".这意味着我们不能再-application:didReceiveRemoteNotification:用来处理远程通知,因为它不会被调用.

我们应该把处理逻辑放进去application:didReceiveRemoteNotification:fetchCompletionHandler:,但之前处理它的技巧不再有意义 - 以前,我们依赖的事实是,-application:didReceiveRemoteNotification:当应用程序不活动时调用的唯一方法是用户点击了打开应用程序的通知上的操作按钮.但是,现在,remote-notification后台模式的重点在于,application:didReceiveRemoteNotification:fetchCompletionHandler:每次收到远程通知时,它都可以在后台调用,然后用户对其执行任何操作.

那么,我们现在怎样才能告诉用户何时使用通知上的操作按钮打开应用程序?

jup*_*ham 6

您仍然检查应用程序状态 application:didReceiveRemoteNotification:fetchCompletionHandler:

  • UIApplicationStateBackground - 应用程序在后台接收推送通知
  • UIApplicationStateInactive - 应用程序正在从用户点击通知打开