L
Lee坚武
V1
2023/02/10阅读:14主题:默认主题
iOS Swift检查用户是否打开系统推送权限
本人亲测有效!更多交流可以家魏鑫: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)
}
}
}
作者介绍
L
Lee坚武
V1