Los mensajes por grupos de dispositivos te permiten agregar varios dispositivos a un solo grupo. Esta función es parecida a la mensajería por temas, pero incluye autenticación para garantizar que solo tus servidores puedan administrar la pertenencia a un grupo. Por ejemplo, si quieres enviar mensajes distintos según el modelo de teléfono, tus servidores pueden agregar registros a los grupos correspondientes o quitarlos de ellos, y enviar el mensaje adecuado a cada grupo. La diferencia entre los mensajes por grupos de dispositivos y la mensajería por temas es que los primeros requieren administrar los grupos de dispositivos en tus servidores en lugar de en tu aplicación de manera directa.
La cantidad máxima de miembros permitida para una clave de notificación es de 20.
Administra grupos de dispositivos
Antes de enviar mensajes a un grupo de dispositivos, debes hacer lo siguiente:
-
Obtener los tokens de registro de cada dispositivo que desees agregar al grupo
-
Crear la
notification_key
, que identifica el grupo de dispositivos mediante la asignación de un grupo específico (por lo general, un usuario) a todos los tokens de registro relacionados del grupo. Puedes crear claves de notificación en el servidor de apps
La administración básica de grupos de dispositivos (crear y quitar grupos, y agregar o quitar dispositivos) se ejecuta a través de la API de HTTP v1 mediante tokens de corta duración para autorizar solicitudes de envío. Consulta las Claves de administración de grupos de dispositivos para obtener una lista de las claves compatibles.
Administra grupos de dispositivos en el servidor de apps
Crea un grupo de dispositivos
Si quieres crear un grupo de dispositivos, envía una solicitud POST que proporcione un nombre para el grupo y una lista de tokens de registro para los dispositivos.
FCM muestra una notification_key
nueva
que representa al grupo de dispositivos.
Solicitud HTTP POST
Envía una solicitud como la siguiente a https://fcm.googleapis.com/fcm/notification
:
https://fcm.googleapis.com/fcm/notification Content-Type:application/json access_token_auth: true Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA project_id:SENDER_ID { "operation": "create", "notification_key_name": "appUser-Chris", "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...", ... ]
El notification_key_name
es un nombre o identificador (p. ej., puede ser un nombre de usuario) que es único para un grupo determinado. El notification_key_name
y la notification_key
son únicos en un grupo de tokens de registro. Si tienes varias apps cliente para el mismo ID de remitente, es importante que notification_key_name
sea único en cada una.
Esto garantiza que los mensajes solo vayan a la app de destino deseada.
Formato de la respuesta
Una solicitud correcta muestra una notification_key
como la siguiente:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
Guarda la notification_key
y el notification_key_name
correspondiente para usarlos en otras operaciones.
Recupera una clave de notificación
Si necesitas recuperar una clave de notificación existente, usa notification_key_name
en una solicitud GET de la siguiente manera:
https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris Content-Type:application/json access_token_auth: true Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA project_id:SENDER_ID {}
Para cada solicitud GET de un nombre de clave de notificación determinado, el servidor muestra una string codificada única. Si bien cada string puede parecer una clave diferente, en realidad es un valor válido para "notification_key".
Agrega y quita dispositivos de un grupo de dispositivos
Para agregar o quitar dispositivos de un grupo existente, envía una solicitud POST con los valores add
o remove
en el parámetro operation
y proporciona los tokens de registro para agregarlos o quitarlos.
Solicitud HTTP POST
Por ejemplo, para agregar un
dispositivo con el token de registro bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...
a appUser-Chris
, deberías enviar esta solicitud:
{
"operation": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
Formato de la respuesta
Una solicitud correcta para agregar o quitar un dispositivo muestra una notification_key
como la siguiente:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
Claves de administración de grupos de dispositivos
En la siguiente tabla, se indican las claves para crear grupos de dispositivos y agregar y quitar miembros.
Parámetro | Uso | Descripción |
---|---|---|
operation |
Obligatorio, string | La operación que se ejecutará. Los valores válidos son create , add y remove . |
notification_key_name |
Obligatorio, string | El nombre que definió el usuario para el grupo de dispositivos que se creará o se modificará. |
notification_key |
Obligatorio (excepto para la operación create , string) |
El identificador único del grupo de dispositivos. Este valor se muestra en respuesta a una operación de tipo create realizada correctamente y es obligatorio para todas las operaciones posteriores que afecten al grupo de dispositivos. |
registration_ids |
Obligatorio, arreglo de strings | Los tokens de dispositivo que se agregarán o quitarán. Si quitas todos los tokens de registro existentes de un grupo de dispositivos, FCM lo borrará. |
Envía mensajes a grupos de dispositivos
Para enviar mensajes a grupos de dispositivos, usa la API de HTTP v1. Si actualmente envías mensajes a grupos de dispositivos que usan las APIs de envío heredadas obsoletas para HTTP o XMPP, o cualquiera de las versiones anteriores del Firebase Admin SDK para Node.js según los protocolos heredados, te recomendamos que migres a la API de HTTP v1 lo antes posible. Las APIs de envío heredadas se inhabilitarán y quitarán en junio de 2024.
El proceso para enviar mensajes a un grupo de dispositivos es muy similar al que se usa para enviar mensajes a un dispositivo individual, mediante el mismo método que permite autorizar solicitudes de envío. Establece el campo token
en la clave de notificación del grupo:
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"data":{
"hello": "This is a Firebase Cloud Messaging device group message!"
}
}
}
Comando cURL
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
"data":{
"hello": "This is a Firebase Cloud Messaging device group message!"
},
"token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send
Envía mensajes ascendentes a grupos de dispositivos
Si quieres enviar mensajes ascendentes a grupos de dispositivos en apps para Apple, la app cliente de Apple debe implementar FIRMessaging.sendMessage:
(void)sendMessage:(nonnull NSDictionary *)message to:(nonnull NSString *)receiver withMessageID:(nonnull NSString *)messageID timeToLive:(int64_t)ttl;