我正在创建一个设置页面,允许用户打开和关闭推送通知。这是我的问题。如果用户在初始系统提示符下允许推送通知,则稍后改变主意并将UISwitch转为否,我的关闭切换操作为:[[UIApplication sharedApplication] unregisterForRemoteNotifications];
但是,如果您转到手机上的设置应用程序,则“允许通知”仍设置为“开启”。我知道取消注册它们会使令牌失效,因此他们不会再收到任何通知。但我认为如果设置应用仍然说他们是允许通知,他们会感到困惑。我是否仍需要将用户从应用程序重定向到设置应用以关闭远程通知?或者是否有一些我可以添加的代码会在“设置”应用中将“允许通知”更改为“关闭”。
你无法从你的应用程序更改设置应用程序。您必须从设置应用程序手动禁用它。如在另一个答案中提到的,您可以提示消息永久禁用(请通过设置应用程序执行)。
第二件事,如果你想让你的服务器知道不发送通知到这个设备然后你可以做这样的事情,
如果你想在应用内部做,那么使用一个标识符并根据推送通知启用和禁用按钮将其发送到服务器。因此,您的服务器端编码使用此标识符并根据该标识符工作。像标识符一样,它是启用的,而不是你的服务器会发送通知。
您可以使用以下代码检查该用户是否设置了enable
或disable
Push Notifications
。
启用或禁用Iphone推送通知
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone)
// Yes it is..
希望这会有所帮助:)
根据doc
您应该在极少数情况下调用此方法,例如当新版本的应用程序删除对所有类型的远程通知的支持时。用户可以通过“设置”应用的“通知”部分暂时阻止应用接收远程通知。通过此方法取消注册的应用程序始终可以重新注册。
我相信它的作用只是取消注册,但不要禁用应用程序请求的用户设置选项。特别是通过这种方法取消注册的应用程序可以随时重新注册
这可能指定如果再次调用注册通知方法,则不会提示用户授予权限,因为之前已经完成。
我相信你应该在应用程序设置屏幕的单元格部分添加一个细节子标签,指定
应用程序将停止接收通知,永久禁用(请通过设置应用程序执行)。