根据didReceiveRemoteNotification when in background,我们曾经通过执行-application:didReceiveRemoteNotification:
然后检查,通过单击推送通知上的操作按钮(或在推送通知上轻扫,取决于用户如何看到推送通知)来处理用户打开应用程序在方法内部,应用程序的applicationState
是否未激活。如何判断用户是否使用iOS 7远程通知后台模式通知了应用程序?
在iOS 7中,有一个新的remote-notification
背景模式,该模式允许应用程序在向用户显示远程通知(而用户不必对通知执行任何操作)时执行后台提取。为了支持这种模式,你应该实施-application:didReceiveRemoteNotification:fetchCompletionHandler:
方法。
The documentation for -application:didReceiveRemoteNotification:
表示如果您的应用程序委托实现application:didReceiveRemoteNotification:fetchCompletionHandler:
方法,则“应用程序对象调用该方法而不是此方法”。这意味着我们不能再使用-application:didReceiveRemoteNotification:
来处理远程通知,因为它不会被调用。
我们或许应该把处理逻辑在application:didReceiveRemoteNotification:fetchCompletionHandler:
,但处理得没有意义了以前的绝招 - 以前,我们依赖于一个事实,唯一的办法-application:didReceiveRemoteNotification:
被调用时,应用程序不活跃如果用户点击通知上的操作按钮以打开该应用程序。但是,现在,remote-notification
后台模式的全部要点是,每次接收到远程通知时,都可以在后台调用application:didReceiveRemoteNotification:fetchCompletionHandler:
,然后用户对其执行任何操作。
那么,我们现在应该如何判断用户何时使用通知上的操作按钮打开应用程序?
UIApplicationStateInactive可能发生以下情况: - 推送到达并且应用程序正在更改为其他,我的意思是打开多任务视图。 - 应用程序在前台运行,但通知中心已打开。 – Jesuslg123