布袋的世界之Apple苹果家园

Swift3 判断应用是否开启系统通知Notification

2017-08-17  本文已影响408人  布袋的世界

代码虽然只有几句 但逻辑却棒棒哒

1、用户打开APP时首次不开启通知
2、在ViewController设置一个打开通知的Switch
3、用户打开switch开关进入设置页 (不是很多用户知道如何开启通知的,所以在这里有必要直接跳转系统设置页)
0-不开启 直接返回 (返回后进行switch代码设置)
1- 开启 后返回 (返回后进行switch代码设置)

感谢船长的代码和思路: www.jianshu.com/p/64f9cd9b5b91
以下是代码和还有图 可以直接拿去用啦 _

1.png 2.png
 //打开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
        }

    }
上一篇下一篇

猜你喜欢

热点阅读