2013-10-28 47 views
6

根据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:,然后用户对其执行任何操作。

那么,我们现在应该如何判断用户何时使用通知上的操作按钮打开应用程序?

回答

6

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

  • UIApplicationStateBackground - 应用程序在后台收到推送通知
  • UIApplicationStateInactive - 应用程序从用户轻敲通知
+0

UIApplicationStateInactive可能发生以下情况: - 推送到达并且应用程序正在更改为其他,我的意思是打开多任务视图。 - 应用程序在前台运行,但通知中心已打开。 – Jesuslg123

0

我打开使用此代表功能添加「通知号码」

导致我们的服务器不向我们的客户发送徽章。 然后我用奇怪的方法在这个委托函数中添加了「通知号码」,并且我还添加了一个代码在这个函数中切换UIViewController。

我发现当我使用服务器推通知我的测试应用程序,和测试应用程序的状态是在后台,即使我使用Twitter或Safari。

我从服务器推通知后,我的测试应用程序也切换到另一个UIViewController UIViewController。

相关问题