Остановка фоновой активности javascript при пробуждении по центральному iOS, инициированному по местоположению

Я использую плагин Cordova Gimbal для мониторинга маяков Bluetooth в фоновом режиме. iOS запускает приложение в фоновом режиме и отправляет события наблюдения маяка Bluetooth; Gimbal SDK обрабатывает их и вызывает в плагине функцию обработчика objc. Я удалил любой код, который запускает события в объекте окна, чтобы предотвратить запуск любого javascript в 10-секундном окне выполнения.

Тем не менее, JavaScript в любом случае выполняется на этих фоновых событиях: мое приложение использует Angular, и дорого $digest циклы продолжаются в фоновом режиме. $interval (обертка для setInterval()) тоже работает. Кажется, что пока приложение работает в 10-секундном окне, оно просто продолжает запускать движок javascript, как если бы он был на переднем плане. Это существенно влияет на использование батареи для приложения. Как я могу заставить цикл событий Cordova просто прекратить выполнение, когда он завершил обработку обнаружения маяка?

версии: cordova 6.5.0 cordova-ios 4.3.1

1 ответ

Решение

Я обнаружил, что движок javascript не работает подобным образом, если мы переключимся на использование WKWebView. Таким образом, добавление этого плагина (и устранение последствий от коммутатора) устранило проблему.

Другие вопросы по тегам