Bildirim yükünde resim gönderin

FCM HTTP v1 API ve Bildirimler derleyicisi, görüntünün yayınlandıktan sonra cihaza indirilmesi için görüntü bağlantılarının bir görüntü bildiriminin yükünde gönderilmesini destekler. Bu işlev, Apple uygulamaları için hem resimleri hem de videoları destekler (dosya boyutu sınırları için Apple dokümanlarına bakın).

Apple uygulamasında bildirim resimleri alıp işleyebilmek için bir Bildirim Hizmeti Uzantısı eklemeniz gerekir. Bildirim hizmeti uzantısı, uygulamanızın bildirimi son kullanıcıya göstermeden önce FCM yükü olarak gönderilen resmi işlemesine olanak tanır.

Bildirim hizmeti uzantısını ayarlama

Hizmet uzantısı eklemek için APN'lerde bildirimleri değiştirme ve sunma ile ilgili gerekli kurulum görevlerini gerçekleştirin ve ardından NotificationService.m'ye FCM uzantısı yardımcı API'yi ekleyin. Daha açık belirtmek gerekirse geri aramayı self.contentHandler(self.bestAttemptContent); ile tamamlamak yerine, aşağıdaki gibi FIRMessaging extensionHelper ile tamamlayın:

@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];

}
...

Gönderme isteğini oluşturma

Bildirim gönderme isteğinizde aşağıdaki ApnsConfig seçeneklerini ayarlayın:

  • fcm_options.image içeren resim URL'si
  • headers({ "mutable-content": 1})

Aşağıdaki örnek gönderim isteği, tüm platformlara ortak bir bildirim başlığı gönderir ancak bir resim de gönderir. Kullanıcının cihazındaki görsel etkinin yaklaşık bir görünümünü aşağıda bulabilirsiniz:

Görüntülü bildirimdeki basit bir resim çizimi

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);
  });

REST

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"
       }
     }
   }
 }

Mesaj gövdesinde platforma özgü bloklarda kullanılabilen anahtarlarla ilgili tüm ayrıntılar için HTTP v1 referans dokümanlarına bakın.

mutable-content gösterildiği gibi ayarlandığında bu gönderme isteği, alıcı istemcideki hizmet uzantısının yükte teslim edilen görüntüyü işlemesini etkinleştirir.