根据didReceiveRemoteNotification when in background-application:didReceiveRemoteNotification:
,我们曾经能够通过实现然后检查来处理用户通过单击推送通知上的操作按钮(或在推送通知上滑动,取决于用户如何查看推送通知)来打开应用程序在方法内部,应用程序是否applicationState
未处于活动状态。
在 iOS 7 中,有新的remote-notification
后台模式,它允许应用程序在向用户显示远程通知时执行后台获取(无需用户对通知执行任何操作)。要支持此模式,您应该实现该-application:didReceiveRemoteNotification:fetchCompletionHandler:
方法。
的文档-application:didReceiveRemoteNotification:
说,如果您的应用程序委托实现了该application:didReceiveRemoteNotification:fetchCompletionHandler:
方法,那么“应用程序对象调用该方法而不是这个方法”。这意味着我们不能再使用它-application:didReceiveRemoteNotification:
来处理远程通知,因为它不会被调用。
我们可能应该将处理逻辑放入 中application:didReceiveRemoteNotification:fetchCompletionHandler:
,但之前处理它的技巧不再有意义 - 以前,我们依赖于这样一个事实,即-application:didReceiveRemoteNotification:
当应用程序不活动时调用的唯一方法是用户点击通知上的操作按钮以打开应用程序。但是,现在,remote-notification
后台模式的全部意义在于,application:didReceiveRemoteNotification:fetchCompletionHandler:
每次收到远程通知时,它都可以在后台调用,然后用户对其进行任何操作。
那么,我们现在如何判断用户何时使用通知上的操作按钮打开应用程序?