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 - 未确定推送通知的主要内容,如果未能解决你的问题,请参考以下文章

即使 Azure 推送通知遥测显示“成功”,也未收到 iOS 推送通知

Firebase 推送通知 iOS:未注册。为啥?

未收到 Phonegap iOS 推送通知

在 iOS 中未收到推送通知消息

iOS,电话间隙推送插件('通知')未触发

设备上未收到 iOS 推送通知