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 della FCM HTTP versione 1 API per inviare notifiche a destinazioni Android, iOS e Webpush. Questo argomento fornisce esempi della struttura del payload durante la pubblicazione di notifiche push per dispositivi mobili utilizzando Amazon o Amazon SNSAPI. CLI
Puoi includere i seguenti tipi di messaggi nel tuo payload quando invii una FCM notifica:
-
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
data
chiave con un JSON oggetto come valore, quindi inserire le coppie chiave-valore personalizzate. -
Messaggio di notifica o messaggio visualizzato: 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 vengono consegnate. Per ulteriori informazioni sui tasti di notifica specifici della piattaforma, consulta quanto segue:
Per ulteriori informazioni sui tipi di FCM messaggi, consulta Tipi di messaggio
Indice
Utilizzo della struttura di payload FCM v1 per inviare messaggi
Se state creando un'FCMapplicazione per la prima volta o desiderate sfruttare le funzionalità della versione FCM 1, potete 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 Migrazione dalla versione precedente FCM APIs alla HTTP v1
FCMesempio di payload v1 inviato ad Amazon: SNS
Nota
Il valore della GCM
chiave utilizzato nell'esempio seguente deve essere codificato come String quando si pubblica una notifica tramite AmazonSNS.
{ "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 JSON payload, assicurati di includere l'message-structure
attributo nella richiesta e di impostarlo su. json
CLIesempio:
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 di payload legacy per inviare messaggi alla FCM v1 API
Durante la migrazione alla FCM v1, non è necessario modificare la struttura del payload utilizzata per le credenziali legacy. 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 1 non supporta l'Apple Push Notification Service (APNS)
headers
o ifcm_options
tasti. Se desideri utilizzare questi campi, invia un payload FCM v1. -
In alcuni casi, le intestazioni dei messaggi sono richieste dalla FCM v1 per inviare notifiche silenziose ai tuoi dispositivi. APNs Se attualmente invii notifiche silenziose ai tuoi APNs dispositivi, queste non funzioneranno con l'approccio precedente. Consigliamo invece di utilizzare il payload FCM v1 per evitare problemi imprevisti. Per trovare un elenco delle APNs intestazioni e per cosa vengono utilizzate, consulta Communicating with APNs
nella Apple Developer Guide. -
Se utilizzi l'SNSattributo
TTL
Amazon per inviare la notifica, questo verrà aggiornato solo nelandroid
campo. Se desideri impostare l'TTL
APNSattributo, utilizza il payload FCM v1. -
Le
webpush
chiaviandroid
apns
, e verranno mappate e compilate con tutte le chiavi pertinenti fornite. Ad esempio, se forniscititle
una chiave condivisa tra tutte e tre le piattaforme, la mappatura FCM v1 popolerà tutte e tre le piattaforme con il titolo che hai fornito. -
Alcune chiavi condivise tra piattaforme prevedono tipi di valori diversi. Ad esempio, la
badge
chiave passata aapns
prevede un valore intero, mentre labadge
chiave passata awebpush
prevede un valore String. Nei casi in cui si fornisce labadge
chiave, la mappatura FCM v1 popolerà solo la chiave per la quale è stato fornito un valore valido.
FCMeventi di mancata consegna
La tabella seguente fornisce il tipo di SNS errore Amazon che corrisponde ai codici di errore/stato ricevuti da Google per le richieste di notifica FCM v1. Tutti i codici di errore rilevati ricevuti dalla versione FCM v1 API sono disponibili CloudWatch quando configuri la registrazione dello stato di consegna per la tua applicazione.
FCMcodice di errore/stato | Tipo di SNS errore Amazon | Messaggio di errore | Causa e mitigazione |
---|---|---|---|
|
|
Il token di piattaforma associato all'endpoint non è valido. |
Il token del dispositivo collegato all'endpoint è obsoleto o non valido. Amazon ha SNS disabilitato il tuo endpoint. Aggiorna l'SNSendpoint Amazon al token del dispositivo più recente. |
|
|
Il corpo della notifica non è valido. |
Il token del dispositivo o il payload del messaggio potrebbero non essere validi. Verifica che il payload del messaggio sia valido. Se il payload del messaggio è valido, aggiorna l'SNSendpoint Amazon 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 FCM credenziali corrette nell'applicazione della SNS piattaforma Amazon. |
|
|
La dipendenza non è disponibile. |
FCMnon è riuscito a elaborare la richiesta in tempo. Tutti i nuovi tentativi eseguiti da Amazon non SNS sono riusciti. Puoi archiviare questi messaggi in una coda di lettere morte (DLQ) e reindirizzarli in un secondo momento. |
|
|
Guasto imprevisto; contatta Amazon. Frase di errore [Errore interno]. |
Il FCM server ha riscontrato un errore durante il tentativo di elaborare la richiesta. Tutti i nuovi tentativi eseguiti da Amazon non SNS 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 a un dispositivo Webpush. Verifica che le tue credenziali di sviluppo e produzione siano valide. |
|
|
Richiesta limitata da [gcm]. |
È stata superata la quota per la frequenza dei messaggi, la quota per la velocità dei messaggi del dispositivo o la quota relativa alla frequenza dei messaggi per argomento. Per informazioni su come risolvere questo problema, consulta la ErrorCode |
|
|
Il corpo della notifica non è valido. |
In caso di |