我有这种奇怪的情况,我的应用支持iOS7及以上版本。它通过使用无声通知启用了Remote notifications
。无声推送通知在后台模式下无法在iOS7上工作
我知道上面的iOS7和iOS8有不同的逻辑来处理通知。我这样做:
if ([[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
这里的通知接收
{
aps = {
"content-available" = 1;
};
}
所以它所做的是,应用程序收到无声的通知,然后设置localNotification,见下图:
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
notification.soundName = UILocalNotificationDefaultSoundName;
notification.alertBody = @"testing";
notification.timeZone = [NSTimeZone defaultTimeZone];
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
所有它的工作原理在iOS8和iOS9中处于后台模式和前台模式。当应用程序处于前台时,它将触发didReceiveLocalNotification
。
但是当我在iOS7中测试时,如果应用程序处于后台模式,则无法正常工作。我试图找出这是如何发生的,而其他操作系统工作正常。我在应用程序打开时测试过,它确实收到推送通知,并且触发了didReceiveLocalNotification
。但是当进入后台时,什么也没有发生(没有本地推送通知)。
[iOS中7无声推送通知不工作(可能的重复http://stackoverflow.com/questions/19239737/silent-push-notification-in-ios -7-does-not-work) – HelmiB