【问题标题】:Unable to get push (remote) notification when app icon tapped点击应用图标时无法获得推送(远程)通知
【发布时间】:2015-11-03 13:03:17
【问题描述】:

根据Local and Remote Notification Programming Guide,当发送远程通知并点击SpringBoard中的应用程序图标时:

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

如果通知是远程的,系统也会调用application:didReceiveRemoteNotification:fetchCompletionHandler:。

但是,当我看到远程通知徽章并点击应用程序图标时,application:didFinishLaunchingWithOptions:(应用程序将在后台运行)、application:didReceiveRemoteNotification:application:didReceiveRemoteNotification:fetchCompletionHandler: 都不会被调用...

我在点击横幅或警报时成功获取推送通知的有效负载,我如何在点击应用图标时也获得它?

谢谢

【问题讨论】:

    标签: ios background apple-push-notifications payload


    【解决方案1】:

    您需要继续阅读。您引用的部分的其余部分内容为 -

    如果在运行 OS X 的计算机上单击应用程序图标,应用程序会调用 委托的 applicationDidFinishLaunching: 方法,其中 委托可以获取远程通知有效负载。 如果应用图标 在运行 iOS 的设备上被点击,应用程序调用相同的方法,但 未提供有关通知的任何信息。

    注意我加粗的部分。简短的回答是,如果应用程序是从应用程序图标启动的,则不会提供有关可能已收到的任何通知的信息。

    【讨论】:

    • 谢谢...那么在这种情况下是否无法获取有效负载?当应用程序进入前台时,我想显示与我收到的推送相关的文本,并且当用户点击横幅或警报时有可能,但如果用户只看到徽章怎么办?
    • 标准做法是检查服务器是否有任何可能已推送的数据 - 我不知道这是否适用于您的情况
    • 启用远程通知后台模式能否解决这种情况?
    • 仅在您的应用仍在后台运行的情况下。如果您的应用被终止,则推送不会传送到您的应用
    • Paulw11,您建议如何配置服务器,您是否建议保留发送推送通知的表格,查询每个标准应用程序图标点击启动,然后在收到或处理时将它们标记为已接收他们?对于他们已经在 OSX 上提供的东西,这似乎很痛苦
    【解决方案2】:

    我遇到了同样的问题,不幸的是,正如 Paulw11 所说,您的应用将不会收到有关有效负载的信息。然而!我注意到徽章编号将反映错过的通知,因此在应用程序启动时,您可以检查您的 applicationBadgeNumber != 0 是否,如果不是,您可以查询您的服务器以获取最后发送的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 2012-08-18
      • 2019-04-23
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多