代码虽然只有几句 但逻辑却棒棒哒
1、用户打开APP时首次不开启通知
2、在ViewController设置一个打开通知的Switch
3、用户打开switch开关进入设置页 (不是很多用户知道如何开启通知的,所以在这里有必要直接跳转系统设置页)
0-不开启 直接返回 (返回后进行switch代码设置)
1- 开启 后返回 (返回后进行switch代码设置)
感谢船长的代码和思路: www.jianshu.com/p/64f9cd9b5b91
以下是代码和还有图 可以直接拿去用啦 _
//打开APP系统设置页
let urlObj = URL(string:UIApplicationOpenSettingsURLString)
@IBOutlet weak var switchNoti: UISwitch!
@IBAction func swtichNotiTap(_ sender: UISwitch) {
// 前往设置
UIApplication.shared.open(urlObj! as URL, options: [ : ]) { (result) in
// 如果判断是否返回成功
if result {
let notiSetting = UIApplication.shared.currentUserNotificationSettings
if notiSetting?.types == UIUserNotificationType.init(rawValue: 0) {
self.switchNoti.isOn = false
self.switchNoti.isEnabled = true
} else {
self.switchNoti.isOn = true
self.switchNoti.isEnabled = false
}
}
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "mine_settingIcon2", highlightedImage: "mine_settingIcon2_press", target: self, action: #selector(MeVC.settingClick))
// 设置弹出提示框的底层视图控制器 代码初始化放在这 返回的时候才可改变通知
initNotifications()
}
// 通告 权限
func initNotifications() {
let notiSetting = UIApplication.shared.currentUserNotificationSettings
if notiSetting?.types == UIUserNotificationType.init(rawValue: 0) {
self.switchNoti.isOn = false
} else {
self.switchNoti.isOn = true
self.switchNoti.isEnabled = false
}
}