Kann mir jemand erklären, wie man sich für die Remote-Push-Benachrichtigung registriert und das Token abfängt, indem man das neue UserNotification-Framework von iOS10 verwendet?Remote-Benachrichtigungen ios10 registrieren und das apn-Token abfangen
Antwort
Sie können sich für Benachrichtigungen registrieren, wie Sie es bereits von iOS 8 getan haben (es ist eines der wenigen API für Benachrichtigungen, das sich nicht geändert hat).
Zuerst wird in der application:didFinishLaunchingWithOptions:
Methode des AppDelegate, fordern die Berechtigung für Ihre App:
UNUserNotificationCenter.current().requestAuthorization([.alert, .sound, .badge]) { (granted, error) in
//here you can check the correct authorization
}
Dies wird die übliche Show „Anwendung möchten Sie Benachrichtigungen senden“ alert. Die Hauptverbesserung der neuen Methode requestAuthorization
besteht darin, dass Sie das Verhalten des Antippens auf Schaltflächen Erlauben/Nicht zulassen direkt in den Schließungen verwalten können.
Als nächstes registrieren für Remote-Benachrichtigungen mit der registerForRemoteNotifications
Methode von UIApplication
erhältlich von iOS 8:
UIApplication.shared().registerForRemoteNotifications()
... und schließlich die Registrierung mit Ihrem Benachrichtigungen Server verwalten (wie Amazon, OneSignal, etc ...
)func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
//if you need the token as a string, do this:
let tokenString = String(data: deviceToken, encoding: .utf8)
//call the notifications server for sending the device token
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
print("Application failed to register for remote notifications")
}
mit Objective-C Methode:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self registerForRemoteNotification];
. . .
}
- (void)registerForRemoteNotification {
if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
UNUserNotificationCenter *uncenter = [UNUserNotificationCenter currentNotificationCenter];
[uncenter setDelegate:self];
[uncenter requestAuthorizationWithOptions:(UNAuthorizationOptionAlert+UNAuthorizationOptionBadge+UNAuthorizationOptionSound)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
[[UIApplication sharedApplication] registerForRemoteNotifications];
NSLog(@"%@" , granted ? @"success to request authorization." : @"failed to request authorization .");
}];
[uncenter getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
NSLog(@"%s\nline:%@\n-----\n%@\n\n", __func__, @(__LINE__), settings);
if (settings.authorizationStatus == UNAuthorizationStatusNotDetermined) {
//TODO:
} else if (settings.authorizationStatus == UNAuthorizationStatusDenied) {
//TODO:
} else if (settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
//TODO:
}
}];
}
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
UIUserNotificationType types = UIUserNotificationTypeAlert |
UIUserNotificationTypeBadge |
UIUserNotificationTypeSound;
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
UIRemoteNotificationType types = UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
}
#pragma clang diagnostic pop
}
Hier ist eine Demo: iOS10AdaptationTips.
- 1. IOKit in iOS10 Beta
- 2. iOS10 NotificationService Erweiterung
- 3. Unity Abfangen und Konstrukteure
- 4. Registrieren und Anmelden swift
- 5. Android Anmelden und Registrieren
- 6. php: Ausnahme abfangen und Ausführung fortsetzen, ist das möglich?
- 7. Anmeldung über Facebook Funktion verfügbar für ios10?
- 8. MPMediaPickerController zeigt einen leeren Bildschirm auf iOS10
- 9. Bildmaskierung schlägt auf iOS10 beta3 fehl
- 10. Wie funktioniert das Abfangen einer OutOfMemoryException?
- 11. Einheitscontainer - Abfangen der Instanzerstellung
- 12. Karte Anmerkungen nicht in ios10 angezeigt
- 13. So registrieren Sie Bereiche für das Routing
- 14. EventBus, registrieren und registrierenSticky-Methode
- 15. Abfangen heapq
- 16. Spracherkennung abfangen
- 17. C# JSON-Deserialisierung: Kann ich die Deserialisierung abfangen und das Ergebnis optional ändern?
- 18. Python benutzerdefinierte Ausnahmen Platzierung und Abfangen
- 19. Serverantwort abfangen
- 20. TCP-Paket abfangen und Umleitung unter Windows
- 21. Abfangen Prozessausführung
- 22. abfangen STDOUT und stream über akka
- 23. Werfen (und Abfangen) Ausnahme in anonymer Methode
- 24. Abfangen und Vorverarbeiten von QueryStrings in Asp.Net
- 25. libgdx-android: Abfangtaste abfangen und beenden bestätigen
- 26. Abfangen von Fehlern und Abonnieren von
- 27. Route abfangen und zum Login umleiten
- 28. Django, Benutzer mit Vor- und Nachname registrieren?
- 29. Registrieren vor Zeichenfolge, zwischen und nach
- 30. Registrieren Codewars