【问题标题】:iOS - push notifications not determinediOS - 未确定推送通知
【发布时间】:2015-08-24 06:05:50
【问题描述】:

是否有任何解决方法可以查明是否曾要求用户提供推送通知权限? 直接打电话给isRegisteredForRemoteNotifications 对我来说是不够的。 我的屏幕会根据是否是第一次启动应用而改变。

  1. 如果它说应用程序可以发送推送通知,当出现提示时请点击允许。然后用户单击得到它按钮,并显示带有推送通知提示的 VC。

  2. 但是,如果用户在另一个帐户上再次注册(记住推送通知)我想显示他需要去设置以允许推送通知(如果它们被禁用)或只是跳过通知提示屏幕(如果用户允许的话)。

所以换句话说,我需要知道的不是用户是否允许推送通知,而是他是否被要求提供。

在询问用户后,我尝试将一些数据保存在钥匙串中,但是当应用程序被删除并再次安装时(一天或更长时间后,推送通知设置被重置)没有询问用户(我只检查是否有我的钥匙串中的标志)。

感谢您的帮助

编辑 #1 我添加了显示我的问题的图像

实际上,带有 OK 和 Go to settings 按钮的屏幕并不是单独的 View Controller,但这并不重要。

【问题讨论】:

    标签: ios push-notification


    【解决方案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) ? @“启用”:@“禁用”;

    【讨论】:

    • 我明白这一点。我不想强制权限警报再次显示。如果用户在第一次注册期间允许推送通知,然后他再次注册,那么我会跳过包含推送通知信息的屏幕。当用户在第一次注册时不允许他们时,我会显示允许用户跳过或打开设置(通知)并手动更改它们的屏幕。所以我只需要知道通知设置列表中是否有我的应用程序的条目。
    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 2017-04-19
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多