Я ищу решение для периодической выборки геолокации ( каждые 1 минуту ) в мобильном браузере.Я провел некоторое исследование и узнал, что получение геолокации в фоновом режиме (, когда телефон заблокирован или веб-приложение не активно ) невозможно.На переднем плане все работает нормально.
Я создаю веб-приложение, в котором я выбираю местоположение пользователя и отправляю его на свой сервер.Все работает нормально, до тех пор, пока пользователь не заблокирует свой телефон.Я пробовал много вещей для обходных путей:
- setInterval для получения геолокации, отлично работает на переднем плане, но не работает в фоновом режиме
- преобразовал мое веб-приложение в Android с помощью cordova, но та же проблема существовала
- используется https://github.com/mauron85/cordova-plugin-background-geolocation этот плагин для Android
- хорошо работает как на переднем, так и на заднем плане
- , но тот же плагин не работает в iPhone ( я не сделалпроверил его, я искал в Google, прежде чем двигаться вперед )
- Не стоит выпускать мое приложение с поддержкой только одной платформы ( android ), поэтому этот обходной путь также не удался для меня.
Я также подумал об использовании сервисных работников для своего веб-приложения, но кажется, что проблема сохраняется для фона https://github.com/w3c/ServiceWorker/issues/745
У меня есть другое решение, но перед инвестированиемЯ хотел бы узнать, пробовал ли он кто-то уже сейчас.
Я узнал о Push-уведомлениях:
- Клиент веб-приложения регистрируется в Push-уведомлениях
- Itпосылает суОбъект bscriber на мой сервер
- Мой сервер, использующий этот объект, отправляет сообщение на сервер push-уведомлений
- Сервер push-уведомлений отправляет сообщения моему клиенту веб-приложения
- Просыпается мой клиент веб-приложениямой сервисный работник на короткое время отображал уведомление
- Согласно документации Google:
Примечание. В текущей реализации Chrome каждый раз, когда мы получаем push-сообщение, а у нас нетнаш сайт виден в браузере, мы должны отобразить уведомление.То есть мы не можем сделать это без уведомления пользователя.Если мы не отображаем уведомление, браузер автоматически создает его, чтобы сообщить пользователю, что приложение выполняет работу в фоновом режиме.
Я не против показатьпостоянное уведомление пользователей, пока мое приложение не запустится.Я готов к этому компромиссу.
Теперь, на шаге 5, когда я просыпаюсь, работник службы ** может ли я позвонить своему main.js ( main web)приложение ), которое может работать в фоновом режиме **, получит геолокацию и обновит ее на моем сервере?
Кто-то уже пробовал это решение с успехом или неудачей, пожалуйста, сообщите.