如果应用程序直接从后台启动而不是从通知消息启动,如何知道推送消息信息?
How to know a push message info if app is launched from background directly rather than from notification msg?
我已正确注册推送通知。
实现了以下方法来接收通知。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
还使用了 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
中的 UIApplicationLaunchOptionsRemoteNotificationKey
。
当应用程序处于活动状态时,我能够收到通知。如果我通过从横幅或警报中选择应用程序从通知中打开应用程序,我也可以看到通知。
但是,如果应用程序未处于活动状态,则它可能处于活动状态或已被终止,并且如果此时收到通知。我忽略通知并通过直接从主屏幕选择应用程序图标打开应用程序,我没有从 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
.
中获取 UIApplicationLaunchOptionsRemoteNotificationKey
中的通知信息
那么处理这种情况的正确方法是什么?应用程序是否应该调用服务器并获取它发送的最近消息?非常感谢任何帮助。
如果用户直接从主屏幕打开您的应用,您将无法访问推送通知字典。
如果您需要推送通知中发送的数据,那么正确的方法将是您建议的服务器请求。
如果用户通过点击图标进入应用程序或从后台启动,推送通知消息无法发送给您,消息被系统缓存,只能从通知中心获取
回答我的问题:
后台应用可能会收到推送通知。
为此,在推送通知的 aps
词典中发送 content-available
。
从 Xcode 项目的功能选项卡的后台模式部分启用应用程序的后台模式。
在应用程序委托中实现 application:didReceiveRemoteNotification:fetchCompletionHandler:
。
中的 'Notification Payload' 部分
请参阅第 'Using Push Notifications to Initiate a Download' 部分
https://developer.apple.com/library/prerelease/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
但是,如果应用程序被终止,则不会调用 appdelegate 的 application:didReceiveRemoteNotification:fetchCompletionHandler:
。
根据 iOS8.0 上的 Will iOS launch my app into the background if it was force-quit by the user? post,可以使用 PushKit 来完成。但我没有测试过。而且如果不使用VOIP那么我不知道如果应用程序被杀死是否有可能接收推送通知信息。
我已正确注册推送通知。 实现了以下方法来接收通知。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
还使用了 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
中的 UIApplicationLaunchOptionsRemoteNotificationKey
。
当应用程序处于活动状态时,我能够收到通知。如果我通过从横幅或警报中选择应用程序从通知中打开应用程序,我也可以看到通知。
但是,如果应用程序未处于活动状态,则它可能处于活动状态或已被终止,并且如果此时收到通知。我忽略通知并通过直接从主屏幕选择应用程序图标打开应用程序,我没有从 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
.
UIApplicationLaunchOptionsRemoteNotificationKey
中的通知信息
那么处理这种情况的正确方法是什么?应用程序是否应该调用服务器并获取它发送的最近消息?非常感谢任何帮助。
如果用户直接从主屏幕打开您的应用,您将无法访问推送通知字典。
如果您需要推送通知中发送的数据,那么正确的方法将是您建议的服务器请求。
如果用户通过点击图标进入应用程序或从后台启动,推送通知消息无法发送给您,消息被系统缓存,只能从通知中心获取
回答我的问题:
后台应用可能会收到推送通知。
为此,在推送通知的 aps
词典中发送 content-available
。
从 Xcode 项目的功能选项卡的后台模式部分启用应用程序的后台模式。
在应用程序委托中实现 application:didReceiveRemoteNotification:fetchCompletionHandler:
。
请参阅第 'Using Push Notifications to Initiate a Download' 部分 https://developer.apple.com/library/prerelease/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
但是,如果应用程序被终止,则不会调用 appdelegate 的 application:didReceiveRemoteNotification:fetchCompletionHandler:
。
根据 iOS8.0 上的 Will iOS launch my app into the background if it was force-quit by the user? post,可以使用 PushKit 来完成。但我没有测试过。而且如果不使用VOIP那么我不知道如果应用程序被杀死是否有可能接收推送通知信息。