根据《本地和远程通知编程指南》,当发送远程通知并点击SpringBoard中的应用程序图标时:
用户点击警报中的默认按钮或点击(或点击)应用程序图标。如果默认的动作按钮被点击(在运行iOS的设备上),系统启动应用程序,应用程序调用其委托的application:didFinishLaunchingWithOptions:方法,传入通知有效载荷(用于远程通知)或local-notification对象(用于本地通知)。
如果通知是远程的,系统还调用application:didReceiveRemoteNotification:fetchCompletionHandler:.
然而,当我看到远程通知徽章并点击应用程序图标时,既不是application:didFinishLaunchingWithOptions:
(应用程序将在后台运行),也不是application:didReceiveRemoteNotification:
,也不是application:didReceiveRemoteNotification:fetchCompletionHandler:
被调用…
当我点击横幅或警报时成功获得推送通知的有效载荷,我如何在点击应用图标时也获得它?
谢谢
你需要继续阅读。引用部分的其余部分为-
如果在运行OS X的计算机上单击应用程序图标,则应用程序调用委托的applicationDidFinishLaunching:方法委托可以获取远程通知有效负载。如果应用图标在运行iOS的设备上点击,应用程序会调用相同的方法,但是
注意我保留的部分。简而言之,如果应用程序是从应用图标启动的,那么就不会提供任何关于可能已收到的通知的信息。
我遇到了同样的问题,不幸的是,就像Paulw11说的,你的应用程序将没有收到有效载荷的信息。然而!我注意到,徽章号码将反映错过的通知,所以在应用程序启动时,您可以检查您的applicationBadgeNumber != 0
,如果不是,您可以查询您的服务器发送的最后数据。