Senden Sie ein Bild in der Benachrichtigungsnutzlast

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:

Einfaches Zeichnen eines Bildes in einer Anzeigebenachrichtigung

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.