A API FCM HTTP v1 e o compositor de notificações suportam o envio de links de imagem na carga útil de uma notificação de exibição, para download de imagem para o dispositivo após a entrega. Esta funcionalidade oferece suporte a imagens e vídeos para aplicativos Apple (consulte a documentação da Apple para saber os limites de tamanho de arquivo).
Para poder receber e gerenciar imagens de notificação em um aplicativo Apple, você deve adicionar uma extensão de serviço de notificação . A extensão do serviço de notificação permite que seu aplicativo manipule a imagem entregue na carga útil do FCM antes de exibir a notificação ao usuário final.
Configure a extensão do serviço de notificação
Para adicionar uma extensão de serviço, execute as tarefas de configuração necessárias para modificar e apresentar notificações em APNs e, em seguida, adicione a API auxiliar de extensão FCM em NotificationService.m
. Especificamente, em vez de concluir o retorno de chamada com self.contentHandler(self.bestAttemptContent);
, complete-o com FIRMessaging extensionHelper
conforme mostrado:
@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];
}
...
Crie a solicitação de envio
Na sua solicitação de envio de notificação, defina as seguintes opções de ApnsConfig :
-
fcm_options.image
contendo o URL da imagem -
headers({ "mutable-content": 1})
O exemplo de solicitação de envio a seguir envia um título de notificação comum para todas as plataformas, mas também envia uma imagem. Aqui está uma aproximação do efeito visual no dispositivo de um usuário:
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);
});
DESCANSAR
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"
}
}
}
}
Consulte a documentação de referência do HTTP v1 para obter detalhes completos sobre as chaves disponíveis em blocos específicos da plataforma no corpo da mensagem.
Com mutable-content
definido conforme mostrado, essa solicitação de envio permite que a extensão de serviço no cliente receptor manipule a imagem entregue na carga útil.