iOS - 处理APNS推送通知

15

考虑到我在iPhone上收到推送通知。

发生了什么:

  1. 如果应用程序已经启动:有没有一种方法可以获取有效载荷?我能在屏幕上看到通知吗?
  2. 如果应用程序没有启动,有没有一种方法可以获取有效载荷?

谢谢您的回答。

1个回答

34

首先,推送通知并不是“强制性的”,如果你让一个通知停留足够长的时间(例如手机关闭了多天),它将被丢弃。你需要进行一些自定义的后端处理来保留发送通知中的内容。

UIApplicationDelegate协议中有application:didFinishLaunchingWithOptions:方法。如果用户通过推送通知的警报中正确的按钮启动您的应用程序,则绑定到该方法调用的launchOptions字典将包含有关该通知的信息;如果您的应用程序已经在运行,则代理协议中的application:didReceiveRemoteNotification:将被调用。

所以,

  • 如果应用程序正在运行,并且您实现了application:didReceiveRemoteNotification:,那么是的,您会收到有效负载。否则,没有任何操作。

  • 如果应用程序在发送通知时未启动,则用户点击通知的警报并启动您的应用程序,则如果实现了application:didFinishLaunchingWithOptions:,您的应用程序将收到有效负载。否则,您将得到无效信息。


3
我注意到在今天之前(2012年7月3日),launchOptions不再使用。 应用程序打开后,将调用didReceiveRemoteNotification - Jacksonkr
如果没有包含警报,则didReceiveRemoteNotification:方法不会为后台应用程序调用。在iOS 6中,当您的应用程序不在前台时,无法在没有用户交互的情况下接收有效负载。尽管文档提到了这一事实,但声音很小。https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW4 - Aubrey Goodman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接