Веб-приложение выбирает фоновую геолокацию с помощью сервисного работника и push-уведомлений - PullRequest
0 голосов
/ 23 сентября 2018

Я ищу решение для периодической выборки геолокации ( каждые 1 минуту ) в мобильном браузере.Я провел некоторое исследование и узнал, что получение геолокации в фоновом режиме (, когда телефон заблокирован или веб-приложение не активно ) невозможно.На переднем плане все работает нормально.

Я создаю веб-приложение, в котором я выбираю местоположение пользователя и отправляю его на свой сервер.Все работает нормально, до тех пор, пока пользователь не заблокирует свой телефон.Я пробовал много вещей для обходных путей:

  • setInterval для получения геолокации, отлично работает на переднем плане, но не работает в фоновом режиме
  • преобразовал мое веб-приложение в Android с помощью cordova, но та же проблема существовала
  • используется https://github.com/mauron85/cordova-plugin-background-geolocation этот плагин для Android
    • хорошо работает как на переднем, так и на заднем плане
    • , но тот же плагин не работает в iPhone ( я не сделалпроверил его, я искал в Google, прежде чем двигаться вперед )
    • Не стоит выпускать мое приложение с поддержкой только одной платформы ( android ), поэтому этот обходной путь также не удался для меня.
  • Я также подумал об использовании сервисных работников для своего веб-приложения, но кажется, что проблема сохраняется для фона https://github.com/w3c/ServiceWorker/issues/745

    У меня есть другое решение, но перед инвестированиемЯ хотел бы узнать, пробовал ли он кто-то уже сейчас.

    Я узнал о Push-уведомлениях:

    1. Клиент веб-приложения регистрируется в Push-уведомлениях
    2. Itпосылает суОбъект bscriber на мой сервер
    3. Мой сервер, использующий этот объект, отправляет сообщение на сервер push-уведомлений
    4. Сервер push-уведомлений отправляет сообщения моему клиенту веб-приложения
    5. Просыпается мой клиент веб-приложениямой сервисный работник на короткое время отображал уведомление
    6. Согласно документации Google:

      Примечание. В текущей реализации Chrome каждый раз, когда мы получаем push-сообщение, а у нас нетнаш сайт виден в браузере, мы должны отобразить уведомление.То есть мы не можем сделать это без уведомления пользователя.Если мы не отображаем уведомление, браузер автоматически создает его, чтобы сообщить пользователю, что приложение выполняет работу в фоновом режиме.

    Я не против показатьпостоянное уведомление пользователей, пока мое приложение не запустится.Я готов к этому компромиссу.

    Теперь, на шаге 5, когда я просыпаюсь, работник службы ** может ли я позвонить своему main.js ( main web)приложение ), которое может работать в фоновом режиме **, получит геолокацию и обновит ее на моем сервере?

    Кто-то уже пробовал это решение с успехом или неудачей, пожалуйста, сообщите.

...