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


Notificación de emisión de GCM Cordova no funciona cuando no se ejecuta la aplicación

La aplicación está en PhoneGap. Estoy utilizando la función de notificación push con https://github.com/marknutter/GCM-Cordova

Implementé toda la función y funcionó bien hasta ayer. Cuando revisé la aplicación el día anterior, la notificación de envío no funciona cuando la aplicación no se está ejecutando. Todas las notificaciones se reciben en mi dispositivo, al hacer clic en el mensaje se abre la aplicación.

Pero los controles no están recibiendo en la parte javascript donde maneja la notificación de mensajes.

Código del archivo GCMIntentService.java:

JSONObject json; json = new JSONObject().put("event", "message"); json.put("message", extras.getString("message")); json.put("link", extras.getString("link")); Log.v(ME + ":onMessage ", json.toString()); GCMPlugin.sendJavascript( json ); // Send the MESSAGE to the Javascript application 

Este código funcionará cuando se reciba el mensaje. Pero en ese momento, la aplicación no se está ejecutando.

Cuando hago clic en el mensaje de notificación, la aplicación se abre como de costumbre, no registrando el evento de mensaje; Por lo tanto no obtener el control en JavaScript para manejar notificación push.

El código para CORDOVA_GCM_script.js está disponible en:

Https://github.com/marknutter/GCM-Cordova/blob/master/assets/www/CORDOVA_GCM_script.js

Nota : funciona bien cuando se ejecuta la aplicación.

EDIT: La notificación se ejecuta a veces. JavaScript está recibiendo un mensaje de evento al azar.

EDIT 2:

Definitivamente sé el problema.

Desde el archivo java, activa el código javascript al abrir la aplicación haciendo clic en el mensaje de notificación push. Pero en ese momento, el WebView no está cargado, por lo que no es capaz de ejecutar el script (que es un desencadenador de evento). Esta es la condición, todo el mundo que usa el complemento experimentará lo mismo. ¿Hay alguna solución o alguna solución para ello?

¿Estoy haciendo algo mal?

  • Xiaomi no recibe notificación cuando la aplicación no se está ejecutando
  • Lados negativos de C2dM
  • Cómo analizar GCM responder a eliminar identificación de registro no válido del servidor con php
  • ¿Es posible utilizar GCM sin la cuenta de Google y Google Play Services en el dispositivo?
  • ¿Cómo enviar notificación al cliente cuando Firebase tiene una nueva entrada?
  • ¿Hay alguna forma de notificaciones push en libGDX (proyectos Android e iOS)?
  • Notificaciones de usuarios - ¿Cómo recuperar un notification_id perdido de GCM?
  • El icono de notificación push de Android 5.1 está en blanco
  • 3 Solutions collect form web for “Notificación de emisión de GCM Cordova no funciona cuando no se ejecuta la aplicación”

    He encontrado una solución simple. En el GCMIntentService, justo antes de enviar javascript, compruebe si se ha cargado la vista web:

     while (GCMPlugin.gwebView == null || GCMPlugin.gwebView.webView == null || !GCMPlugin.gwebView.webView.isEnabled()) { // Wait until webView is enabled } GCMPlugin.sendJavascript(json); 

    Esto funciona para mí … tal vez es una buena opción para añadir también un tiempo de espera con el fin de evitar un bucle infinito (no debería suceder, pero …)

    Davide

    El uso del complemento GCM-Cordova no gestionará correctamente la notificación si la aplicación no se está ejecutando. Es porque el WebView no se cargó en el momento en que el complemento inicia el javascript.

    Solución:

    • Se ha modificado el código del complemento para guardar los datos del mensaje como temporales cuando llega el aviso.
    • Creado otro plugin con métodos para leer estos datos cargados y borrar datos.
    • Llame a mi método de complemento personalizado en deviceready y compruebe si hay algún dato.
    • Si hay alguno, borre los datos almacenados localmente e invoque el método para mostrar el mensaje de aviso.

    Finalmente capaz de resolver este problema con la ayuda de dos plugins – GCM-Cordova y plugin personalizado.

    IvenMS – Yo también estoy teniendo el mismo problema por lo que no son el único. Si entiendo praneetloke correctamente, las Notificaciones de envío no funcionarán con las aplicaciones de PhoneGap que no se estén ejecutando actualmente.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.