unregisterForRemoteNotifications仍显示"允许通知"在设置中

时间:2016-04-15 18:41:54

标签: ios push-notification

我正在创建一个允许用户打开和关闭推送通知的设置页面。这是我的问题。如果用户在初始系统提示符下允许推送通知,则稍后改变主意并将UISwitch转为否,我的关闭切换操作为: [[UIApplication sharedApplication] unregisterForRemoteNotifications];

但是,如果您转到手机上的设置应用程序,“允许通知”仍设置为“开启”。我知道取消注册它们会使令牌失效,因此他们不会再收到任何通知。但我认为如果设置应用仍然说他们是允许通知,他们会感到困惑。我是否仍需要将用户从应用程序重定向到设置应用以关闭远程通知?或者是否有一些我可以添加的代码会在“设置”应用中将“允许通知”更改为“关闭”。

2 个答案:

答案 0 :(得分:2)

根据doc

  

您应该在极少数情况下调用此方法,例如a   新版本的应用程序删除了对所有类型的遥控器的支持   通知。用户可以暂时阻止应用程序接收   通过“设置”的“通知”部分进行远程通知   应用程序。通过此方法取消注册的应用程序始终可以重新注册。

我相信它的作用只是取消注册,但不要禁用应用程序请求的用户设置选项。特别是通过此方法取消注册的应用程序总是可以重新注册

这可能指定如果再次调用注册通知方法,则不会提示用户授予权限,因为之前已经完成。

我相信您应该在应用设置屏幕的细胞部分添加一个细节子标签,指明

  

应用会停止接收通知,永久禁用(请   通过设置应用程序来完成。

答案 1 :(得分:1)

您无法从应用中更改设置应用。您必须从设置应用程序手动禁用它。如在另一个答案中提到的,您可以提示消息永久禁用(请通过设置应用程序执行此操作)。

如果您想让服务器知道不向该设备发送通知,那么第二件事就是 你可以这样做,

如果你想在应用内部做,那么使用一个标识符并根据推送通知启用和禁用按钮将其发送到服务器。因此,您的服务器端编码使用此标识符并根据该标识符工作。像标识符一样,它表示启用,否则服务器将发送通知,否则不会。

您可以使用以下代码检查该用户设置enabledisable Push Notifications

启用或禁用Iphone推送通知

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) 
 // Yes it is..

希望这会有所帮助:)