Sie Einstellungen der App des Benutzers Benutzer auf Seite der Geräteeinstellung App senden können, sie im Stich gelassen LocalNotification Opt-in in
- iOS älter als Version 10 dos keine Informationen zur Verfügung stellen, wenn der Benutzer um Erlaubnis, bevor oder nicht verweigert .
- In Ihrer App müssen Sie in NSUserDefaults speichern oder irgendwo, dass Sie bereits die Erlaubnis gefragt haben.
- Jedes Mal, wenn Sie eine Berechtigung benötigen, prüfen Sie zunächst, ob eine Berechtigung verfügbar ist oder nicht.
- Wenn die Berechtigung nicht verfügbar ist und Ihre App zuvor noch keinen Benutzer gefragt hat (basierend auf dem gespeicherten Status im vorherigen Schritt), fragen Sie nach der Berechtigung.
- Wenn Sie zuvor die Berechtigung von einem Benutzer angefordert haben (basierend auf dem gespeicherten Status im vorherigen Schritt), fragen Sie die Benutzer, ob sie die Berechtigung zulassen möchten. Wenn sie "Ja" sagen, leiten Sie sie an die Geräteeinstellungs-App weiter.
Objective-C für iOS < = 10 (Veraltete in iOS 10)
Dies ist ein Code Schnipsel für UIUserNotificationSettings
UIUserNotificationSettings *currentSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]
if (currentSettings.types == UIUserNotificationTypeNone) // Permission does not exist either user denied or never been asked before
if (!(currentSettings.types & (UIUserNotificationTypeAlert | UIUserNotificationTypeSound))) // This means your app does not have permission alert and to play sounds with notification.
Dieser Code Schnipsel anfragende zeigt, wie Benutzer senden Geräteeinstellungsseite.
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
Swift 3 für iOS < = 10 (Veraltete in iOS 10)
Dies ist ein Code Schnipsel für UIUserNotificationSettings
let currentSettings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
if currentSettings.types.isEmpty {
// Here you decide whether to prompt user with new authorization request
// or send user to setting app based on your stored variable
}
Dieser Code Schnipsel zeigt erkundigt, wie Benutzer senden Geräteeinstellungsseite.
if let urlStr = URL(string: UIApplicationOpenSettingsURLString) {
if UIApplication.shared.canOpenURL(urlStr) {
UIApplication.shared.openURL(urlStr)
}
}
Für iOS 10 und über
stattdessen eine Variable in Ihrer App die Überprüfung, ob die App überhaupt für die Zulassung oder nicht gefragt zu sparen, prüfen Sie den Wert von authorizationStatus
von UNNotificationSettings
Klasse
Der Wert dieser Eigenschaft wird nicht ermittelt, wenn Ihre App die Autorisierung mit der Methode requestAuthorization (options: completionHandler :) noch nie angefordert hat.
zusammen mit anderen UNNotificationSettings
Pendant Methoden ähnlich wie ältere Version dieser Klasse (UIUserNotificationSettings
) um Erlaubnis bitten oder überprüfen Sie die verfügbaren Berechtigungen wie Abzeichen, Alarm oder Ton.
Ein Hauptproblem mit dieser Antwort ist es in Objective-C. Trotzdem ist es eine gute Antwort. Hier ist eine Antwort, die das selbe in Swift genau beschreibt: http://stackoverflow.com/questions/41303746/swift-3-camera-permission-dialog-priming-prime-permissions-in-ios10 – dfd
Danke das hilft. 'UIApplicationOpenSettingsURLString' bringt mich direkt zu den Benachrichtigungseinstellungen meiner App! Auch danke @dfd für den Link, sehr gut über diese "Permission Priming" Idee zu wissen. – Coder1224
Ich habe diese Frage wegen der Antwort vorgemerkt. Eines Tages wird es mir auch helfen. Schön, dass es dir vielleicht eine Alternative zum Nachdenken gegeben hat. – dfd