有没有办法通过系统警报检查应用程序是否已获得推送通知权限?
UIApplication.sharedApplication().currentUserNotificationSettings()?.types.rawValue
当应用从未请求推送通知权限和用户拒绝权限时,它返回 0
。
我想在应用从未请求权限时显示系统警报弹出窗口。如果用户曾经拒绝过权限,我还想让用户去设置来控制权限设置。
例如:
let pushNotificationPermissionNeverAcquired: Bool = ???
if (pushNotificationPermissionNeverAcquired) {
// show system popup to acquire push notification permission
UIApplication.sharedApplication.registerForRemoteNotificationTypes([ * some types ])
} else if (UIApplication.sharedApplication().currentUserNotificationSettings()?.types.rawValue == 0) {
// user declined push notification permission, so let user go to setting and change the permission
UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString))
} else {
// push notification is allowed
}
如何检查 pushNotificationPermissionNeverAcquired
?
最佳答案
这就是我现在的做法。
if NSUserDefaults.standardUserDefaults().stringForKey(NOTIFICATION_PERMISSIONS_ASKED) == nil
{
NSUserDefaults.standardUserDefaults().setObject("true", forKey: NOTIFICATION_PERMISSIONS_ASKED)
// Request permissions
}
else
{
// Show your own alert
}
如果需要,您也可以保存一个 bool 值并使用“boolForKey”访问它,如果没有找到 key ,它会返回 false。
这个也忘了。
if let enabledTypes = UIApplication.sharedApplication().currentUserNotificationSettings()?.types {
switch enabledTypes
{
case UIUserNotificationType.None:
// Denied permissions or never given
default:
// Accepted
}
}
关于ios - 有没有办法检查推送通知设置是否被请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39495585/