我有這種奇怪的情況,我的應用支持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