ОК, здесь не такой ответ, более подробное объяснение ситуации, в которой вы находитесь.
Я уже был в такой же ситуации, и есть некоторые вещи, которые вы можете сделать, чтобы протестировать свое приложение React Native.в том же сценарии, что и в «режиме бездействия».Android представил это как способ ограничения использования процессора и батареи, пока телефон находится в режиме ожидания.Сам режим ожидания достигается, если телефон неподвижен и / или не взаимодействовал с пользователем в течение определенного времени.
Во-первых, с вашим текущим решением - вы хотите протестировать свое приложение в режиме ожидания / режима ожидания.Это можно сделать, выполнив следующие действия:
Тестирование приложения с помощью Doze
Вы можете проверить режим Doze, выполнив следующие действия:
https://developer.android.com/training/monitoring-device-state/doze-standby#testing_doze
Настройте аппаратное устройство или виртуальное устройство на системный образ Android 6.0 (уровень API 23) или выше.
- Подключите устройство к компьютеру разработчика и установите приложение.
- Запустите приложение и оставьте его активным.
Переведите систему в режим ожидания, введя следующую команду: $ adb shell dumpsys deviceidle force-idle
Когдаготово, выйдите из режима ожидания, введя следующую команду:
$ adb shell dumpsys deviceidle unforce
- Повторно активируйте устройство, выполнив следующую команду:
$ adb shell dumpsys battery reset
- Наблюдайте за поведением вашего приложения после повторной активации устройства.Убедитесь, что приложение корректно восстанавливается, когда устройство выходит из Doze.
Это даст вам сценарий тестирования для тестирования на Android.
Проблема:
Android дает приложениям все меньше и меньше контроля над подключением телефонов в фоновом режиме.Все сетевое соединение прекратится и откроется только в «Окне обслуживания».Состояние Android:
Ограничение Doze на доступ к сети также может повлиять на ваше приложение, особенно если оно использует сообщения в реальном времени, такие как тикки или уведомления.Если вашему приложению требуется постоянное подключение к сети для получения сообщений, вам следует использовать Firebase Cloud Messaging (FCM), если это возможно.
Проблема:
Проблема не в том, чтоприложение в фоновом режиме, ваша проблема будет использовать сеть в фоновом режиме.Например, безголовый JS будет запускаться - запускаемые задачи будут выполняться, НО он может не иметь возможности делать какие-либо запросы для сети.
Возможные решения:
Использование аварийных сигналов
Если вам нужно установить аварийные сигналы, которые срабатывают в режиме ожидания, используйте setAndAllowWhileIdle()
или setExactAndAllowWhileIdle()
.
Сигналы тревоги, установленные с помощью setAlarmClock()
, продолжают работать нормально - система выходит из режима ожидания незадолго до срабатывания этих сигналов тревоги.
Помещение вашего приложения вБелый список (перейдите по ссылке выше для приемлемых случаев использования).
iOS:
Для React Native, я использовал это:
https://github.com/mauron85/react-native-background-geolocation
Это также работает для Android, однако режим Doze (в моемслучай) не будет отправлять сетевые запросы.