Publicar notificações do Amazon SNS com cargas úteis específicas da plataforma
É possível usar o Console de gerenciamento da AWS ou as APIs do Amazon SNS para enviar mensagens personalizadas com cargas úteis específicas da plataforma para dispositivos móveis. Para obter informações sobre a utilização das APIs do Amazon SNS, consulte Ações da API de push para dispositivos móveis e o arquivo SNSMobilePush.java em snsmobilepush.zip.
Enviar mensagens formatadas em JSON
Ao enviar cargas específicas à plataforma, os dados devem estar formatados como strings de par de chave/valor JSON, com aspas em sequência de escape.
Os exemplos a seguir mostram uma mensagem personalizada para a plataforma do FCM.
{ "GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"Hello\", \"body\": \"This is a test.\"}, \"data\": {\"dataKey\": \"example\"}}}}" }
Enviar mensagens específicas à plataforma
Além de enviar dados personalizados como pares de chave/valor, é possível enviar pares de chave/valor específicos à plataforma.
O exemplo a seguir mostra a inclusão dos parâmetros time_to_live e collapse_key do FCM depois dos pares de chave/valor de dados personalizados no parâmetro data do FCM.
{ "GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"TitleTest\", \"body\": \"Sample message for Android or iOS endpoints.\"}, \"data\":{\"time_to_live\": 3600,\"collapse_key\":\"deals\"}}}}" }
Para obter uma lista dos pares de chave/valor compatíveis em cada um dos serviços de notificação push compatíveis com o Amazon SNS, consulte o seguinte:
Importante
O Amazon SNS agora oferece suporte à API HTTP v1 do Firebase Cloud Messaging (FCM) para enviar notificações push móveis para dispositivos Android.
26 de março de 2024: o Amazon SNS oferece suporte à API HTTP v1 do FCM para dispositivos Apple e destinos Webpush. Recomendamos que você migre suas aplicações móveis por push existentes para a API mais recente do FCM HTTP v1 até 1º de junho de 2024 para evitar interrupções nas aplicações.
-
Payload Key Reference
(“Referência de chave da carga útil”) na documentação do APNs -
Protocolo HTTP do Firebase Cloud Messaging
na documentação do FCM -
Send a Message
(“Enviar uma mensagem”) na documentação do ADM
Enviar mensagens para um aplicativo em várias plataformas
Para enviar uma mensagem para uma aplicação instalada em dispositivos para várias plataformas, como o FCM e o APNs, deverá primeiro será necessário inscrever os endpoints móveis em um tópico do Amazon SNS e depois publicar a mensagem no tópico.
O exemplo seguinte mostra uma mensagem a ser enviada para endpoints móveis inscritos no APNs, no FCM e no ADM:
{ "default": "This is the default message which must be present when publishing a message to a topic. The default message will only be used if a message is not present for one of the notification platforms.", "APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":\"www.amazon.com\"} }", "GCM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}", "ADM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}" }
Enviar mensagens para o APNs como notificações de alerta ou de segundo plano
O Amazon SNS pode enviar mensagens para o APNs como notificações de alert ou de background (para obter mais informações, consulte Pushing Background Updates to Your App
-
Uma notificação de
alertdo APNs informa o usuário exibindo uma mensagem de alerta, reproduzindo um som ou adicionando um distintivo ao ícone da aplicação. -
Uma notificação de
backgrounddo APNs desperta ou instrui sua aplicação a agir em relação ao conteúdo da notificação, sem informar o usuário.
Especificar valores personalizados do cabeçalho do APNs
Recomendamos especificar valores personalizados para o atributo de mensagem reservada AWS.SNS.MOBILE.APNS.PUSH_TYPE usando a ação da API Publish do Amazon SNS, os AWS SDKs ou a AWS CLI. O exemplo da CLI a seguir define content-available como 1 e apns-push-type como background para o tópico especificado.
aws sns publish \ --endpoint-url https://sns.us-east-1.amazonaws.com \ --target-arn arn:aws:sns:us-east-1:123456789012:endpoint/APNS_PLATFORM/MYAPP/1234a567-bc89-012d-3e45-6fg7h890123i \ --message '{"APNS_PLATFORM":"{\"aps\":{\"content-available\":1}}"}' \ --message-attributes '{ \ "AWS.SNS.MOBILE.APNS.TOPIC":{"DataType":"String","StringValue":"com.amazon.mobile.messaging.myapp"}, \ "AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"background"}, \ "AWS.SNS.MOBILE.APNS.PRIORITY":{"DataType":"String","StringValue":"5"}}' \ --message-structure json
nota
Certifique-se de que a estrutura JSON seja válida. Adicione uma vírgula após cada par chave-valor, exceto o último.
Inferir o cabeçalho do tipo de push do APNs da carga útil
Se você não definir o cabeçalho apns-push-type do APNs, o Amazon SNS definirá o cabeçalho como alert ou background, dependendo da chave content-available no dicionário aps da configuração de carga útil do APNs formatada em JSON.
nota
O Amazon SNS é capaz de inferir somente os cabeçalhos alert ou background, embora o cabeçalho apns-push-type possa ser definido com outros valores.
-
apns-push-typeé definido comoalert-
Se o dicionário
apscontivercontent-availabledefinida como1e uma ou mais chaves que acionem interações do usuário. -
Se o dicionário
apscontivercontent-availabledefinida como0ou se a chavecontent-availableestiver ausente. -
Se o valor da chave
content-availablenão for um inteiro ou um booliano.
-
-
apns-push-typeé definido comobackground-
Se o dicionário
apscontiver somentecontent-availabledefinida como1e nenhuma outra chave que acione interações com o usuário.Importante
Se o Amazon SNS enviar um objeto de configuração bruto para o APNs como uma notificação somente de segundo plano, será necessário incluir o
content-availabledefinido como1no dicionárioaps. Embora você possa incluir chaves personalizadas, o dicionárioapsnão deve conter chaves que acionem interações do usuário (por exemplo, alertas, distintivos ou sons).
-
Veja a seguir um exemplo de objeto de configuração bruto.
{ "APNS": "{\"aps\":{\"content-available\":1},\"Foo1\":\"Bar\",\"Foo2\":123}" }
Neste exemplo, o Amazon SNS define o cabeçalho apns-push-type do APNs para a mensagem como background. Quando o Amazon SNS detecta que o dicionário apn contém a chave content-available definida como 1 e não contém nenhuma outra chave que possa acionar interações do usuário, ele define o cabeçalho como background.