@ Rajats Antwort ist nicht genug.
isRegisteredForRemoteNotifications
Wenn Ihre App eine Verbindung zu APNS hergestellt hat und ein Gerätetoken erhält, kann dies für eine stille Push-Benachrichtigung sein
currentUserNotificationSettings
ist für Benutzerberechtigungen vorgesehen. Ohne diese Berechtigung werden keine Warn-, Banner- oder Sound-Push-Benachrichtigungen an die App gesendet
Hier ist der Scheck
static var isPushNotificationEnabled: Bool {
guard let settings = UIApplication.shared.currentUserNotificationSettings
else {
return false
}
return UIApplication.shared.isRegisteredForRemoteNotifications
&& !settings.types.isEmpty
}
Für iOS 10 currentUserNotificationSettings
sollten Sie das UserNotifications
Framework verwenden , anstatt nach zu suchen
center.getNotificationSettings(completionHandler: { settings in
switch settings.authorizationStatus {
case .authorized, .provisional:
print("authorized")
case .denied:
print("denied")
case .notDetermined:
print("not determined, ask user for permission now")
}
})
Push-Benachrichtigungen können auf viele Arten an unsere Apps gesendet werden, und wir können darum bitten
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge])
Der Benutzer kann jederzeit zur App Einstellungen gehen und diese deaktivieren. Überprüfen Sie dies daher am besten im settings
Objekt
open class UNNotificationSettings : NSObject, NSCopying, NSSecureCoding {
open var authorizationStatus: UNAuthorizationStatus { get }
open var soundSetting: UNNotificationSetting { get }
open var badgeSetting: UNNotificationSetting { get }
open var alertSetting: UNNotificationSetting { get }
open var notificationCenterSetting: UNNotificationSetting { get }
}