studio receive notification myfirebasemessagingservice fcm enviar app android asp.net firebase-cloud-messaging

android - receive - Envío de FCM(Firebase Cloud Messaging) a múltiples dispositivos



receive firebase push notification android (3)

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

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

Mensajes de tema

La mensajería de tema de Firebase Cloud Messaging (FCM) le 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 de tema según sea necesario, y Firebase maneja el enrutamiento de mensajes y entrega el mensaje de manera confiable a los dispositivos correctos.

Por ejemplo, los usuarios de una aplicación de pronóstico del tiempo local podrían 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 puntajes de los juegos en vivo para 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. Normalmente, "grupo" se refiere a un conjunto de dispositivos diferentes que pertenecen a un solo usuario . Todos los dispositivos en un grupo comparten una clave de notificación común, que es el token que FCM usa para desplegar mensajes a todos los dispositivos en el grupo.

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

El número máximo de miembros permitidos para una notification_key es 20.

Para obtener más detalles, puede consultar el envío a múltiples dispositivos en documentos de FCM .

Ejecuto este código para enviar notificaciones al dispositivo móvil usando la biblioteca FCM

public string PushFCMNotification(string deviceId, string message) { string SERVER_API_KEY = "xxxxxxxxxxxxxxxxxxxxxxx"; var SENDER_ID = "xxxxxxxxx"; var value = message; WebRequest tRequest; tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send"); tRequest.Method = "post"; tRequest.ContentType = "application/json"; tRequest.Headers.Add(string.Format("Authorization: key={0}", SERVER_API_KEY)); tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID)); var data = new { to = deviceId, notification = new { body = "This is the message", title = "This is the title", icon = "myicon" } }; var serializer = new JavaScriptSerializer(); var json = serializer.Serialize(data); Byte[] byteArray = Encoding.UTF8.GetBytes(json); tRequest.ContentLength = byteArray.Length; Stream dataStream = tRequest.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); WebResponse tResponse = tRequest.GetResponse(); dataStream = tResponse.GetResponseStream(); StreamReader tReader = new StreamReader(dataStream); String sResponseFromServer = tReader.ReadToEnd(); tReader.Close(); dataStream.Close(); tResponse.Close(); return sResponseFromServer; }

ahora, cómo enviar un mensaje a varios dispositivos, suponga que el parámetro string deviceId reemplazado por List devicesIDs.

puede usted ayudar


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 realmente desea mantener un registro de sus ID 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!", } }


Por favor 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 te ayude a enviar push en múltiples 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.