У меня есть Android-приложение для отслеживания GPS, которое получает непрерывные push-сообщения, когда кому-то требуется позиция пользователя.
Каждый раз, когда я получаю push-сообщение, я запускаю службу определения местоположения, которая отправляет позиции в течение X времени, пока он получает push-сообщения.
Проблема началась с системы Android Doze, которая блокирует http-запросы. Я мог получать сообщения, но я никогда не мог отправить свою текущую позицию (я получил тайм-ауты HTTP-соединений и ошибку пинга в Google). Но я мог бы решить эту проблему с помощью запроса ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS и программного добавления приложения в белый список батареи.
Теперь приложение отлично работает на всех устройствах, кроме устройств Samsung старше S6, которые имеют систему «Smart manager». Я попытался вручную добавить приложение в белый список аккумуляторов Samsung (Настройки -> Обслуживание устройства -> Аккумулятор -> Неконтролируемые приложения), но проблема не устранена.
Если я держу устройство с выключенным экраном и без зарядки, через некоторое время оно перестает отправлять позиции, но все еще получает push-сообщения.
Может ли кто-нибудь помочь мне с волшебным решением? Я видел предполагаемый «список пакетов» со множеством приложений, которые Samsung автоматически включает в белый список (например, Facebook, Whatsapp, Life360), но я не смог найти, что мне нужно сделать, чтобы добавить мое приложение в этот список автоматически.