如何检查iPhone上是否启用了通知

如何检查iPhone上是否启用了通知,iphone,xcode,push-notification,apple-push-notifications,Iphone,Xcode,Push Notification,Apple Push Notifications,如何检查iPhone上是否启用了通知? 我安装应用程序,应用程序说要确认为应用程序启用推送通知,我单击确定。但如果iPhone上禁用了通知,则此操作不会启用通知。 如何检查?这应该可以: UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; if (types == UIRemoteNotificationTypeNone) // Disab

如何检查iPhone上是否启用了通知? 我安装应用程序,应用程序说要确认为应用程序启用推送通知,我单击确定。但如果iPhone上禁用了通知,则此操作不会启用通知。 如何检查?

这应该可以:

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) 
   // Disabled

这在iOS8中发生了变化。支持iOS8和更低的do

+ (BOOL)notificationServicesEnabled {
    BOOL isEnabled = NO;

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]){
        UIUserNotificationSettings *notificationSettings = [[UIApplication sharedApplication] currentUserNotificationSettings];

        if (!notificationSettings || (notificationSettings.types == UIUserNotificationTypeNone)) {
            isEnabled = NO;
        } else {
            isEnabled = YES;
        }
    } else {
        UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
        if (types & UIRemoteNotificationTypeAlert) {
            isEnabled = YES;
        } else{
            isEnabled = NO;
        }
    }

    return isEnabled;
}

您是否将其放在
AppDelegate
ViewController
中?您可以将此代码段放在任何位置,因为它从单例对象获取数据。就个人而言,我将代码放在一个
DeviceNotificationsManager
类中,该类封装了与手机通知子系统相关的逻辑。这样,外部世界(即应用程序的其余部分)只引用
DeviceNotificationsManager
,而不必知道iOS通知系统的任何细节。嘿@Shaheenghiasy,上面的代码片段很有用。是否有任何具体原因需要反转if&else部分的逻辑。在if部分,我们检查UIUserNotificationTypeNone,而在else部分,我们检查UIRemoteNotificationTypeAlert。