Bildirim yükünde resim gönderin

FCM HTTP v1 API'si ve Bildirim Oluşturucu, teslimattan sonra cihaza indirilmek üzere resim bağlantılarının bir görüntüleme 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 belgelerine bakın).

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

Bildirim hizmeti uzantısını ayarlama

Hizmet uzantısı eklemek için APNs'de bildirimleri değiştirme ve sunma ile ilgili gerekli kurulum görevlerini gerçekleştirin, ardından NotificationService.m'ye FCM uzantısı yardımcı API'sini ekleyin. Özellikle, geri aramayı self.contentHandler(self.bestAttemptContent); ile tamamlamak yerine gösterildiği 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 resim URL'sini içerir. Apple, kaynak türünün doğru şekilde tanımlanması için resim URL'sinin geçerli bir dosya uzantısı içermesini zorunlu kılar.
  • headers({ "mutable-content": 1})

Aşağıdaki örnek gönderme 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 efektin yaklaşık görünümü:

Görüntüleme bildirimindeki bir resmin basit ç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"
       }
     }
   }
 }

İleti gövdesindeki platforma özgü bloklarda bulunan anahtarlarla ilgili tüm ayrıntılar için HTTP v1 referans belgelerine bakın.

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