Die FCM HTTP v1 API und der Notifications Composer unterstützen das Senden von Bildlinks in der Nutzlast einer Anzeigebenachrichtigung, um das Bild nach der Zustellung auf das Gerät herunterzuladen. Diese Funktionalität unterstützt sowohl Bilder als auch Videos für Apple-Apps (Informationen zu Dateigrößenbeschränkungen finden Sie in der Apple-Dokumentation).
Um Benachrichtigungsbilder in einer Apple-App empfangen und verarbeiten zu können, müssen Sie eine Notification Service Extension hinzufügen. Mit der Benachrichtigungsdiensterweiterung kann Ihre App das in der FCM-Nutzlast bereitgestellte Bild verarbeiten, bevor die Benachrichtigung dem Endbenutzer angezeigt wird.
Richten Sie die Benachrichtigungsdiensterweiterung ein
Um eine Diensterweiterung hinzuzufügen, führen Sie die erforderlichen Einrichtungsaufgaben zum Ändern und Präsentieren von Benachrichtigungen in APNs aus und fügen Sie dann die FCM-Erweiterungs-Hilfs-API in NotificationService.m
hinzu. Konkret, anstatt den Rückruf mit self.contentHandler(self.bestAttemptContent);
abzuschließen. , vervollständigen Sie es mit FIRMessaging extensionHelper
wie gezeigt:
@interface NotificationService () <NSURLSessionDelegate>
@property(nonatomic) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property(nonatomic) UNMutableNotificationContent *bestAttemptContent;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
// Modify the notification content here as you wish
self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]",
self.bestAttemptContent.title];
// Call FIRMessaging extension helper API.
[[FIRMessaging extensionHelper] populateNotificationContent:self.bestAttemptContent
withContentHandler:contentHandler];
}
...
Erstellen Sie die Sendeanforderung
Legen Sie in Ihrer Benachrichtigungssendeanforderung die folgenden ApnsConfig- Optionen fest:
-
fcm_options.image
mit der Bild-URL -
headers({ "mutable-content": 1})
Die folgende Beispiel-Sendeanforderung sendet einen gemeinsamen Benachrichtigungstitel an alle Plattformen, sendet aber auch ein Bild. Hier ist eine Annäherung an den visuellen Effekt auf dem Gerät eines Benutzers:
Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Sparky says hello!'
},
android: {
notification: {
imageUrl: 'https://foo.bar.pizza-monster.png'
}
},
apns: {
payload: {
aps: {
'mutable-content': 1
}
},
fcm_options: {
image: 'https://foo.bar.pizza-monster.png'
}
},
webpush: {
headers: {
image: 'https://foo.bar.pizza-monster.png'
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
AUSRUHEN
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"topic":"industry-tech",
"notification":{
"title":"Sparky says hello!",
},
"android":{
"notification":{
"image":"https://foo.bar/pizza-monster.png"
}
},
"apns":{
"payload":{
"aps":{
"mutable-content":1
}
},
"fcm_options": {
"image":"https://foo.bar/pizza-monster.png"
}
},
"webpush":{
"headers":{
"image":"https://foo.bar/pizza-monster.png"
}
}
}
}
Ausführliche Informationen zu den Schlüsseln, die in plattformspezifischen Blöcken im Nachrichtentext verfügbar sind, finden Sie in der HTTP v1-Referenzdokumentation .
Wenn mutable-content
wie gezeigt festgelegt ist, ermöglicht diese Sendeanforderung der Diensterweiterung auf dem empfangenden Client, das in der Nutzlast übermittelte Bild zu verarbeiten.