Casi todas las publicaciones que vi implican que WhatsApp no usa GCM. En su lugar, utiliza dos enchufes para comunicarse mediante FunXMPP.
Entonces, ¿cómo está activa la aplicación en Marshmallow incluso en modo Doze?
No recuerdo haber dado el permiso REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
a la Aplicación. Y sí, la aplicación no está en la lista blanca
No tengo WhatsApp instalado, pero tuve una pregunta similar con Truacaller, así que intentaré explicar un poco cómo funciona y cómo obligué a Truecaller a hibernar.
En Android existen servicios que se pueden ejecutar mediante acciones (triggers). Cuando sucede algún evento, es decir. llamada telefónica o enchufado, este evento se enviará a todas las aplicaciones que usan el servicio de llamadas telefónicas, incluso si estas aplicaciones están hibernadas. Algunos servicios son críticos y no se pueden cerrar cuando el sistema entra en suspensión. La aplicación puede evitar quedarse dormida informando para usar estos servicios. Tampoco le di permiso a Truecaller pero estuvo activo todo el tiempo. Incluso lo forcé a hibernar con la versión completa de Greenify (con el módulo Xposed) pero estaba activo de todos modos.
Lo que hice con Truecaller fue instalar DisableService (se necesita raíz) y vi qué servicios usaba esta aplicación. No sabía qué servicio debía deshabilitar, así que deshabilité todos. La aplicación, por supuesto, se colgó cuando traté de abrirla. Así que estaba habilitando repetidamente algunos servicios y observando qué funciones se estaban restaurando. Con eso encontré servicios que hicieron a Truecaller invencible. Ahora Truecaller funciona solo cuando necesito verificar un número desconocido.
Rohit
Sebastián