Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo enviar el dispositivo a la notificación del dispositivo usando FCM sin usar XMPP o cualquier otro script.

¿Hay alguna forma de enviar el mensaje de notificación Upstream a través de FCM desde un dispositivo android a otros dispositivos conectados con base de datos Firebase.

Sé que el servidor XMPP puede recibir los mensajes de arriba y enviar las notificaciones a los otros dispositivos.Para recibir mensajes enviados con la API de la parte superior que tengo que implementar un servidor XMPP, pero hay alguna otra manera ???

  • Configuración de configuración predeterminada de Android xmpp MUC
  • Android cómo enviar y recibir imagen y ubicación (usando mapa) en el chat de grupo usando xmpp-smack
  • Cómo utilizar Smack 4.1 en Android?
  • No hay respuesta de cliente remoto: error durante la transferencia de archivos usando asmack
  • XMPP FileTransfer - ¿Por qué falla el protocolo bytestreams?
  • Android - Smack presencia y "está escribiendo" características que no funcionan
  • Cómo saber Escribir Estado en XMPP openfire usando Smack
  • Cómo obtener el valor de atributo personalizado de un mensaje XMPP XML?
  • 3 Solutions collect form web for “Cómo enviar el dispositivo a la notificación del dispositivo usando FCM sin usar XMPP o cualquier otro script.”

    ¿Hay alguna manera de enviar el mensaje de notificación Upstream a través de FCM desde un dispositivo android a otros dispositivos conectados con base de datos Firebase?

    Actualmente no es posible enviar mensajes directamente de un dispositivo a otro.
    (O al menos no es posible sin introducir una enorme vulnerabilidad de seguridad: más detalles a continuación)

    Todos los detalles:

    1. ¡El envío de mensajes a un dispositivo de usuario es una acción muy seria!
      Basado en la carga útil de un mensaje puede dar lugar a spam, phishing, la ejecución de métodos internos.
    2. Desea que esta operación se permita sólo entidades de confianza, por lo que la API de envío de FCM requiere la SERVER-API-KEY en el encabezado de autenticación.
    3. La adición de la SERVER-API-KEY en el código de la aplicación (o la comunicación a la aplicación de alguna otra manera) NO ES SEGURA . Esto porque apk puede ser extraído, descompilado, inspeccionado, ejecutado en emuladores, ejecutado bajo depuración y así sucesivamente.

    La mejor manera de implementar esto hoy: es tener algún tipo de servidor entre los dos dispositivos:

     [DeviceA] -- please send message to B --> [SERVER] -- fcmSendAPI --> [DeviceB] 

    El servidor puede ser tan simple como una página PHP o una implementación XMPP más compleja.

    Un ejemplo en Node.js se puede encontrar aquí:
    Envío de notificaciones entre dispositivos con Firebase Database y Cloud Messaging

    Por último, después de 2 meses de intentar mantener script de servidor fiable, de repente encontré OneSignal . Es completamente gratuito, soporta mensajes push de dispositivo a dispositivo en iOS, Android, WP y navegadores.

    Espero, no voy a conseguir bandera para el spam de promoción, pero es actualmente la única (y más fácil) manera de ser completamente "backendless" .

    Además, es completamente seguro. Nadie puede enviar push a menos que conozca un ID de usuario de sistema operativo especial, que puede almacenar en Firebase Database protegido por reglas.

    UPD: No es un reemplazo para Firebase. Sólo tiene servicio push y nada más

    UPD2: Firebase ahora tiene funciones, y los ejemplos de su uso tiene el envío de FCM. Ahora no necesita ningún otro servidor o servicio. Leer más en ejemplos oficiales https://github.com/firebase/functions-samples

    Después de un montón de intentar finalmente tengo una solución y su trabajo perfectamente

    Paso 1: Incluya dos librerías.

     compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.google.firebase:firebase-messaging:9.2.0' 

    Paso 2: En su MainActivity o desde donde desea enviar notificaciones.

     OkHttpClient mClient = new OkHttpClient(); String refreshedToken = "";//add your user refresh tokens who are logged in with firebase. JSONArray jsonArray = new JSONArray(); jsonArray.put(refreshedToken); 

    Paso 3: Cree una tarea asíncrona que envíe notificaciones a todos los dispositivos.

     public void sendMessage(final JSONArray recipients, final String title, final String body, final String icon, final String message) { new AsyncTask<String, String, String>() { @Override protected String doInBackground(String... params) { try { JSONObject root = new JSONObject(); JSONObject notification = new JSONObject(); notification.put("body", body); notification.put("title", title); notification.put("icon", icon); JSONObject data = new JSONObject(); data.put("message", message); root.put("notification", notification); root.put("data", data); root.put("registration_ids", recipients); String result = postToFCM(root.toString()); Log.d("Main Activity", "Result: " + result); return result; } catch (Exception ex) { ex.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { try { JSONObject resultJson = new JSONObject(result); int success, failure; success = resultJson.getInt("success"); failure = resultJson.getInt("failure"); Toast.makeText(MainActivity.this, "Message Success: " + success + "Message Failed: " + failure, Toast.LENGTH_LONG).show(); } catch (JSONException e) { e.printStackTrace(); Toast.makeText(MainActivity.this, "Message Failed, Unknown error occurred.", Toast.LENGTH_LONG).show(); } } }.execute(); } String postToFCM(String bodyString) throws IOException { public static final String FCM_MESSAGE_URL = "https://fcm.googleapis.com/fcm/send"; final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(JSON, bodyString); Request request = new Request.Builder() .url(Url.FCM_MESSAGE_URL) .post(body) .addHeader("Authorization", "key=" + "your server key") .build(); Response response = mClient.newCall(request).execute(); return response.body().string(); } 

    Paso 4: Llame al onclick de su botón

      btnSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendMessage(jsonArray,"Hello","How ru","Http:\\google.com","My Name is Vishal"); } }); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.