本人亲测有效!更多交流可以家魏鑫: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多平台发布
网友评论