【问题标题】:How can I run watchposition on background using service worker Angular 6如何使用服务工作者 Angular 6 在后台运行监视位置
【发布时间】:2018-09-28 10:01:39
【问题描述】:

我正在使用 Angular 6 PWA,我想检查用户进入或离开特定区域时的位置。 “地理围栏”;

当用户在我的应用程序上时它可以工作,但我想要的是即使在浏览器关闭时也在后台执行它。

地理围栏代码

var id, target, options;

function success(pos) {
  var crd = pos.coords;

  if (target.latitude === crd.latitude && target.longitude === crd.longitude) {
    console.log('Congratulations, you reached the target');
    navigator.geolocation.clearWatch(id);
  }
}

function error(err) {
  console.warn('ERROR(' + err.code + '): ' + err.message);
}

target = {
  latitude : 0,
  longitude: 0
};

options = {
  enableHighAccuracy: false,
  timeout: 5000,
  maximumAge: 0
};

id = navigator.geolocation.watchPosition(success, error, options);

【问题讨论】:

    标签: javascript angular service-worker progressive-web-apps


    【解决方案1】:

    很遗憾,目前现有的 Web API 无法做到这一点。有一个 w3c 规范,但看起来它已经被放弃了:

    https://www.w3.org/TR/geofencing/

    要获得这种功能,您必须构建一个原生应用程序。

    【讨论】:

      【解决方案2】:

      不可能。
      当浏览器网络应用程序移至后台时,您将无法再访问位置信息。
      或许可以考虑构建一个原生应用程序。

      【讨论】:

      • 即使我使用具有后台同步的服务器 Worker ?
      • 是的,我相信仍然没有。浏览器应用需要用于定位服务。
      猜你喜欢
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      相关资源
      最近更新 更多