【问题标题】:How to tell whether user opened app with notification with iOS 7 remote-notification background mode?如何判断用户是否使用 iOS 7 远程通知后台模式打开了带有通知的应用程序?
【发布时间】:2013-10-28 18:46:21
【问题描述】:

根据didReceiveRemoteNotification when in background ,我们曾经能够通过实现@ 来处理用户通过单击推送通知上的操作按钮(或在推送通知上滑动,取决于用户如何查看推送通知)来打开应用程序987654323@ 然后在方法内部检查应用程序的applicationState 是否未激活。

在 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:

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

【问题讨论】:

    标签: ios ios7 apple-push-notifications


    【解决方案1】:

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

    • UIApplicationStateBackground - 应用在后台接收推送通知
    • UIApplicationStateInactive - 用户点击通知即可打开应用

    【讨论】:

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

    我是用这个委托函数来添加『通知编号』

    导致我们的服务器没有将徽章发送给我们的客户。 然后我用奇怪的方法在这个delegate函数中添加了『Notification Number』,我还在这个函数中添加了切换UIViewController的代码。

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

    在我从服务器推送 Notification 后,我的测试应用也会将 UIViewController 切换到另一个 UIViewController。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2018-01-13
      • 1970-01-01
      相关资源
      最近更新 更多