Enviar uma imagem no payload da notificação

A API FCM HTTP v1 e o Editor do Notificações são compatíveis com o envio de links de imagem no payload de uma notificação de exibição. O download da imagem poderá ser feito no dispositivo depois da entrega. Esse recurso é compatível com imagens e vídeos em apps para iOS 10 e versões posteriores. Consulte a documentação do iOS para saber os limites de tamanho de arquivo.

Para poder receber e gerenciar imagens de notificações em um app para iOS, é preciso adicionar uma extensão de serviço de notificação (em inglês). Com essa extensão, é possível gerenciar pelo seu app a imagem enviada no payload do FCM antes de exibir a notificação para o usuário final.

Configurar a extensão de serviço de notificação

Para adicionar uma extensão de serviço, realize as etapas de configuração necessárias para modificar e apresentar notificações em APNs e, em seguida, adicione a API assistente de extensão do FCM em NotificationService.m. Em vez de concluir o callback com self.contentHandler(self.bestAttemptContent);, conclua-o especificamente com FIRMessaging extensionHelper, como mostrado abaixo:

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

}
...

Criar a solicitação de envio

Defina as seguintes opções de ApnsConfig na sua solicitação de envio de notificação:

  • fcm_options.image contendo o URL da imagem
  • headers({ "mutable-content": 1})

Exemplo:

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":{
    "token" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification" : {
      "body" : "This is an FCM notification that displays an image.!",
      "title" : "FCM Notification",
     },
     "apns": {
         "payload": {
             "aps": {
                 "mutable-content": 1
             }
         },
         "fcm_options": {
             "image": "url-to-image"
         }
       }
   }
}

Com mutable-content definido conforme exibido, a solicitação de envio permite que o cliente que receber a mensagem gerencie a imagem enviada no payload.