2015-08-24 45 views
2

是否有任何解决方法来确定用户是否曾被要求提供推送通知权限? 直接调用isRegisteredForRemoteNotifications对我来说是不够的。 我有一个屏幕,根据它是否是第一次启动应用程序进行更改。iOS - 推送通知未确定

  1. 如果是,它说应用程序可以发送推送通知,并在提示时点击允许。然后用户单击Got it按钮,并显示带有推送通知提示的VC。如果用户注册了另一个帐户(推送通知被记住),我想显示他需要去的信息设置允许推送通知(如果它们被禁用)或者只是简单地跳过通知提示屏幕(如果用户允许他们)。

所以换句话说,我需要知道,如果用户允许推送通知,但他是否曾经被要求过。

我试图在用户被问到后,但当应用程序被删除并再次安装(一天后或更多,所以推通知设置被重置)keychain保存一些数据用户不问(我只检查是否有我的钥匙扣国旗)。

感谢您的帮助

编辑#1我添加图像呈现我的问题Push notifications

与OK其实屏幕,转到设置按钮不单独视图控制器,但它其实并不重要。

回答

0

推送通知许可警报不是基于每个用户。它只会被提示一次。您无法更改代码中的任何设置以基于每个用户获取警报。

即使您删除了您的应用并重新安装,它也不会要求获得该许可。

如果您确实想要再次提醒您,必须按照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)? @“启用”:@“禁用”;

+0

我明白这一点。我不想强制权限提醒再次显示。如果用户在第一次注册时允许推送通知,然后他再次注册,那么我跳过包含有关推送通知信息的屏幕。当用户在首次注册时不允许他们显示屏幕时,用户可以跳过或打开设置(通知)并手动更改它们。所以我只需要知道在通知设置列表中是否有适用于我的应用程序的条目。 – Cahir09