代碼雖然只有幾句 但邏輯卻棒棒噠
1、用戶打開(kāi)APP時(shí)首次不開(kāi)啟通知
2、在ViewController設(shè)置一個(gè)打開(kāi)通知的Switch
3、用戶打開(kāi)switch開(kāi)關(guān)進(jìn)入設(shè)置頁(yè) (不是很多用戶知道如何開(kāi)啟通知的,所以在這里有必要直接跳轉(zhuǎn)系統(tǒng)設(shè)置頁(yè))
0-不開(kāi)啟 直接返回 (返回后進(jìn)行switch代碼設(shè)置)
1- 開(kāi)啟 后返回 (返回后進(jìn)行switch代碼設(shè)置)
感謝船長(zhǎng)的代碼和思路: www.itdecent.cn/p/64f9cd9b5b91
以下是代碼和還有圖 可以直接拿去用啦 _

1.png

2.png
//打開(kāi)APP系統(tǒng)設(shè)置頁(yè)
let urlObj = URL(string:UIApplicationOpenSettingsURLString)
@IBOutlet weak var switchNoti: UISwitch!
@IBAction func swtichNotiTap(_ sender: UISwitch) {
// 前往設(shè)置
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))
// 設(shè)置彈出提示框的底層視圖控制器 代碼初始化放在這 返回的時(shí)候才可改變通知
initNotifications()
}
// 通告 權(quán)限
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
}
}