Envía una imagen en la carga útil de la notificación

La API de HTTP v1 de FCM y el Compositor de Notifications admiten el envío de vínculos de imágenes en la carga útil de una notificación en pantalla para la descarga de imágenes en el dispositivo después de la entrega. Esta función es compatible con imágenes y videos para aplicaciones en iOS 10 y versiones posteriores (consulta la documentación de iOS a fin de conocer los límites de tamaño de archivo).

A fin de recibir y manejar imágenes de notificaciones en una app para iOS, debes agregar una extensión del servicio de notificaciones. Esta extensión permite que tu app maneje la imagen entregada en la carga útil de FCM antes de mostrar la notificación al usuario final.

Configura la extensión del servicio de notificaciones

A fin de agregar una extensión de servicio, realiza las tareas de configuración necesarias para modificar y presentar notificaciones en APNS y, luego, agrega la API auxiliar de la extensión de FCM a NotificationService.m. Específicamente, en lugar de completar la devolución de llamada con self.contentHandler(self.bestAttemptContent);, complétala con FIRMessaging extensionHelper como se muestra a continuació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];

}
...

Crea la solicitud de envío

En la solicitud de envío de notificaciones, configura las siguientes opciones de ApnsConfig:

  • fcm_options.image que contiene la URL de la imagen
  • headers({ "mutable-content": 1})

Por ejemplo:

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

Con el mutable-content configurado como se muestra, esta solicitud de envío permite que la extensión de servicio en el cliente receptor maneje la imagen entregada en la carga útil.