Google Play Services 8.4.0 rompe Google Cloud Messaging para Android si también se usa iOS

Hay varias publicaciones que describen aspectos de este problema, pero aún no ha habido una respuesta satisfactoria, por lo que intento recopilarlas todas aquí con la esperanza de obtener una respuesta autorizada que pueda abordar todos estos problemas.

Después de actualizar los servicios de Google Play a 8.4.0, las notificaciones push se muestran por sí mismas

La notificación de Android no muestra su contenido cuando la aplicación no se está ejecutando

¿Qué significa gcm.notification.e = 1 en la carga útil de notificaciones push en Android?

La esencia del problema es que si crea un mensaje GCM solo con datos (es decir, no utiliza el campo de notificación y, por lo tanto, no tiene la intención de que genere una notificación) Y se incluye content_available = True (que es necesario para obtener el comportamiento deseado de clientes iOS), luego desde 8.4.0, esto genera una notificación en blanco no deseada en Android.Antes de 8.4.0, todo funcionaba bien.

Los detalles específicos del problema parecen ser que si el cliente de Android recibe un campo GCM que no comprende, en lugar de simplemente ignorarlo, agrega un campo "e = 1" (presumiblemente "e" significa error?) Como notificaciónincluso si no hubo notificación en el mensaje antes, provocando que active el código que hace aparecer una notificación, en lugar del código que lo dirige a la aplicación que se va a manejar.

Posible solución: imagino que uno podría realizar un seguimiento en el servidor de qué clientes eran iOS y qué clientes eran Android, y solo incluir la etiqueta content_available para los clientes iOS, y este problema se resolvería. Sin embargo, no era necesario hacer esto en el pasado, y mi sistema fue construido con la idea de que podría ser independiente de los tipos de clientes, como parece ser.

El hecho de que el indicador content_available provoque repentinamente estas notificaciones en blanco en Android parece un error que se introdujo recientemente, pero sería muy útil saber si en realidad es un error que podría solucionarse en 8.5.0 (en cuyo caso podría construir con 8.3.0 por ahora hasta que salga 8.5.0), o si está destinado a ser una solución permanente. Si esto no va a cambiar, ¿es la solución correcta hacer un seguimiento de qué ID de registro de GCM pertenecen a dispositivos iOS y cuáles pertenecen a dispositivos Android, y luego enviar dos solicitudes de GCM separadas cada vez?

Gracias de antemano por cualquier respuesta oficial a esta pregunta del equipo de Google.

Respuestas a la pregunta(3)

Su respuesta a la pregunta