如何确定用户是否禁用推送通知的通知中心?

时间:2013-11-28 10:38:48

标签: ios objective-c

所以我知道我可以确定用户是否禁用了推送通知的徽章和声音

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

if(types & UIRemoteNotificationTypeBadge){
    NSLog(@"BADGE activated");
}

if(types & UIRemoteNotificationTypeSound){
    NSLog(@"SOUND activated");
}

//etc...

但如果用户在

下禁用通知中心,则不会受到影响
Settings -> Notifications -> <Appname> -> "Show in Notification Center" to NO

那么如果用户禁用此功能,我如何在我的应用中找到它?我用谷歌搜索了一段时间,发现它不可能,但我不想相信它,所以如果有人知道解决方案,那么在这里分享它会很棒。谢谢!

1 个答案:

答案 0 :(得分:0)

文档很清楚:

  

<强> enabledRemoteNotificationTypes
  返回应用程序接受的通知类型。

因此,它会使用方法registerForRemoteNotificationTypes:

返回您注册应用的通知类型

您的应用无法看到用户允许的通知类型。

但是,当您为推送通知注册应用时,如果用户允许您的应用注册的通知类型之一,它会触发委托方法application:didRegisterForRemoteNotificationsWithDeviceToken:

很奇怪,但如果用户允许通知你会收到通知,但如果他不允许则通知你......

服务器端,Apple会针对失败的推送通知提供反馈。这意味着应用程序不再存在此设备。看The Feedback Service

希望它会对你有所帮助。