Vous pouvez facilement envoyer des notifications PUSH à l'aide de Firebase Cloud Messaging. À ce moment-là, vous pouvez également joindre une image comme celle-ci.
Il existe également un Document officiel sur la façon de le mettre en œuvre. Comme il a été écrit en Objective-C, j'ai écrit l'exemple de code pour la version Swift.
L'URL de l'image sera transmise par l'expéditeur de la notification PUSH. L'image elle-même n'est pas incluse dans la notification PUSH.
Après avoir reçu la notification PUSH sur l'iPhone Il semble télécharger l'image à partir de l'URL qu'il contient.
L'extension de l'application Notification Service est utilisée pour cette partie après avoir atteint le côté iPhone. L'extension d'application du service de notification est une fonction qui peut être traitée après avoir reçu une notification PUSH. Cependant, vous n'avez pas à trop réfléchir car le côté Firebase Cloud Messaging gère le traitement détaillé.
Notification Service app extension
Tout d'abord, apprenons à connaître les bases de l'extension d'application Notification Service. Voyons un aperçu dans cet article.
L'extension de l'application Notification Service n'est pas seulement une fonction pour afficher des images L'image du traitement après réception de la notification PUSH en général est importante.
Mettons-le en œuvre. Créez NotificationService.swift en vous référant à l'article précédent.
Implémentation basée sur Official Document.
Firebase ne fait que la ligne suivante À part les lignes suivantes, le code de génération initiale de NotificationService.swift convient.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent withContentHandler:contentHandler];
Si vous changez ceci en Swift ...
Messaging.serviceExtension().populateNotificationContent(bestAttemptContent, withContentHandler: contentHandler)
Ce sera.
Le code final ressemble à ceci:
//
// 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)
}
}
}
Parce que l'extension d'application Notification Service a plus de cibles N'oubliez pas d'ajouter la bibliothèque Firebase à votre fichier pod. Décrivez le pod pour chaque schéma comme suit.
# 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
Lors de la vérification du fonctionnement, à partir de l'écran de gestion Firebase comme celui-ci Confirmez en envoyant une notification PUSH avec l'URL de l'image.
Recommended Posts