Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo dei payload di Google Firebase Cloud Messaging v1 in Amazon SNS
Amazon SNS supporta l'utilizzo dell'API HTTP v1 FCM per inviare notifiche a destinazioni Android, iOS e Webpush. Questo argomento fornisce esempi della struttura del payload quando si pubblicano notifiche push mobili utilizzando la CLI o l'API Amazon SNS.
Puoi includere i seguenti tipi di messaggi nel tuo payload quando invii una notifica FCM:
-
Messaggio di dati: un messaggio di dati viene gestito dall'app client e contiene coppie chiave-valore personalizzate. Quando si crea un messaggio di dati, è necessario includere la
datachiave con un oggetto JSON come valore, quindi immettere le coppie chiave-valore personalizzate. -
Messaggio di notifica o messaggio di visualizzazione: un messaggio di notifica contiene un set predefinito di chiavi gestite da FCM SDK. Queste chiavi variano a seconda del tipo di dispositivo a cui si sta consegnando. Per ulteriori informazioni sulle chiavi di notifica specifiche della piattaforma, consulta quanto segue:
Per ulteriori informazioni sui tipi di messaggi FCM, consulta Tipi di messaggio
Utilizzo della struttura del payload FCM v1 per inviare messaggi
Se stai creando un'applicazione FCM per la prima volta o desideri sfruttare le funzionalità di FCM v1, puoi scegliere di inviare un payload in formato FCM v1. A tale scopo, è necessario includere la chiave di primo livello. fcmV1Message Per ulteriori informazioni sulla creazione di payload FCM v1, consulta Migrare dalle API FCM precedenti a HTTP v1
Esempio di payload FCM v1 inviato ad Amazon SNS:
Nota
Il valore GCM chiave utilizzato nell'esempio seguente deve essere codificato come stringa quando si pubblica una notifica tramite Amazon SNS.
{ "GCM": "{ \"fcmV1Message\": { \"validate_only\": false, \"message\": { \"notification\": { \"title\": \"string\", \"body\": \"string\" }, \"data\": { \"dataGen\": \"priority message\" }, \"android\": { \"priority\": \"high\", \"notification\": { \"body_loc_args\": [\"string\"], \"title_loc_args\": [\"string\"], \"sound\": \"string\", \"title_loc_key\": \"string\", \"title\": \"string\", \"body\": \"string\", \"click_action\": \"clicky_clacky\", \"body_loc_key\": \"string\" }, \"data\": { \"dataAndroid\": \"priority message\" }, \"ttl\": \"10023.32s\" }, \"apns\": { \"payload\": { \"aps\": { \"alert\": { \"subtitle\": \"string\", \"title-loc-args\": [\"string\"], \"title-loc-key\": \"string\", \"loc-args\": [\"string\"], \"loc-key\": \"string\", \"title\": \"string\", \"body\": \"string\" }, \"category\": \"Click\", \"content-available\": 0, \"sound\": \"string\", \"badge\": 5 } } }, \"webpush\": { \"notification\": { \"badge\": \"5\", \"title\": \"string\", \"body\": \"string\" }, \"data\": { \"dataWeb\": \"priority message\" } } } } }" }
Quando invii un payload JSON, assicurati di includere l'message-structureattributo nella richiesta e impostalo su. json
Esempio di CLI:
aws sns publish --topic $TOPIC_ARN --message '{"GCM": "{\"fcmV1Message\": {\"message\":{\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"android\":{\"priority\":\"high\",\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"data\":{\"customAndroidDataKey\":\"custom key value\"},\"ttl\":\"0s\"},\"apns\":{\"payload\":{\"aps\":{\"alert\":{\"title\":\"string\", \"body\":\"string\"},\"content-available\":1,\"badge\":5}}},\"webpush\":{\"notification\":{\"badge\":\"URL\",\"body\":\"Test\"},\"data\":{\"customWebpushDataKey\":\"priority message\"}},\"data\":{\"customGeneralDataKey\":\"priority message\"}}}}", "default": "{\"notification\": {\"title\": \"test\"}"}' --region $REGION --message-structure json
Per ulteriori informazioni sull'invio di payload in formato FCM v1, consulta quanto segue nella documentazione Firebase di Google:
Utilizzo della struttura del payload precedente per inviare messaggi all'API FCM v1
Quando si esegue la migrazione a FCM v1, non è necessario modificare la struttura del payload utilizzata per le credenziali precedenti. Amazon SNS trasforma il tuo payload nella nuova struttura di payload FCM v1 e lo invia a Google.
Formato del payload del messaggio di input:
{ "GCM": "{\"notification\": {\"title\": \"string\", \"body\": \"string\", \"android_channel_id\": \"string\", \"body_loc_args\": [\"string\"], \"body_loc_key\": \"string\", \"click_action\": \"string\", \"color\": \"string\", \"icon\": \"string\", \"sound\": \"string\", \"tag\": \"string\", \"title_loc_args\": [\"string\"], \"title_loc_key\": \"string\"}, \"data\": {\"message\": \"priority message\"}}" }
Messaggio inviato a Google:
{ "message": { "token": "***", "notification": { "title": "string", "body": "string" }, "android": { "priority": "high", "notification": { "body_loc_args": [ "string" ], "title_loc_args": [ "string" ], "color": "string", "sound": "string", "icon": "string", "tag": "string", "title_loc_key": "string", "title": "string", "body": "string", "click_action": "string", "channel_id": "string", "body_loc_key": "string" }, "data": { "message": "priority message" } }, "apns": { "payload": { "aps": { "alert": { "title-loc-args": [ "string" ], "title-loc-key": "string", "loc-args": [ "string" ], "loc-key": "string", "title": "string", "body": "string" }, "category": "string", "sound": "string" } } }, "webpush": { "notification": { "icon": "string", "tag": "string", "body": "string", "title": "string" }, "data": { "message": "priority message" } }, "data": { "message": "priority message" } } }
Rischi potenziali
-
La mappatura dalla versione precedente alla versione v1 non supporta l'Apple Push Notification Service (APNS)
headerso i tasti.fcm_optionsSe desideri utilizzare questi campi, invia un payload FCM v1. -
In alcuni casi, le intestazioni dei messaggi sono richieste da FCM v1 per inviare notifiche silenziose ai dispositivi APNs. Se stai inviando notifiche silenziose ai tuoi dispositivi APNs, non funzioneranno con l'approccio precedente. Consigliamo invece di utilizzare il payload FCM v1 per evitare problemi imprevisti. Per trovare un elenco delle intestazioni APNs e a cosa servono, consulta Communicating with
APNs nella Apple Developer Guide. -
Se utilizzi l'attributo
TTLAmazon SNS per inviare la notifica, verrà aggiornato solo nel campo.androidSe desideri impostare l'attributoTTLAPNS, utilizza il payload FCM v1. -
Le
webpushchiaviandroidapns, e verranno mappate e popolate con tutte le chiavi pertinenti fornite. Ad esempio, setitlefornisci una chiave condivisa tra tutte e tre le piattaforme, la mappatura FCM v1 popolerà tutte e tre le piattaforme con il titolo fornito. -
Alcune chiavi condivise tra piattaforme prevedono tipi di valore diversi. Ad esempio, la
badgechiave passata aapnsprevede un valore intero, mentre labadgechiave passata awebpushprevede un valore String. Nei casi in cui si fornisce labadgechiave, la mappatura FCM v1 popolerà solo la chiave per la quale è stato fornito un valore valido.
Eventi di mancata consegna FCM
La tabella seguente fornisce il tipo di errore di Amazon SNS che corrisponde ai error/status codici ricevuti da Google per le richieste di notifica FCM v1. Tutti i codici di errore osservati ricevuti dall'API FCM v1 sono disponibili CloudWatch quando imposti la registrazione dello stato di consegna per la tua applicazione.
| error/status Codice FCM | Tipo di errore Amazon SNS | Messaggio di errore | Causa e mitigazione |
|---|---|---|---|
|
|
|
Il token della piattaforma associato all'endpoint non è valido. |
Il token del dispositivo collegato all'endpoint è obsoleto o non valido. Amazon SNS ha disabilitato il tuo endpoint. Aggiorna l'endpoint Amazon SNS al token del dispositivo più recente. |
|
|
|
Il corpo della notifica non è valido. |
Il token del dispositivo o il payload del messaggio potrebbe non essere valido. Verifica che il payload del messaggio sia valido. Se il payload del messaggio è valido, aggiorna l'endpoint Amazon SNS al token del dispositivo più recente. |
|
|
|
Il token della piattaforma associato all'endpoint non è valido. |
L'applicazione della piattaforma associata al token del dispositivo non dispone dell'autorizzazione per l'invio al token del dispositivo. Verifica di utilizzare le credenziali FCM corrette nell'applicazione della piattaforma Amazon SNS. |
|
|
|
La dipendenza non è disponibile. |
FCM non è riuscito a elaborare la richiesta in tempo. Tutti i tentativi eseguiti da Amazon SNS non sono riusciti. Puoi archiviare questi messaggi in una coda di lettere morte (DLQ) e reindirizzarli in un secondo momento. |
|
|
|
Errore imprevisto; contatta Amazon. Frase di errore [Errore interno]. |
Il server FCM ha riscontrato un errore durante il tentativo di elaborare la richiesta. Tutti i tentativi eseguiti da Amazon SNS non sono riusciti. Puoi archiviare questi messaggi in una coda di lettere morte (DLQ) e reindirizzarli in un secondo momento. |
|
|
|
Le credenziali dell'applicazione della piattaforma non sono valide. |
Non è stato possibile inviare un messaggio indirizzato a un dispositivo iOS o Webpush. Verifica che le tue credenziali di sviluppo e produzione siano valide. |
|
|
|
Richiesta limitata da [gcm]. |
È stata superata la quota di frequenza dei messaggi, la quota della frequenza dei messaggi del dispositivo o la quota di frequenza dei messaggi per argomento. Per informazioni su come risolvere questo problema, consulta la ErrorCode |
|
|
|
Il corpo della notifica non è valido. |
Per un' |