iOS 10 nicht call Notification Service Erweiterung
Habe ich versucht zu implementieren, das neue Notification Service Erweiterung, aber ich habe ein problem.
In meinem NotificationService.swift-Datei habe ich diesen code:
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
//Modify the notification content here...
bestAttemptContent.title = "\(bestAttemptContent.title) [modified]"
print(bestAttemptContent.body)
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
//Called just before the extension will be terminated by the system.
//Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}
Wenn ich eine push-Benachrichtigung die didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @entkommen (UNNotificationContent) -> Void) - Methode wird nie aufgerufen.
Vielleicht habe ich missverstanden, wie diese Erweiterung funktioniert?
- Hi . hast du dies Problem gelöst ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie Ihre Ziel der Bereitstellung auf Service-Erweiterung.
Hatte ich Bereitstellung Ziel gesetzt 10.2 beim testen auf dem Gerät mit 10.1 und Erweiterung war nicht mehr angerufen, bis ich es geändert.
Weiteres Problem könnte sein, Debuggen.. um zu machen, arbeiten, müssen Sie Service Erweiterung Prozess. In Xcode im Menü Debug > An den Prozess Anhängen > Name Ihrer Erweiterung
Eher dann läuft die app. Sie haben zum ausführen von service-Erweiterung als Ziel. Dann wird es Fragen für die app, die Sie ausgeführt haben, service-Erweiterung, dann wählen Sie die app und es wird Benachrichtigung senden.
Stellen Sie sicher, dass die Ziel der Bereitstellung ist weniger als das Gerät OS in-service Erweiterung.
Bitte stellen Sie sicher Nutzlast enthalten sollte "veränderlich-Inhalt": 1.
Nicht hinzufügen "Content-verfügbar" - flag in aps, wenn Sie brauchen, um hinzuzufügen, stellen Sie es auf 0. "Content-available" : 0,
content-available
. Wir senden beide flags und es funktioniert gut.Ihre push-notification payload enthalten sollte, die "mutable-Inhalt" : 1 Schlüssel-Wert-paar.
Ex von push notification payload JSON:
Diese funktioniert einwandfrei und ich bekomme die Push-Benachrichtigung wie folgt:
Beachten Sie Auch, Dass :
Können Sie versuchen, Pusher oder Houston für die Prüfung der Push-Benachrichtigungen.
Ich wurde immer verrückter. Schließlich erkannte ich, dass ich die
deployment target
vonNotification Service Extension
war10.3
(mein Handy auch). Ich geändert, um10.2
und es funktioniert perfektIch habe das gleiche Problem, aber mein problem war die Benachrichtigung der Erweiterung "app". Es sollte appex
appex
, so war es die Abholung derapp
Erweiterung aus dem Projekt.müssen Sie
"mutable-content": 1
um Ihre Nutzlast