As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando cargas do Google Firebase Cloud Messaging (FCM) v1 no Amazon SNS
O Amazon SNS oferece suporte ao uso da API HTTP v1 do FCM para enviar notificações para destinos Android, iOS e Webpush. Este tópico fornece exemplos da estrutura de carga útil ao publicar notificações push móveis usando a CLI ou a API do Amazon SNS.
Você pode incluir os seguintes tipos de mensagem em sua carga ao enviar uma notificação do FCM:
-
Mensagem de dados — Uma mensagem de dados é gerenciada pelo seu aplicativo cliente e contém pares de valores-chave personalizados. Ao criar uma mensagem de dados, você deve incluir a
data
chave com um objeto JSON como valor e, em seguida, inserir seus pares de valores-chave personalizados. -
Mensagem de notificação ou mensagem de exibição — uma mensagem de notificação contém um conjunto predefinido de chaves gerenciadas pelo SDK do FCM. Essas chaves variam de acordo com o tipo de dispositivo para o qual você está entregando. Para obter mais informações sobre as chaves de notificação específicas da plataforma, consulte o seguinte:
Para obter mais informações sobre os tipos de mensagens do FCM, consulte Tipos de mensagens
Sumário
Usando a estrutura de carga útil do FCM v1 para enviar mensagens
Se você estiver criando um aplicativo FCM pela primeira vez ou quiser aproveitar os recursos do FCM v1, você pode optar por enviar uma carga no formato FCM v1. Para fazer isso, você deve incluir a chave fcmV1Message
de nível superior. Para obter mais informações sobre a criação de cargas do FCM v1, consulte Migração de APIs legadas do FCM para HTTP v1
Exemplo de carga útil do FCM v1 enviada para o Amazon SNS:
nota
O valor da GCM
chave usado no exemplo a seguir deve ser codificado como uma string ao publicar uma notificação usando o 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\", } } } } }" }
Ao enviar uma carga JSON, não se esqueça de incluir o message-structure
atributo em sua solicitação e configurá-lo como. json
Exemplo de 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
Para obter mais informações sobre o envio de cargas no formato FCM v1, consulte o seguinte na documentação do Firebase do Google:
Usando a estrutura de carga útil legada para enviar mensagens para a API FCM v1
Ao migrar para o FCM v1, você não precisa alterar a estrutura de carga que estava usando para suas credenciais legadas. O Amazon SNS transforma sua carga na nova estrutura de carga útil do FCM v1 e envia para o Google.
Formato da carga útil da mensagem de entrada:
{ "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\"}}" }
Mensagem enviada ao 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" } } }
Riscos potenciais
-
O mapeamento legado para v1 não é compatível com o Apple Push Notification Service (APNS)
headers
nem com asfcm_options
chaves. Se você quiser usar esses campos, envie uma carga útil do FCM v1. -
Em alguns casos, os cabeçalhos das mensagens são exigidos pelo FCM v1 para enviar notificações silenciosas aos seus dispositivos APNs. Se você estiver enviando notificações silenciosas para seus dispositivos APNs, elas não funcionarão com a abordagem antiga. Em vez disso, recomendamos usar a carga útil do FCM v1 para evitar problemas inesperados. Para encontrar uma lista de cabeçalhos de APNs e para que eles são usados, consulte Comunicação com APNs
no Guia do Desenvolvedor da Apple. -
Se você estiver usando o atributo
TTL
Amazon SNS ao enviar sua notificação, ela só será atualizada noandroid
campo. Se você quiser definir o atributoTTL
APNS, use a carga útil do FCM v1. -
As
webpush
teclasandroid
apns
, e serão mapeadas e preenchidas com todas as chaves relevantes fornecidas. Por exemplo, se você fornecertitle
, que é uma chave compartilhada entre as três plataformas, o mapeamento do FCM v1 preencherá as três plataformas com o título que você forneceu. -
Algumas chaves compartilhadas entre plataformas esperam diferentes tipos de valor. Por exemplo, a
badge
chave passada paraapns
espera um valor inteiro, enquanto abadge
chave passada parawebpush
espera um valor String. Nos casos em que você fornecer abadge
chave, o mapeamento do FCM v1 preencherá somente a chave para a qual você forneceu um valor válido.
Eventos de falha na entrega do FCM
A tabela a seguir fornece o tipo de falha do Amazon SNS que corresponde aos códigos de erro/status recebidos do Google para solicitações de notificação do FCM v1. Todos os códigos de erro observados recebidos da API FCM v1 estão disponíveis CloudWatch quando você configura o registro do status de entrega do seu aplicativo.
Código de erro/status do FCM | Tipo de falha do Amazon SNS | Mensagem de falha | Causa e mitigação |
---|---|---|---|
|
|
O token da plataforma associado ao endpoint não é válido. |
O token do dispositivo anexado ao seu endpoint está obsoleto ou é inválido. O Amazon SNS desativou seu endpoint. Atualize o endpoint do Amazon SNS para o token de dispositivo mais novo. |
|
|
O corpo da notificação é inválido. |
O token do dispositivo ou a carga útil da mensagem podem ser inválidos. Verifique se a carga útil da mensagem é válida. Se a carga útil da mensagem for válida, atualize o endpoint do Amazon SNS para o token de dispositivo mais novo. |
|
|
O token da plataforma associado ao endpoint não é válido. |
O aplicativo da plataforma associado ao token do dispositivo não tem permissão para enviar para o token do dispositivo. Verifique se você está usando as credenciais corretas do FCM em seu aplicativo da plataforma Amazon SNS. |
|
|
A dependência não está disponível. |
O FCM não conseguiu processar a solicitação a tempo. Todas as novas tentativas executadas pelo Amazon SNS falharam. Você pode armazenar essas mensagens em uma fila de cartas mortas (DLQ) e reconduzi-las posteriormente. |
|
|
Falha inesperada; entre em contato com a Amazon. Frase de falha [Erro interno]. |
O servidor FCM encontrou um erro ao tentar processar sua solicitação. Todas as novas tentativas executadas pelo Amazon SNS falharam. Você pode armazenar essas mensagens em uma fila de cartas mortas (DLQ) e reconduzi-las posteriormente. |
|
|
As credenciais do aplicativo da plataforma não são válidas. |
Uma mensagem direcionada a um dispositivo iOS ou a um dispositivo Webpush não pôde ser enviada. Verifique se suas credenciais de desenvolvimento e produção são válidas. |
|
|
Solicitação limitada por [gcm]. |
Uma cota de taxa de mensagem, cota de taxa de mensagem de dispositivo ou cota de taxa de mensagem de tópico foi excedida. Para obter informações sobre como resolver esse problema, consulte ErrorCode |
|
|
O corpo da notificação é inválido. |
No caso de uma |