根据Local and Remote Notification Programming Guide,当发送远程通知并点击SpringBoard中的应用图标时:
用户点击警告中的默认按钮或点击(或点击)应用图标。如果点击默认操作按钮(在运行iOS的设备上),系统将启动应用程序并且应用程序调用其委托的应用程序:didFinishLaunchingWithOptions:方法,传入通知有效内容(用于远程通知)或本地通知对象(用于本地通知)。
如果通知是远程的,系统也会调用application:didReceiveRemoteNotification:fetchCompletionHandler:。
但是,当我看到远程通知徽章并点击应用图标时,application:didFinishLaunchingWithOptions:
(app将在后台运行),application:didReceiveRemoteNotification:
和application:didReceiveRemoteNotification:fetchCompletionHandler:
都不会被调用。 ..
点击横幅广告或提醒时,我成功获得了推送通知的有效负载,点击应用图标时我怎么能得到它?
由于
答案 0 :(得分:2)
你需要继续阅读。你引用的部分的其余部分是 -
如果在运行OS X的计算机上单击了应用程序图标,则应用程序会调用 委托的applicationDidFinishLaunching:方法中的 委托可以获取远程通知负载。 如果是应用图标 在点击运行iOS的设备上,该应用程序调用相同的方法,但是 不提供有关通知的信息。
请注意我加粗的部分。简短的回答是,如果从应用程序图标启动应用程序,则不会提供有关可能已收到的任何通知的信息。
答案 1 :(得分:0)
我遇到了同样的问题,不幸的是像Paulw11说的那样,你的应用程序将不会收到有关负载的信息。然而!我注意到徽章编号将反映错过的通知,因此在应用启动时,您可以检查是否applicationBadgeNumber != 0
,如果不是,您可以向服务器查询已发送的最后数据。