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 degli argomenti, ma include l'autenticazione per garantire che l'appartenenza al gruppo sia gestita solo dai tuoi server. Ad esempio, se desideri inviare messaggi diversi a modelli di telefono diversi, i tuoi server possono aggiungere/rimuovere registrazioni ai gruppi appropriati e inviare il messaggio appropriato a ciascun gruppo. La messaggistica dei gruppi di dispositivi differisce dalla messaggistica degli argomenti in quanto implica la gestione dei gruppi di dispositivi dai server anziché direttamente dall'applicazione.

È possibile utilizzare la messaggistica di gruppo dispositivo tramite l'eredità XMPP o HTTP protocolli sul server app. Firebase Admin SDK per Node.js sulla base dei protocolli legacy anche fornire funzionalità di messaggistica di gruppo dispositivo. Il numero massimo di membri consentiti per una chiave di notifica è 20.

Gestione dei gruppi di dispositivi

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

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

  2. Creare il notification_key , che identifica il gruppo di periferiche mappando un particolare gruppo (in genere un utente) a tutti i gettoni di registrazione associati del gruppo. Puoi creare chiavi di notifica sul server dell'app.

La gestione di base dei gruppi di dispositivi, ovvero creazione e rimozione di gruppi e aggiunta o rimozione di dispositivi, viene eseguita tramite il server dell'app. Vedere l'eredità di riferimento protocollo HTTP per un elenco delle chiavi supportati.

Gestione dei gruppi di dispositivi sul server dell'app

Creazione di un gruppo di dispositivi

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

Richiesta HTTP POST

Invia una richiesta simile alla 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": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

Il notification_key_name è un nome o identificativo (ad esempio, può essere un nome utente) che è unico per un dato gruppo. Il notification_key_name e notification_key sono uniche per un gruppo di gettoni di registrazione. E 'importante che notification_key_name è unico per client applicazione se si dispone di più applicazioni client per lo stesso ID del mittente . Ciò garantisce che i messaggi vengano inviati solo all'app di destinazione prevista.

Formato di risposta

Una richiesta di successo restituisce un notification_key come la seguente:

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

Salvare il notification_key e il corrispondente notification_key_name all'uso nelle operazioni successive.

Recupero di una chiave di notifica

Se avete bisogno di recuperare una chiave di notifica esistente, utilizzare il notification_key_name in una richiesta GET, come illustrato:

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 di chiave di notifica, il server restituisce una stringa codificata univoca. Sebbene ogni stringa possa sembrare una chiave diversa, in realtà è un valore di `notification_key` valido.

Aggiunta e rimozione di dispositivi da un gruppo di dispositivi

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

Richiesta HTTP POST

Ad esempio, per aggiungere un dispositivo con la registrazione di token bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... per appUser-Chris , si dovrebbe inviare questa richiesta:

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

Formato di risposta

Una richiesta di successo per aggiungere o rimuovere un dispositivo restituisce un 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 i tipi di messaggio per i dettagli sul supporto di carico utile. 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 gettoni di registrazione ad esso associati, e il messaggio è stato inviato con successo ad entrambi:

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

Ecco un esempio di "successo parziale" - il notification_key ha 3 registrazione token associati con esso. Il messaggio è stato inviato con successo solo a 1 dei token di registrazione. Le liste dei messaggi di risposta i token di registrazione ( registration_ids ) che non è riuscito a ricevere il messaggio:

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

Quando un messaggio non riesce ad essere consegnato ad uno o più gettoni della registrazione associato ad un notification_key , il server di applicazione dovrebbe 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à la seguente, con 0 operazioni riuscite 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 qualsiasi 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 gettoni di registrazione ad esso 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" - il notification_key ha 3 registrazione token associati con esso. Il messaggio è stato inviato con successo 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 fornire a tutti i dispositivi del gruppo. Il server dell'app riceverà una risposta nack.

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