L'API FCM HTTP v1 e il compilatore di notifiche supportano l'invio di link alle immagini nel payload di una notifica di visualizzazione per il download delle immagini sul dispositivo dopo l'invio. Questa funzionalità supporta sia le immagini sia i video per le app Apple (consulta la documentazione di Apple per i limiti di dimensioni dei file).
Per poter ricevere e gestire le immagini di notifica in un'app Apple, devi aggiungere un'estensione di servizio di notifica. L'estensione del servizio di notifica consente alla tua app di gestire l'immagine inviata nel payload FCM prima di mostrare la notifica all'utente finale.
Configurare l'estensione del servizio di notifica
Per aggiungere un'estensione di servizio, esegui le attività di configurazione necessarie per
modificare e presentare le notifiche
nelle APN, quindi aggiungi l'API di assistenza per le estensioni FCM in NotificationService.m
.
In particolare, anziché completare il callback con
self.contentHandler(self.bestAttemptContent);
,
compilalo con FIRMessaging extensionHelper
come mostrato:
@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 richiesta di invio
Nella richiesta di invio delle notifiche, imposta le seguenti opzioni ApnsConfig:
fcm_options.image
contenente l'URL dell'immagineheaders({ "mutable-content": 1})
La richiesta di invio dell'esempio seguente invia un titolo di notifica comune a tutte le piattaforme, ma anche un'immagine. Ecco un'approssimazione dell'effetto visivo sul dispositivo di un utente:
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"
}
}
}
}
Consulta la documentazione di riferimento per HTTP v1 per tutti i dettagli sulle chiavi disponibili nei blocchi specifici della piattaforma nel corpo del messaggio.
Con mutable-content
impostato come mostrato, questa richiesta di invio consente all'estensione del servizio sul client di destinazione di gestire l'immagine inviata nel payload.