iOS - 未确定推送通知
Posted
技术标签:
【中文标题】iOS - 未确定推送通知【英文标题】:iOS - push notifications not determined 【发布时间】:2015-08-24 06:05:50 【问题描述】:是否有任何解决方法可以查明是否曾要求用户提供推送通知权限?
直接打电话给isRegisteredForRemoteNotifications
对我来说是不够的。
我的屏幕会根据是否是第一次启动应用而改变。
如果它说应用程序可以发送推送通知,当出现提示时请点击允许。然后用户单击得到它按钮,并显示带有推送通知提示的 VC。
但是,如果用户在另一个帐户上再次注册(记住推送通知)我想显示他需要去设置以允许推送通知(如果它们被禁用)或只是跳过通知提示屏幕(如果用户允许的话)。
所以换句话说,我需要知道的不是用户是否允许推送通知,而是他是否被要求提供。
在询问用户后,我尝试将一些数据保存在钥匙串中,但是当应用程序被删除并再次安装时(一天或更长时间后,推送通知设置被重置)没有询问用户(我只检查是否有我的钥匙串中的标志)。
感谢您的帮助
编辑 #1 我添加了显示我的问题的图像
实际上,带有 OK 和 Go to settings 按钮的屏幕并不是单独的 View Controller,但这并不重要。
【问题讨论】:
【参考方案1】:推送通知权限警报不是基于每个用户。只会提示一次。您无法更改代码中的任何设置以获取每个用户的警报。
即使您删除应用并重新安装它,它也不会请求许可。
如果您真的想再次收到警报,您必须按照 Apple 记录的步骤进行操作,但肯定不是代码。
https://developer.apple.com/library/ios/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG42
如果用户拒绝访问,请使用此选项
NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
// 除非我们发现其他情况,否则将默认设置为禁用...
NSString *pushBadge = (rntypes & UIRemoteNotificationTypeBadge) ? @“启用”:@“禁用”; NSString *pushAlert = (rntypes & UIRemoteNotificationTypeAlert) ? @“启用”:@“禁用”; NSString *pushSound = (rntypes & UIRemoteNotificationTypeSound) ? @“启用”:@“禁用”;
【讨论】:
我明白这一点。我不想强制权限警报再次显示。如果用户在第一次注册期间允许推送通知,然后他再次注册,那么我会跳过包含推送通知信息的屏幕。当用户在第一次注册时不允许他们时,我会显示允许用户跳过或打开设置(通知)并手动更改它们的屏幕。所以我只需要知道通知设置列表中是否有我的应用程序的条目。以上是关于iOS - 未确定推送通知的主要内容,如果未能解决你的问题,请参考以下文章