Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Invia messaggi a gruppi di dispositivi su Android

La messaggistica del gruppo di dispositivi consente di aggiungere più dispositivi a un singolo gruppo. È simile alla messaggistica di argomenti, ma include l'autenticazione per garantire che l'appartenenza al gruppo sia gestita solo dai server. Ad esempio, se si desidera inviare messaggi diversi a diversi modelli di telefono, i server possono aggiungere / rimuovere registrazioni ai gruppi appropriati e inviare il messaggio appropriato a ciascun gruppo. La messaggistica del gruppo di dispositivi differisce dalla messaggistica di argomento in quanto implica la gestione dei gruppi di dispositivi dai server anziché direttamente dall'applicazione.

È possibile utilizzare la messaggistica del gruppo di dispositivi tramite i protocolli XMPP o HTTP legacy sul server delle app. Firebase Admin SDK per Node.js basato sui protocolli legacy fornisce anche funzionalità di messaggistica del gruppo di dispositivi. Il numero massimo di membri consentito per una chiave di notifica è 20.

Gestione dei gruppi di dispositivi

Prima di inviare messaggi a un gruppo di dispositivi, è necessario:

  1. Ottieni i token di registrazione per ogni dispositivo che desideri aggiungere al gruppo.

  2. Crea la notification_key , che identifica il gruppo di dispositivi mappando un particolare gruppo (in genere un utente) a tutti i token di registrazione associati al gruppo. È possibile creare chiavi di notifica sul server delle app o sulle app client Android.

La gestione di base dei gruppi di dispositivi - creazione e rimozione di gruppi e aggiunta o rimozione di dispositivi - viene solitamente eseguita tramite il server dell'app. Vedere il riferimento del protocollo HTTP legacy per un elenco delle chiavi supportate.

Facoltativamente, le app client Android possono gestire i gruppi di dispositivi dal lato client.

Gestione dei gruppi di dispositivi sul server delle app

Creazione di un gruppo di dispositivi

Per creare un gruppo di dispositivi, invia una richiesta POST che fornisce un nome per il gruppo e un elenco di token di registrazione per i dispositivi. FCM restituisce una nuova chiave di notification_key che rappresenta il gruppo di dispositivi.

Richiesta HTTP POST

Invia una richiesta come la seguente a https://fcm.googleapis.com/fcm/notification :

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["4", "8", "15", "16", "23", "42"]
}

notification_key_name è un nome o identificatore (ad esempio, può essere un nome utente) che è univoco per un determinato gruppo. notification_key_name e notification_key sono univoci per un gruppo di token di registrazione. È importante che notification_key_name sia univoco per app client se hai più app client per lo stesso ID mittente . Ciò garantisce che i messaggi vengano inviati solo all'app di destinazione prevista.

Formato della risposta

Una richiesta riuscita restituisce una notification_key come la seguente:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Salvare notification_key e il corrispondente notification_key_name da utilizzare nelle operazioni successive.

Recupero di una chiave di notifica

Se è necessario recuperare una chiave di notifica esistente, utilizzare notification_key_name in una richiesta GET come mostrato:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

Per ogni richiesta GET per un determinato nome chiave di notifica, il server restituisce una stringa codificata univoca. Sebbene ogni stringa possa sembrare una chiave diversa, in realtà è un valore valido di "notification_key".

Aggiunta e rimozione di dispositivi da un gruppo di dispositivi

Per aggiungere o rimuovere dispositivi da un gruppo esistente, inviare una richiesta POST con il parametro di operation impostato per add o remove e fornire i token di registrazione per l'aggiunta o la rimozione.

Richiesta HTTP POST

Ad esempio, per aggiungere un dispositivo con l'ID di registrazione 51 ad appUser-Chris, dovresti inviare questa richiesta:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["51"]
}

Formato della risposta

Una richiesta riuscita di aggiungere o rimuovere un dispositivo restituisce una chiave di notification_key come la seguente:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

Invio di messaggi downstream a gruppi di dispositivi

L'invio di messaggi a un gruppo di dispositivi è molto simile all'invio di messaggi a un singolo dispositivo. Impostare il to parametro la chiave di notifica univoco per il gruppo di dispositivi. Vedere Tipi di messaggi per i dettagli sul supporto del payload. Gli esempi in questa pagina mostrano come inviare messaggi di dati a gruppi di dispositivi nei protocolli HTTP e XMPP.

Richiesta POST HTTP del gruppo di dispositivi

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

Risposta HTTP del gruppo di dispositivi

Ecco un esempio di "successo": la notification_key ha 2 token di registrazione associati e il messaggio è stato inviato con successo a entrambi:

{
  "success": 2,
  "failure": 0
}

Ecco un esempio di "successo parziale": la notification_key ha 3 token di registrazione ad essa associati. Il messaggio è stato inviato correttamente solo a 1 dei token di registrazione. Il messaggio di risposta elenca i token di registrazione che non sono riusciti a ricevere il messaggio:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Quando un messaggio non viene recapitato a uno o più token di registrazione associati a notification_key , il server app deve riprovare con backoff tra i tentativi.

Se il server tenta di inviare un messaggio a un gruppo di dispositivi che non ha membri, la risposta sarà simile alla seguente, con 0 esiti positivi e 0 errori:

{
  "success": 0,
  "failure": 0
}

Messaggio XMPP del gruppo di dispositivi

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

Risposta XMPP del gruppo di dispositivi

Quando il messaggio viene inviato correttamente a uno dei dispositivi del gruppo, il server di connessione XMPP risponde con un ACK. Se tutti i messaggi inviati a tutti i dispositivi del gruppo falliscono, il server di connessione XMPP risponde con un NACK.

Ecco un esempio di "successo": la notification_key ha 3 token di registrazione associati e il messaggio è stato inviato con successo a tutti loro:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

Ecco un esempio di "successo parziale": la notification_key ha 3 token di registrazione associati. Il messaggio è stato inviato correttamente solo a 1 dei token di registrazione. Il messaggio di risposta elenca i token di registrazione che non sono riusciti a ricevere il messaggio:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Quando il server di connessione FCM non riesce a consegnare a tutti i dispositivi nel gruppo. Il server dell'app riceverà una risposta negativa.

Per l'elenco completo delle opzioni di messaggio, vedere le informazioni di riferimento per il protocollo del server di connessione scelto, HTTP o XMPP .