Sie können PUSH-Benachrichtigungen einfach mit Firebase Cloud Messaging senden.
Zu diesem Zeitpunkt können Sie auch ein Bild wie dieses anhängen.
Es gibt auch ein offizielles Dokument zur Implementierung. Da es in Objective-C geschrieben wurde, habe ich den Beispielcode für die Swift-Version geschrieben.
Die Bild-URL wird vom Absender der PUSH-Benachrichtigung übergeben. Das Bild selbst ist nicht in der PUSH-Benachrichtigung enthalten.
Nach Erhalt der PUSH-Benachrichtigung auf dem iPhone Es scheint das Bild von der darin enthaltenen URL herunterzuladen.
Die App-Erweiterung des Benachrichtigungsdienstes wird für diesen Teil verwendet, nachdem er die iPhone-Seite erreicht hat. Die App-Erweiterung des Benachrichtigungsdienstes ist eine Funktion, die nach Erhalt einer PUSH-Benachrichtigung verarbeitet werden kann. Sie müssen jedoch nicht zu viel nachdenken, da die Firebase Cloud Messaging-Seite die detaillierte Verarbeitung übernimmt.
Notification Service app extension
Lassen Sie uns zunächst die Grundlagen der App-Erweiterung des Notification Service kennenlernen. Lassen Sie uns in diesem Artikel einen Überblick bekommen.
Die App-Erweiterung des Notification Service ist nicht nur eine Funktion zum Anzeigen von Bildern Das Bild der Verarbeitung nach Erhalt der PUSH-Benachrichtigung im Allgemeinen ist wichtig.
Lassen Sie es uns tatsächlich implementieren. Erstellen Sie NotificationService.swift unter Bezugnahme auf den vorherigen Artikel.
Implementieren Sie basierend auf Official Document.
Firebase macht nur die nächste Zeile Abgesehen von den folgenden Zeilen ist der Erstgenerierungscode von NotificationService.swift in Ordnung.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent withContentHandler:contentHandler];
Wenn Sie dies in Swift ändern ...
Messaging.serviceExtension().populateNotificationContent(bestAttemptContent, withContentHandler: contentHandler)
Es wird sein.
Der endgültige Code sieht folgendermaßen aus:
//
// NotificationService.swift
// NotificationService
//
// Created by yoneapp on 2020/11/07.
//
import UserNotifications
import Firebase
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]"
Messaging.serviceExtension().populateNotificationContent(bestAttemptContent, withContentHandler: contentHandler)
}
}
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)
}
}
}
Weil die App-Erweiterung des Benachrichtigungsdienstes mehr Ziele hat Vergessen Sie nicht, die Firebase-Bibliothek zu Ihrer Poddatei hinzuzufügen. Beschreiben Sie den Pod für jedes Schema wie folgt.
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'ImagePushSample' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for ImagePushSample
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'
target 'ImagePushSampleTests' do
inherit! :search_paths
# Pods for testing
end
target 'ImagePushSampleUITests' do
# Pods for testing
end
end
target 'NotificationService' do
use_frameworks!
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'
end
Wenn Sie den Vorgang überprüfen, rufen Sie den Firebase-Verwaltungsbildschirm folgendermaßen auf Bestätigen Sie, indem Sie eine PUSH-Benachrichtigung mit der Bild-URL senden.
Recommended Posts