是否有任何解决方法可以确定用户是否曾被要求提供推送通知权限?
直接拨打isRegisteredForRemoteNotifications
对我来说是不够的。
我的屏幕会根据是否是首次推出应用而发生变化。
如果是,则表示应用可以发送推送通知,并在出现提示时请点按“允许”。然后用户单击“获取它”按钮,将显示带有推送通知提示的VC。
但是,如果用户再次注册另一个帐户(记住推送通知)我想显示他需要去的设置设置以允许推送通知(如果他们被禁用)或只是简单地跳过通知提示屏幕(如果用户允许他们)。
所以换句话说,我不需要知道用户是否允许推送通知,但是他是否曾被要求提供推送通知。
我已经尝试在询问用户后在钥匙串中保存一些数据但是当应用程序被删除并再次安装时(一天或更长时间后重置推送通知设置)用户不会被问到(我只检查是否有我的钥匙串中的旗帜。)
感谢您的帮助
实际上使用OK和Go to settings按钮的屏幕不是单独的View Controllers,但它确实无关紧要。
答案 0 :(得分:0)
推送通知权限警报不是基于每个用户。它只会被提示一次。您无法更改代码中的任何设置以获得基于每个用户的警报。
即使您删除了自己的应用并重新安装,它也不会要求获得许可。
如果您真的想要再次发出警报,则必须遵循Apple记录的步骤,但肯定不会遵循代码。
如果用户拒绝访问
,请使用此选项NSUInteger rntypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
//将默认值设置为禁用,除非我们另外发现......
NSString * pushBadge =(rntypes& UIRemoteNotificationTypeBadge)? @"启用" :@"禁用&#34 ;; NSString * pushAlert =(rntypes& UIRemoteNotificationTypeAlert)? @"启用" :@"禁用&#34 ;; NSString * pushSound =(rntypes& UIRemoteNotificationTypeSound)? @"启用" :@"禁用&#34 ;;