【问题标题】:Handling remote notification while app is totally off by launching from app icon通过从应用程序图标启动来处理应用程序完全关闭时的远程通知
【发布时间】:2014-03-24 21:28:01
【问题描述】:

我可能会与风车搏斗,但我需要了解一下我对远程通知的了解。我想在我的应用程序关闭时处理通知(从应用程序切换器中删除),但用户决定不是通过点击通知而是通过点击应用程序图标来打开它。

据我所知,当应用程序被杀死并且远程通知到达时,用户必须点击通知以将其从didFinishLaunchingWithOptions: 传递给launchOptions 但是......我想在用户点击应用程序时处理此通知图标,没有任何东西传递给lauchOptions。在那种情况下,目前我根本没有任何通知......

无论应用程序如何启动,是否可以在后台处理通知并对其执行操作?也许didReceiveRemoteNotification: fetchCompletionHandler:

【问题讨论】:

    标签: ios iphone objective-c notifications appdelegate


    【解决方案1】:

    是的,你在和风车搏斗:)

    我建议你阅读Local and Push Notifications in depth。有点长,但是文档很清楚。

    在此文档的片段中,您可以阅读:

    如果在运行 iOS 的设备上点击应用程序图标, 应用程序调用相同的方法 (应用程序:didFinishLaunchingWithOptions :),但没有提供 有关通知的信息。

    后来:

    在处理远程通知时 应用程序:didFinishLaunchingWithOptions:或 applicationDidFinishLaunching:,应用程序委托可能执行 一项重大的附加任务。应用程序启动后, 委托应与其提供者连接并获取等待的数据。 清单 2-5 给出了这个过程的示意图。

    话虽如此,您可以为服务器中的每台设备提供已发送通知的列表,并且每次启动应用时检查设备是否有任何待处理的通知。

    【讨论】:

    • 我想知道为什么会这样......他们应该在 iOS 中添加通知队列之类的东西,这样开发人员可以更轻松地随时访问它们!
    【解决方案2】:

    来自Local and Push Notification Programming Guide

    作为呈现通知的结果,用户点击警报的操作按钮或点击(或单击)应用程序图标。 如果点击操作按钮(在运行 iOS 的设备上),系统会启动应用程序并且应用程序调用其委托的 application:didFinishLaunchingWithOptions: 方法(如果已实现);它传入通知负载(用于远程通知)或本地通知对象(用于本地通知)。

    如果在运行 iOS 的设备上点击应用程序图标,应用程序会调用相同的方法,但不会提供有关通知的信息

    因此,如果您的应用程序是从图标启动的,那么您将不会收到通知数据。您需要您的应用程序查询负责发送通知的服务/数据存储,以查看是否有未完成的数据/事务/其他。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多