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 !!!!

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.

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

  • No hay un método estático zzUr () en Firebase cuando intento utilizar Analytics con notificaciones
  • Obtener todos los temas suscritos de la mensajería en la nube de firebase
  • Android: Retraso en el mensaje de recepción en FCM (onMessageReceived)
  • ¿Las notificaciones no siempre se reciben por teléfono?
  • Icono de notificación con el nuevo sistema de mensajería de Cloud Firebase
  • Cómo implementar notificaciones push para android en React Native
  • Cuadrado gris como icono de notificación mediante notificaciones de Firebase
  • FCM devuelve error: NotRegistered después del primer mensaje
  • Androide. GcmNetworkManager en Firebase SDK?
  • Error "tipo de retorno int no es compatible con Intent" cuando se utiliza la clase FirebaseMessagingService
  • FCM Android - ID de mensaje nulo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.