[SWIFT] Machen Sie PUSH-Benachrichtigungen mit Bildern mit Firebase Cloud Messaging

Sie können PUSH-Benachrichtigungen einfach mit Firebase Cloud Messaging senden. Zu diesem Zeitpunkt können Sie auch ein Bild wie dieses anhängen. IMG_3414.jpg

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.

Überblick

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.

[iOS 10] Bearbeiten der Nutzdaten für Remote-Benachrichtigungen mit der Notification Service-App-Erweiterung #wwdc

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.

Implementierung

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

Funktionsprüfung

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.

CleanShot 2020-11-07 at 14.45.20@2x.png

Recommended Posts

Machen Sie PUSH-Benachrichtigungen mit Bildern mit Firebase Cloud Messaging
Push-Übermittlung von der Spring-Anwendung an Firebase Cloud Messaging
Implementieren von Firebase Cloud Messaging in Android-Apps (2) - Empfangen von Nachrichten in Apps
Senden Sie Push-Benachrichtigungen über Notification Hubs in Java
Kommen Sie mit Java-Containern in Cloud Run zurecht