Mensaje de datos FCM no recibido en Android cuando la aplicación está en segundo plano
Me enfrento a un problema muy extraño; Tenía una versión anterior de mi aplicación publicada usando GCM 8.4.0 que funcionó bien. He actualizado algún código, sin cambiar nada acerca de GCM y me di cuenta de que los mensajes que no recibieron más cuando la aplicación estaba en segundo plano. Esto en varios dispositivos diferentes.
Como no pude encontrar ninguna explicación, emigré a FCM. Hice pocos intentos fallidos y empezó a funcionar!?! Entonces pude enviar varios mensajes diferentes con éxito sin cambiar nada! Houra !!!!
- Temas en la mensajería de Cloud Firebase?
- Error de integración firebase: los servicios de Google Play están desactualizados
- Android no puede extender el servicio de mensajería de Firebase
- Cómo manejar la notificación de Fire Base cuando la aplicación está en primer plano
- ANR con FCM y construir variantes con applicationIdSuffix
Justo antes de generar mi firmado APK, hice una última prueba! Arrggghhhhh …. los mensajes no fueron recibidos más cuando la aplicación estaba en el fondo !!!!
Hice la prueba con mi servidor, con Advance REST Request, en las mismas condiciones que usé para intentos exitosos y de ninguna manera, funciona cuando la aplicación está en primer plano, pero no más en absoluto cuando la aplicación está en segundo plano !!!
¿Usted exeperience tal problema ???
Preciso que cuando reciba un mensaje con la aplicación en primer plano y genere una notificación de ella, hay dos comportamientos diferentes:
-
Cuando la aplicación puede recibirla en segundo plano, la notificación permanece cuando deslizo la aplicación de la lista de aplicaciones recientes.
-
Cuando la aplicación no puede recibirla en segundo plano, como en mi caso actual, la notificación generada se elimina cuando deslizo la aplicación.
¿Significa algo útil?
Editar
He actualizado a 9.2.0, pero el problema sigue siendo.
- ¿Cómo obtener la notificación de Heads Up en android mediante la mensajería de Cloud Firebase (notificación) mientras la aplicación no está en primer plano?
- Al hacer clic en la notificación no se abre la actividad mencionada
- Firebase disparando demasiadas alarmas
- Firebase 401 error no autorizado FCM
- FirebaseInstanceId: la sincronización de fondo falló: PHONE_REGISTRATION_ERROR, vuelva a intentar en 10s / 20s / 40s
- Aclaración sobre Firebase Cloud Messaging "conexiones simultáneas"?
- Error al resolver 'com.google.firebase: firebase-messaging: 11.0.4' en Android Studio 2.3.3
- Firebase Expandable Notification Mostrar imagen cuando la aplicación está en segundo plano
Así que lo tengo trabajando hace unas semanas, pero la reconstrucción del proyecto con varias actualizaciones, estudio, sdk, java, no puedo conseguir el mismo proyecto de trabajo ya más.
Pasé pocas horas para explorar la web, sobre todo Stackoverflow sobre este problema y la respuesta que podía hacer es "Depende …" Personalmente lo tengo funcionando, ya no funciona, para algunos de ustedes funciona, para Algunos otros no …
Así que empecé desde el proyecto quickstart-android de FireBase y lo que puedo decir es:
No, los mensajes de datos no se reciben cuando la aplicación está en segundo plano. O tal vez diría: los mensajes de datos no se reciben más cuando la aplicación está en segundo plano.
Así que hago la pregunta a Firebase-apoyo esperando una buena respuesta. Yo estaba muy decepcionado, la respuesta es:
Hola equipo,
Gracias por llegar a nosotros.
En realidad, no se supone que la carga útil de datos se reciba en segundo plano. Los intentos de mensaje de datos se entregan a la aplicación y se reciben dentro del método onMessageReceived () (que no se activa en segundo plano). Sólo se mostrarán mensajes / notificaciones cuando la aplicación esté en segundo plano.
…
Sinceramente, K …
No sé lo que piensa de eso, pero para mí es un verdadero desastre!
No sé si es una situación temporal o no, tal vez alguien podría tener información más precisa porque no puedo creer que la recepción de mensajes de fondo no es compatible más. O al menos para nosotros porque según mis registros, el dispositivo recibe mensajes de fondo que muestran el siguiente mensaje:
07-18 15:28:34.371 3068-3068/? W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.google.firebase.quickstart.fcm (has extras) }
¡Pero no se invoca la devolución de llamada onMessageReceive()
!
EDICIÓN IMPORTANTE
La construcción de este tipo de proyecto, por ejemplo el proyecto quickstart-android de FireBase de las herramientas de línea de comandos, funciona perfectamente, pero no cuando se crea desde el botón de depuración de IDE. Si desea crear su proyecto desde el botón de depuración de IDE, utilice Android Studio 1.5 extraño pero funciona perfectamente).
Caso de prueba completo está disponible aquí .
Lo siento, no prestar atención a que delay_while_idle
fue configurado como verdadero por error.
Editar
El comportamiento es extraño de todos modos, porque incluso con delay_while_idle= true
, mi aplicación publicada previamente usando GCM 8.4.0 y construida con Studio 1.5.2, recibe mensajes mientras está en segundo plano.
El mismo proyecto reconstruido con Studio 2.1.2. (Nada cambió en el proyecto excepto la actualización solicitada a gradle 2.1.2) no recibe los mensajes mientras está en segundo plano, que es el comportamiento esperado.
¡Pero no lo recibe tampoco al venir en primer plano!
Actualizar a FCM 9.2.0 funciona de manera similar, es decir, no recibe mensajes mientras está en segundo plano, ok, pero no lo recibe al venir en primer plano, lo que no parece correcto.
** EDIT 2 **
Definitivamente no puedo conseguir que funcione más
- Recursos de referencia de otro módulo en Android Studio
- Android Studio no identifica el archivo xml como archivo de diseño