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