ios - 检查推送通知注册 : isRegisteredForRemoteNotifications Not Updating

标签 ios iphone

下面的方法一直返回相同的值:

[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

每次运行此代码时,结果都是 YES。即使当我进入“设置”应用程序并将我的应用程序的推送通知设置为“关闭”时,当上面的代码运行时,它的计算结果也是 YES。

其他细节: * 我在有 iOS 8.1.3 的 iphone 上运行应用程序 * 我在 Xcode 6.1 中运行该应用程序,并且我已将手机物理连接到我的机器上

知道为什么“isRegisteredForRemoteNotifications”的值没有改变吗?

最佳答案

因为 iOS 8 会注册设备并提供 token ,即使用户选择退出推送也是如此。

在这种情况下,发送推送时不会向用户显示推送,但如果您的应用程序正在运行,它会获取负载,因此您可以在应用程序运行时更新它...

要检查推送通知是否在 iOS 8 中启用,您应该检查启用的用户通知类型:

- (BOOL)pushNotificationsEnabled {
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
        UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
        return (types & UIUserNotificationTypeAlert);
    }
    else {
        UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
        return (types & UIRemoteNotificationTypeAlert);
    }
}

关于ios - 检查推送通知注册 : isRegisteredForRemoteNotifications Not Updating,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441007/

相关文章:

iphone - Apple Mach-O 链接器 (ID) 错误 _compress 和链接器命令失败,退出代码 1

iphone - 如何同时从iPhone中的URLS解析XML

iphone - 标签累加玩家在 GameOver 场景中的得分 : Objective-C

ios - XCode UI 测试 swizzle API 类方法

iphone - 如何将 UIImageView 设为 "flick"?

iphone - "Distribution"和 "Release"构建配置有什么区别?

ios - 如何将 UILabel 文本颜色更改回程序首次在 Xcode for iOS 7 中启动时的颜色?

iphone - 如何按值对 plist 进行排序

iOS 应用程序在后台执行任务

iphone - 委托(delegate)方法协议(protocol)不工作 - Objective-C