Почти все сообщения, которые я видел, подразумевают, что WhatsApp не использует GCM. Вместо этого он использует два сокета для связи с помощью FunXMPP.
Тогда как приложение активно на Marshmallow даже в режиме Doze?
Я не помню, чтобы давал разрешение REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
приложению. И да, приложение не внесено в белый список.
У меня не установлен WhatsApp, но у меня был аналогичный вопрос с Truacaller, поэтому я попытаюсь немного объяснить, как это работает и как я заставил Truecaller перейти в спящий режим.
В Android есть сервисы, которые можно запускать действиями (триггерами). Когда происходит какое-то событие, т.е. телефонный звонок или подключение к сети, это событие будет отправлено всем приложениям, использующим службу телефонных звонков, даже если эти приложения находятся в спящем режиме. Некоторые службы являются критически важными и не могут быть закрыты, когда система переходит в спящий режим. Приложение может избежать дремоты, сообщив об использовании этих служб. Я также не давал разрешения Truecaller, но он все время был активен. Я даже принудительно перевел его в спящий режим с помощью полной версии Greenify (с модулем Xposed), но он все равно был активен.
Что я сделал с Truecaller, так это установил DisableService (требуется root) и увидел, какие службы использовались этим приложением. Я не знал, какую службу мне следует отключить, поэтому я отключил все. Приложение, конечно, вылетало, когда я пытался его открыть. Поэтому я повторно включал некоторые службы и наблюдал, какие функции восстанавливаются. При этом я нашел сервисы, которые сделали Truecaller непобедимым. Теперь Truecaller работает только тогда, когда мне нужно проверить неизвестный номер.
Рохит
Себастьян