Publicar com carga útil específica da plataforma - Amazon Simple Notification Service

Publicar com carga útil específica da plataforma

É possível usar o AWS Management Console 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":"{ \"notification\": { \"body\": \"Sample message for Android endpoints\", \"title\":\"TitleTest\" } }" }

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":"{ \"notification\": { \"body\": \"Sample message for Android endpoints\", \"title\":\"TitleTest\" }, \"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:

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 (“Enviar atualizações em segundo plano para sua aplicação”) na documentação do APNs.

  • Uma notificação de alert do 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 background do 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

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 como alert

    • Se o dicionário aps contiver content-available definida como 1 e uma ou mais chaves que acionem interações do usuário.

    • Se o dicionário aps contiver content-available definida como 0 ou se a chave content-available estiver ausente.

    • Se o valor da chave content-available não for um inteiro ou um booliano.

  • apns-push-type é definido como background

    • Se o dicionário aps contiver somente a variável content-available definida como 1 e 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-available definido como 1 no dicionário aps. Embora você possa incluir chaves personalizadas, o dicionário aps nã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.