推送通知权限

Posted

技术标签:

【中文标题】推送通知权限【英文标题】:Push Notifications Permissions 【发布时间】:2010-08-27 18:43:08 【问题描述】:

尝试解决应用程序中推送通知被拒绝时的一些极端情况,我有两个问题:

1) 有没有办法重置用户是否看到弹出的通知请求?

2) 有没有办法确定用户是否拒绝通知请求?

【问题讨论】:

【参考方案1】:

1) 不,除非有一些私有 API 可以这样做,但 Apple 不允许这样做

2) 第一次启动应用时,调用registerForRemoteNotificationTypes后,可以查看是否调用了didRegisterForRemoteNotificationsWithDeviceToken。如果不是,用户说“不,谢谢”。

【讨论】:

1) 我的想法...抱怨 2) 唯一的问题是 registerForRemoteNotificationTypes 和 didRegisterForRemoteNotificationsWithDeviceToken 之间的时间跨度未定义。我可以在应用退出时检查它,但我不确定用户是否必须在退出之前做出选择。此外,用户可以在“设置”中更改通知权限,但我无法检测到该更改。【参考方案2】:

如果用户更改权限,您可以随时查看权限状态,您可以在applicationDidBecomeActive上查看权限

- (void)applicationDidBecomeActive:(UIApplication *)application

     if ([[UIApplication sharedApplication]  respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) 
        if ([[UIApplication sharedApplication]  isRegisteredForRemoteNotifications])
            NSLog(@"Notifications Enabled ios 8");
         else 
            NSLog(@"Notifications not Enabled ios 8");
        
     else 
        UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
        if (types & UIRemoteNotificationTypeAlert)
        
            NSLog(@"Notifications Enabled");
        
        else
        
            NSLog(@"Notifications not Enabled");
        
    


已更新以使其也可以在 iOS 8 上运行

【讨论】:

从文档看来,如果您要求警报权限,即使用户禁用了您的应用的警报。 没看懂你的意思,这并没有设置什么,只是检查权限状态 我以为它只会报告您之前要求注册的权限,但在进一步的测试中我认为您是对的,它只报告系统授予的权限。 是的,它会检查当前的权限,我把代码放在 applicationDidBecomeActive 上,如果你更改“设置”应用程序的权限,我会检查它们

以上是关于推送通知权限的主要内容,如果未能解决你的问题,请参考以下文章

未请求推送通知权限

检查推送是不是要求通知权限

推送通知权限

设置推送通知权限

有啥方法可以在运行时更改 ios 上推送通知的权限?

修改推送通知的权限请求对话框