La messaggistica del gruppo di dispositivi consente di aggiungere più dispositivi a un singolo gruppo. È simile alla messaggistica dell'argomento, 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 diversi modelli di telefono, 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 comporta la gestione dei gruppi di dispositivi dai server anziché direttamente all'interno dell'applicazione.
Puoi utilizzare la messaggistica del gruppo di dispositivi tramite i protocolli legacy XMPP o HTTP sul tuo server dell'app. Le versioni precedenti dell'SDK Firebase Admin per Node.js si basano sui protocolli legacy e forniscono anche funzionalità di messaggistica del gruppo di dispositivi. 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:
Ottieni i token di registrazione per ogni dispositivo che vuoi aggiungere al gruppo.
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. Puoi creare chiavi di notifica sul server app.
La gestione di base dei gruppi di dispositivi (creazione e rimozione di gruppi e aggiunta o rimozione di dispositivi) viene eseguita tramite il server delle app. Vedere il riferimento al protocollo HTTP legacy per un elenco di chiavi supportate.
Gestione dei gruppi di dispositivi sull'app server
Creazione di un gruppo di dispositivi
Per creare un gruppo di dispositivi, invia una richiesta POST che fornisca un nome per il gruppo e un elenco di token di registrazione per i dispositivi. FCM restituisce una nuova notification_key
che rappresenta il gruppo di dispositivi.
Richiesta POST HTTP
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": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...", ... ]
Il notification_key_name
è un nome o identificatore (ad esempio, può essere un nome utente) unico per un dato 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 disponi di 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 andata a buon fine restituisce una notification_key
come la seguente:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
Salvare la 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 di chiave di notifica, il server restituisce una stringa codificata univoca. Sebbene ogni stringa possa sembrare una chiave diversa, in realtà è un valore `notification_key` valido.
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 operation
impostato su add
or remove
e fornire i token di registrazione per l'aggiunta o la rimozione.
Richiesta POST HTTP
Ad esempio, per aggiungere un dispositivo con il token di registrazione bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...
a appUser-Chris
, devi inviare questa richiesta:
{
"operation": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
Formato della risposta
Una richiesta riuscita di aggiungere o rimuovere un dispositivo restituisce una 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 parametro to
sulla chiave di notifica univoca per il gruppo di dispositivi. Consulta Tipi di messaggio 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 legacy.
Richiesta HTTP POST 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 ( registration_ids
) 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 dell'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à la seguente, con 0 successo e 0 fallimento:
{ "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 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 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 hanno ricevuto 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 nack.
Per l'elenco completo delle opzioni dei messaggi, vedere le informazioni di riferimento per il protocollo del server di connessione scelto, HTTP o XMPP .