美文网首页APP & program
iOS Swift检查用户是否打开系统推送权限

iOS Swift检查用户是否打开系统推送权限

作者: Lee坚武 | 来源:发表于2023-02-09 09:55 被阅读0次
    本人亲测有效!更多交流可以家魏鑫:lixiaowu1129,公重好:iOS过审汇总,一起探讨iOS技术!
    
    iOS10及以上:

    用户是否打开推送开关的判断很简单,就是UNNotificationSettings的authorizationStatus:
    notDetermined就是用户还没有点,
    denied就是用户点了不同意,
    authorized就是用户点了同意。
    注意,如果是notDetermined,那设置里面都不会有通知设置这个选项

    iOS8及iOS9:

    通过UIApplication.shared.currentUserNotificationSettings判断。

    注意:

    还有个UIApplication.shared.isRegisteredForRemoteNotifications属性,这个属性判断的是当前设备是否获取device token并且注册到APNS服务器,并不能用来判断用户是否打开推送权限。

    所以统一的判断方法如下:
    func checkPushNotification(checkNotificationStatus isEnable : ((Bool)->())? = nil){
    
            if #available(iOS 10.0, *) {
                UNUserNotificationCenter.current().getNotificationSettings(){ (setttings) in
    
                    switch setttings.authorizationStatus{
                    case .authorized:
    
                        print("enabled notification setting")
                        isEnable?(true)
                    case .denied:
    
                        print("setting has been disabled")
                        isEnable?(false)
                    case .notDetermined:
    
                        print("something vital went wrong here")
                        isEnable?(false)
                    }
                }
            } else {
    
                let isNotificationEnabled = UIApplication.shared.currentUserNotificationSettings?.types.contains(UIUserNotificationType.alert)
                if isNotificationEnabled == true{
    
                    print("enabled notification setting")
                    isEnable?(true)
    
                }else{
    
                    print("setting has been disabled")
                    isEnable?(false)
                }
            }
        }
    

    本文由mdnice多平台发布

    相关文章

      网友评论

        本文标题:iOS Swift检查用户是否打开系统推送权限

        本文链接:https://www.haomeiwen.com/subject/bxickdtx.html