当应用处于后台或被杀时,我遇到接收推送通知的问题。当应用处于前台时,会调用didReceiveRemoteNotification:
并且应用获取推送通知。但是,当应用程序处于后台或被杀死,并且推送通知到达设备时,即使应用程序已为徽章,声音和警报设置UIUserNotificationSettings,也只能听到声音,但不显示横幅(在'设置&#中39; app一切都已启用。)
如果我没有错误didReceiveRemoteNotification:
适用于前景和背景状态,如果应用根本没有运行,并且用户触摸通知的横幅广告,则会收到通知信息didFinishLaunchingWithOptions:
。
所以问题是:为什么didReceiveRemoteNotification:
无法在后台工作?为什么当应用在后台时,通知的横幅广告没有显示?
答案 0 :(得分:0)
关于在后台接收: 确保您的有效负载中包含content-available字段:
{
"alert":"",
"badge":"0",
"content-available":"1",
"sound":""
}
有关详细信息,请查看此帖子: Apple Push Notification in Background Issue
答案 1 :(得分:0)
didReceiveRemoteNotification:方法仅在您的应用处于前台时有效,如果您的应用未运行,则需要检查didFinishLaunchingWithOption,如
if (launchOptions) { //launchOptions is not nil
NSDictionary *userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
NSLog(@"%@",userInfo);
}
答案 2 :(得分:0)
1)为什么didReceiveRemoteNotification:不在后台工作
这样的行为很好,didReceiveRemoteNotification:
不会在后台调用。取而代之的是,在didFinishLaunchingWithOptions:
中,应检查应用是否因推送通知到达而启动:
NSDictionary *aPushNotification = [launchOptions valueForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
if(aPushNotification) {
// Do something with push's payload
}
2)为什么当应用处于后台时未显示通知的横幅
这是因为推送通知的有效负载
中缺少“警报”字段答案 3 :(得分:0)
我遇到了类似的问题所以我使用.. 接收通知
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
并且还要正确检查您的有效负载,如果您在推送通知到达时出现wana,它应该包含警报。