Как WhatsApp обходит Doze

Почти все сообщения, которые я видел, подразумевают, что WhatsApp не использует GCM. Вместо этого он использует два сокета для связи с помощью FunXMPP.

Тогда как приложение активно на Marshmallow даже в режиме Doze?

Я не помню, чтобы давал разрешение REQUEST_IGNORE_BATTERY_OPTIMIZATIONSприложению. И да, приложение не внесено в белый список.

Ответы (1)

У меня не установлен WhatsApp, но у меня был аналогичный вопрос с Truacaller, поэтому я попытаюсь немного объяснить, как это работает и как я заставил Truecaller перейти в спящий режим.

В Android есть сервисы, которые можно запускать действиями (триггерами). Когда происходит какое-то событие, т.е. телефонный звонок или подключение к сети, это событие будет отправлено всем приложениям, использующим службу телефонных звонков, даже если эти приложения находятся в спящем режиме. Некоторые службы являются критически важными и не могут быть закрыты, когда система переходит в спящий режим. Приложение может избежать дремоты, сообщив об использовании этих служб. Я также не давал разрешения Truecaller, но он все время был активен. Я даже принудительно перевел его в спящий режим с помощью полной версии Greenify (с модулем Xposed), но он все равно был активен.

Что я сделал с Truecaller, так это установил DisableService (требуется root) и увидел, какие службы использовались этим приложением. Я не знал, какую службу мне следует отключить, поэтому я отключил все. Приложение, конечно, вылетало, когда я пытался его открыть. Поэтому я повторно включал некоторые службы и наблюдал, какие функции восстанавливаются. При этом я нашел сервисы, которые сделали Truecaller непобедимым. Теперь Truecaller работает только тогда, когда мне нужно проверить неизвестный номер.

Приложение, предложенное в ответе, не существует в магазине игр.
вы всегда можете найти приложение на альтернативных рынках apk, погуглив имя пакета: cn.wq.disableservice, но последняя доступная версия довольно старая, поэтому попробуйте найти более новую альтернативу