Saltar al contenido

Envío de FCM (Firebase Cloud Messaging) a varios dispositivos

Solución:

Actualización: para v1, parece que registration_ids ya no es compatible. Se recomienda encarecidamente que se utilicen temas en su lugar. Solo los parámetros que se muestran en la documentación son compatibles con v1.


Simplemente use el parámetro registration_ids en lugar de to en su carga útil. Dependiendo también de su caso de uso, puede usar Mensajería de tema o Mensajería de grupo de dispositivos.

Mensajes de tema

La mensajería temática de Firebase Cloud Messaging (FCM) te permite enviar un mensaje a varios dispositivos que han optado por un tema en particular. Según el modelo de publicación / suscripción, la mensajería de temas admite suscripciones ilimitadas para cada aplicación. Usted redacta mensajes temáticos según sea necesario, y Firebase maneja el enrutamiento de mensajes y la entrega del mensaje de manera confiable a los dispositivos adecuados.

Por ejemplo, los usuarios de una aplicación de pronóstico del tiempo local pueden optar por un tema de “alertas de clima severo” y recibir notificaciones de tormentas que amenacen áreas específicas. Los usuarios de una aplicación deportiva pueden suscribirse a actualizaciones automáticas en los resultados de los juegos en vivo de sus equipos favoritos. Los desarrolladores pueden elegir cualquier nombre de tema que coincida con la expresión regular: "/topics/[a-zA-Z0-9-_.~%]+".


Mensajería de grupo de dispositivos

Con la mensajería de grupo de dispositivos, los servidores de aplicaciones pueden enviar un solo mensaje a varias instancias de una aplicación que se ejecuta en dispositivos que pertenecen a un grupo. Por lo general, “grupo” se refiere a un conjunto de diferentes dispositivos que pertenecen a un solo usuario.. Todos los dispositivos de un grupo comparten una clave de notificación común, que es el token que usa FCM para distribuir mensajes a todos los dispositivos del grupo.

La mensajería de grupo de dispositivos hace posible que cada instancia de aplicación en un grupo refleje el estado de mensajería más reciente. Además de enviar mensajes en sentido descendente a una clave de notificación, puede permitir que los dispositivos envíen mensajes en sentido ascendente a un grupo de dispositivos. Puede utilizar la mensajería de grupo de dispositivos con el servidor de conexión XMPP o HTTP. El límite de carga útil de datos es 2 KB cuando se envía a dispositivos iOS y 4 KB para otras plataformas.

El número máximo de miembros permitido para un notification_key es 20.


Para obtener más detalles, puede consultar los documentos de Envío a varios dispositivos en FCM.

Debe crear un tema y permitir que los usuarios se suscriban a ese tema. De esa manera, cuando envía un mensaje de FCM, todos los usuarios suscritos lo reciben, excepto que usted realmente desea mantener un registro de sus identificaciones para fines especiales.

FirebaseMessaging.getInstance().subscribeToTopic("news");

Vea este enlace: https://firebase.google.com/docs/cloud-messaging/android/topic-messaging

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

{
  "to": "/topics/news",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!",
   }
}

Siga estos pasos.

public String addNotificationKey(
    String senderId, String userEmail, String registrationId, String idToken)
    throws IOException, JSONException {
URL url = new URL("https://android.googleapis.com/gcm/googlenotification");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);

// HTTP request header
con.setRequestProperty("project_id", senderId);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
con.setRequestMethod("POST");
con.connect();

// HTTP request
JSONObject data = new JSONObject();
data.put("operation", "add");
data.put("notification_key_name", userEmail);
data.put("registration_ids", new JSONArray(Arrays.asList(registrationId)));
data.put("id_token", idToken);

OutputStream os = con.getOutputStream();
os.write(data.toString().getBytes("UTF-8"));
os.close();

// Read the response into a string
InputStream is = con.getInputStream();
String responseString = new Scanner(is, "UTF-8").useDelimiter("\A").next();
is.close();

// Parse the JSON string and return the notification key
JSONObject response = new JSONObject(responseString);
return response.getString("notification_key");

}

Espero que el código anterior le ayude a enviar mensajes push en varios dispositivos. Para obtener más detalles, consulte este enlace https://firebase.google.com/docs/cloud-messaging/android/device-group

*** Nota: debe leer sobre la creación / eliminación de grupos en el enlace anterior.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *