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

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

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
        }

    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,422评论 25 708
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,944评论 0 15
  • 小李是一名快递员,最近发生一件奇怪的事。 近一周,一直有个漂亮但木讷姑娘每天都在小李这寄快递,而且每次都是只寄一个...
    即将变成瘦子阅读 184评论 0 0
  • 精力不够,就会导致脑袋不够用,效率不够高,最近越来越发现要学习的东西太多太多,不论是书本阅读知识,还是课外专业知识...
    剽悍文霞阅读 158评论 0 0
  • 按:找出一篇父亲2014年6月7日发在QQ空间的小文,借今天高考吉日,发出来共享。 按理说,上世纪60年代的高考在...
    杏花春雨杨柳风阅读 519评论 0 1