我知道这是覆盖在很多地方,但我不知道这一点。 我用城市飞艇用于推送通知。 一切似乎只是罚款时,我的应用程序在后台- didReceiveRemoteNotification
是没有得到调用。 我能够正确地处理信息 - 当在前台它的工作原理。 而我能够,如果消息从通知中心抽头获得从启动选项的消息。 但是,当在后台运行,它发送一个消息- iOS设备会显示警告- didReceiveRemoteNotification
不叫。 当我在我的应用程序图标点击(而不是从通知中心内)的应用程序来到前台,我不知道该通知是存在的。 有任何想法吗?
Answer 1:
从APNS编程指南:
让我们回顾一下可能出现的情况时操作提供了一个本地通知或应用程序的远程通知。
当应用程序没有在前台运行的通知送到。 在这种情况下,系统介绍了通知,显示警告,徽章图标,也许播放声音。
如所呈现的通知的结果,用户敲击警报或抽头(或点击)的应用程序图标的动作按钮。 如果操作按钮被窃听(运行iOS的设备上),系统启动应用程序和应用程序调用其委托的application:didFinishLaunchingWithOptions:方法中(如果实现的话); 它通过在通知有效载荷(用于远程通知)或本地通知对象(本地通知)。
如果应用程序图标运行iOS的设备上轻敲,应用程序调用相同的方法, 但配料中没有有关通知的信息 。
我相信最后一句话描述你的情况,并解释了为什么您的应用程序变得没有关于通知的信息。
Answer 2:
application:didReceiveRemoteNotification:
将只有当你已经添加背景调用content-available
键与值1
到通知的有效载荷。 在城市飞艇的情况下,可以设置选项卡下发测试推送。 推送通知样品有效载荷:
{
"aps": {
"alert": "aaaa",
"badge": "+1",
"content-available": "1"
},
"device_tokens": [
"86BA71E361B849E8312A7B943BA6B26A74AB436381CF3FEE3CD9EB436A12A292"
]
}
苹果自己的文件中已明确提到....
对于推送通知来触发的下载操作时,通知的有效载荷必须包括其值设置为1,当该键存在于内容可用的键时,系统被唤醒在后台应用程序(或将其发射到背景)和调用应用程序委托的应用:didReceiveRemoteNotification:fetchCompletionHandler:方法。 你的实现该方法应该下载相关内容,并将其整合到您的应用程序。 https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
Answer 3:
didReceiveRemoteNotification呼吁只有当应用程序在前台或者如果应用程序是刚刚推出或者是从后台到前台买
在苹果公司的链接和一些问题
Answer 4:
方法didFinishLaunchingWithOptions:(NSDictionary的*)launchOptions参数launchOptions字典关键之一是UIApplicationLaunchOptionsRemoteNotificationKey持有的压制推送通知信息。
旅游主根控制器初始化后,你可以把收到的信息。 我将它保存到一些属性,然后将其推视图被初始化后。
if (launchOptions) {
if ([launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) {
self.notificationToMakeAction = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
}
}