

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

# Pubblicazione di notifiche Amazon SNS con payload specifici della piattaforma
<a name="sns-send-custom-platform-specific-payloads-mobile-devices"></a>

Puoi utilizzare Amazon SNS APIs per inviare messaggi personalizzati con payload specifici della piattaforma ai dispositivi mobili. Console di gestione AWS Per informazioni sull'uso di Amazon SNS APIs, consulta [Operazioni API push per dispositivi mobili](mobile-push-api.md) e inserisci il `SNSMobilePush.java` file. `[snsmobilepush.zip](samples/snsmobilepush.zip)` 

## Invio di messaggi in formato JSON
<a name="mobile-push-send-json"></a>

Quando si inviano payload specifici della piattaforma, i dati devono essere stringhe coppia chiave-valore in formato JSON, con virgolette doppie con carattere di escape.

I seguenti esempi mostrano un messaggio personalizzato per la piattaforma FCM .

```
{
"GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"Hello\", \"body\": \"This is a test.\"}, \"data\": {\"dataKey\": \"example\"}}}}"
}
```

## Invio di messaggi specifici della piattaforma
<a name="mobile-push-send-platform"></a>

Oltre a inviare dati personalizzati come coppie chiave-valore, è possibile inviare coppie chiave-valore specifiche per la piattaforma.

L'esempio seguente mostra l'inclusione dei parametri FCM `time_to_live` e `collapse_key` dopo le coppie chiave-valore dei dati personalizzate nel parametro FCM `data`.

```
{
"GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"TitleTest\", \"body\": \"Sample message for Android or iOS endpoints.\"}, \"data\":{\"time_to_live\": 3600,\"collapse_key\":\"deals\"}}}}"
}
```

Per l'elenco delle coppie chiave-valore supportate in ciascuno dei servizi di notifica push supportati in Amazon SNS, consulta i collegamenti seguenti: 

**Importante**  
Amazon SNS ora supporta l'API HTTP v1 Firebase Cloud Messaging (FCM) per l'invio di notifiche push mobili ai dispositivi Android.  
26 marzo 2024 — Amazon SNS supporta l'API HTTP v1 FCM per dispositivi Apple e destinazioni Webpush. Ti consigliamo di migrare le tue applicazioni push mobili esistenti all'ultima API HTTP v1 di FCM entro il 1° giugno 2024 per evitare interruzioni delle applicazioni.
+ [Riferimento chiave di Payload](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#/apple_ref/doc/uid/TP40008194-CH17-SW1) nella documentazione APNs 
+ [Firebase Cloud Messaging HTTP Protocol (Protocollo HTTP di Firebase Cloud Messaging)](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages) nella documentazione .
+ [Invio di un messaggio](https://developer.amazon.com/sdk/adm/sending-message.html) nella documentazione 

## Invio di messaggi a un'applicazione su più piattaforme
<a name="mobile-push-send-multiplatform"></a>

Per inviare un messaggio a un'applicazione installata su dispositivi per più piattaforme, come FCM e APNs, devi prima sottoscrivere gli endpoint mobili a un argomento in Amazon SNS e quindi pubblicare il messaggio sull'argomento.

L'esempio seguente mostra un messaggio da inviare agli endpoint mobili sottoscritti su APNs FCM e 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\"}}" 
}
```

## Invio di messaggi a notifiche di avviso o in APNs background
<a name="mobile-push-send-message-apns-background-notification"></a>

Amazon SNS può inviare messaggi ad APNs annunci `alert` o `background` notifiche (per ulteriori informazioni, consulta [Pushing Background Updates to Your App nella APNs documentazione](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app)).
+ Una `alert` APNs notifica informa l'utente visualizzando un messaggio di avviso, riproducendo un suono o aggiungendo un badge all'icona dell'applicazione.
+ Una `background` APNs notifica si attiva o indica all'applicazione di agire in base al contenuto della notifica, senza informare l'utente.

### Specificazione di valori di intestazione personalizzati APNs
<a name="specify-custom-header-value"></a>

Ti consigliamo di specificare valori personalizzati per l'[attributo del messaggio `AWS.SNS.MOBILE.APNS.PUSH_TYPE` riservato](sns-message-attributes.md#sns-attrib-mobile-reserved) utilizzando l'azione dell'API Amazon `Publish` SNS o AWS SDKs il. AWS CLI Il seguente esempio di CLI imposta `content-available` su `1` e `apns-push-type` su `background` per l'argomento specificato. 

```
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**  
Assicurati che la struttura JSON sia valida. Aggiungi una virgola dopo ogni coppia chiave-valore, tranne l'ultima.

### Dedurre l'intestazione del tipo di APNs push dal payload
<a name="inferring-push-type-header-from-payload"></a>

Se non imposti l'`apns-push-type` APNs intestazione, Amazon SNS imposta l'intestazione su `background` o in base `alert` alla chiave nel dizionario della configurazione `content-available` del payload in `aps` formato JSON. APNs 

**Nota**  
Amazon SNS è in grado di dedurre solo le intestazioni `alert` o `background`, anche se l'intestazione `apns-push-type` può essere impostata su altri valori.
+ `apns-push-type` è impostato su `alert`.
  + Se il dizionario `aps` contiene `content-available` impostato su `1` e *una o più chiavi* che attivano le interazioni dell'utente.
  + Se il dizionario `aps` contiene `content-available` impostato su `0` *o* se la chiave `content-available` è assente.
  + Se il valore della chiave `content-available` non è un numero intero o un valore booleano.
+ `apns-push-type` è impostato su `background`.
  + Se il dizionario `aps` contiene *solo* `content-available` impostato su `1` e *nessun'altra chiave* che attiva le interazioni dell'utente.
**Importante**  
Se Amazon SNS invia un oggetto di configurazione non elaborato APNs come notifica solo in background, devi includere `content-available` set to nel dizionario. `1` `aps` Sebbene sia possibile includere chiavi personalizzate, il dizionario `aps` non deve contenere chiavi che attivino interazioni dell'utente (ad esempio avvisi, badge o suoni).

Di seguito è riportato un esempio di oggetto configurazione non elaborato.

```
{
  "APNS": "{\"aps\":{\"content-available\":1},\"Foo1\":\"Bar\",\"Foo2\":123}"
}
```

In questo esempio, Amazon SNS imposta l'`apns-push-type` APNs intestazione del messaggio su. `background` Quando Amazon SNS rileva che il dizionario `apn` contiene la chiave `content-available` impostata su `1` e non contiene altre chiavi che possono attivare interazioni utente imposta l'intestazione su `background`.