Bildirim yükünde resim gönder

FCM HTTP v1 API ve Bildirim oluşturucu, görüntü teslimden sonra cihaza görüntü indirmek için bir görüntüleme bildirimi yüküyle birlikte resim bağlantılarının 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 resimlerini alıp işleyebilmek için Bildirim Hizmeti Uzantısı eklemeniz gerekir. Bildirim hizmeti uzantısı, uygulamanızın bildirimi son kullanıcıya görüntülemeden önce FCM yükünde yayınlanan resmi işlemesini sağlar.

Bildirim hizmeti uzantısını ayarlayın

Hizmet uzantısı eklemek için APN'lerde bildirimleri değiştirme ve sunma ile ilgili gerekli kurulum görevlerini yerine getirin ve ardından NotificationService.m'de FCM uzantısı yardımcı API'sini ekleyin. Özellikle, geri çağırmayı self.contentHandler(self.bestAttemptContent); ile tamamlamak yerine aşağıda 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:

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

Aşağıdaki örnek gönderme isteği, tüm platformlara ortak bir bildirim başlığı gönderir ancak aynı zamanda bir resim de gönderir. Kullanıcının cihazı üzerindeki görsel etkinin yaklaşık bir tahminini aşağıda görebilirsiniz:

Ekran 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 anahtarlar hakkında ayrıntılı bilgi için HTTP v1 referans belgelerine 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.