

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á.

# Publicar notificações do Amazon SNS com cargas úteis específicas da plataforma
<a name="sns-send-custom-platform-specific-payloads-mobile-devices"></a>

Você pode usar o Console de gerenciamento da AWS Amazon SNS APIs para enviar mensagens personalizadas com cargas específicas da plataforma para dispositivos móveis. Para obter informações sobre o uso do Amazon SNS APIs, consulte [Ações da API de push para dispositivos móveis](mobile-push-api.md) e o `SNSMobilePush.java` arquivo em. `[snsmobilepush.zip](samples/snsmobilepush.zip)` 

## Enviar mensagens formatadas em JSON
<a name="mobile-push-send-json"></a>

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
<a name="mobile-push-send-platform"></a>

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.
+ [Referência da chave de carga útil](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#/apple_ref/doc/uid/TP40008194-CH17-SW1) na documentação APNs 
+ [Protocolo HTTP do Firebase Cloud Messaging](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages) na documentação do FCM
+ [Send a Message](https://developer.amazon.com/sdk/adm/sending-message.html) (“Enviar uma mensagem”) na documentação do ADM

## Enviar mensagens para um aplicativo em várias plataformas
<a name="mobile-push-send-multiplatform"></a>

Para enviar uma mensagem para um aplicativo instalado em dispositivos de várias plataformas, como o FCM e APNs, você deve primeiro inscrever os endpoints móveis em um tópico no Amazon SNS e depois publicar a mensagem no tópico.

O exemplo a seguir mostra uma mensagem para enviar aos endpoints móveis inscritos no FCM APNs 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 APNs como alerta ou notificações em segundo plano
<a name="mobile-push-send-message-apns-background-notification"></a>

O Amazon SNS pode enviar mensagens para APNs as `alert` ou `background` notificações (para obter mais informações, consulte [Enviando atualizações em segundo plano para seu aplicativo na APNs documentação](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app)).
+ Uma `alert` APNs notificação informa o usuário exibindo uma mensagem de alerta, reproduzindo um som ou adicionando um selo ao ícone do seu aplicativo.
+ Uma `background` APNs notificação ativa ou instrui seu aplicativo a agir de acordo com o conteúdo da notificação, sem informar o usuário.

### Especificando valores de APNs cabeçalho personalizados
<a name="specify-custom-header-value"></a>

Recomendamos especificar valores personalizados para o [atributo de mensagem `AWS.SNS.MOBILE.APNS.PUSH_TYPE` reservada](sns-message-attributes.md#sns-attrib-mobile-reserved) usando a ação AWS SDKs da API do Amazon `Publish` SNS ou o. 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.

### Inferindo o cabeçalho do tipo APNs push a partir da carga
<a name="inferring-push-type-header-from-payload"></a>

Se você não definir o `apns-push-type` APNs cabeçalho, o Amazon SNS define o cabeçalho como `alert` ou `background` dependendo da `content-available` chave no `aps` dicionário da sua configuração de carga em formato JSON APNs .

**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* `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 APNs como uma notificação somente em segundo plano, você deverá incluir `content-available` set to no dicionário. `1` `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 `apns-push-type` APNs cabeçalho da 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`.