推送通知警报在iOS 7上无效,但在iOS 8上无效

时间:2014-10-26 11:27:46

标签: objective-c apple-push-notifications

我想在我的应用中实现推送通知。

在iOS 8中,在应用启动时,用户会获得经典"您希望应用发送通知吗?",但在iOS 7中,它无法正常工作,我无法理解这是为什么。

这是我使用

的代码
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}

在iOS 8中它的功能相当,但iOS 7并不适用。

任何线索为什么这不起作用?

我制作并使用了所有必要的证书。

1 个答案:

答案 0 :(得分:2)

您的代码看起来不错,但请尝试使用以下trick: -

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0  
    if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {  
        UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];  
        [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];  
        [[UIApplication sharedApplication] registerForRemoteNotifications];  
    } else {  
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];  
    }  
#else  
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];  
#endif