推送通知权限
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 上,如果你更改“设置”应用程序的权限,我会检查它们以上是关于推送通知权限的主要内容,如果未能解决你的问题,请参考以下文章