2017-07-28 120 views
0

我想在iOS 11应用程序中实现设置屏幕,我需要一个UISwitch来控制用户通知。当设置为关闭时,我想放弃通知的权限,当设置为开启时,我想请求权限(标准对话框要求用户许可发送她的通知)。如何在iOS中打开和关闭通知?

征得他的许可,我发现下面的代码:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) { (granted, error) in 
    // Enable or disable features based on authorization. 
} 

不过,如果我只是关闭通知在系统设置中的应用程序,该代码不会弹出一个请求对话框,它只需在granted返回false。

我无法找到关于如何放弃权限的任何信息。

有关如何解决问题的任何提示?它甚至有可能,或者苹果是否认为这个任务应该只留给系统设置?

+1

系统设置启用该选项。出于简单的原因,用户在每次应用发布时都不会受到“推送通知请求”的轰炸。只要您获得发送通知的权限,您必须自行决定是否要向用户发送实际通知,可能会添加用户可以选择加入/退出的主题。 – luk2302

+0

所以没有办法以编程方式放弃权限? –

+0

你为什么要这么做?我不知道一种方式,那就是如果你能够从代码中请求权限,那么没有用的情况下有意义 – luk2302

回答

1

在iOS中打开/​​关闭权限推送通知只出现一次。 所以为了实现这一点,你需要做一些调整,如你可以 首先检查你的通知是否启用。

func pushEnabledAtOSLevel() -> Bool { 
guard let currentSettings = UIApplication.shared.currentUserNotificationSettings?.types else { return false } 
return currentSettings.rawValue != 0 
} 

那之后,你可以用导通/关按钮 创建自定义弹出窗口并导航到系统设置页面,在这里用户只能 相应

if let appSettings = NSURL(string: UIApplicationOpenSettingsURLString) { 
    UIApplication.shared.openURL(appSettings as URL) 
}