当浏览器未聚焦时,允许HTML5networking应用访问位置(iOS)

我最近build立了一个HTML5的Web应用程序,旨在通知用户当接近设定的目的地。 我将其设置为caching,以便在具有GPS或AGPSfunction的设备中无需networking访问即可使用。 因此,为了设置图片,这是一个网页应用程序,我已经caching并添加到主屏幕,使其一个本地应用程序,但它实际上只是一个HTML5应用程序(使用Javascript)。

该应用程序本身似乎正在工作(只要检测用户的位置,因为它不会返回任何错误,因为我知道否则会),但我已经确定了一个重大问题; HTML5地理定位function在短时间内停止工作,当应用程序不再焦点时(我知道这一点,因为当我运行它并更改为不同的应用程序时,地理位置指示器从iPhone的屏幕上消失,但是当我该应用程序的焦点,地理位置图标仍然)。

我打算让应用程序工作,以便当用户距离目的地不到200米时,应用程序的窗口成为焦点,并向用户发送警报,通知他们正在接近目的地。 因此它被devise成在后台工作。

问题是,至less在iPhone上看起来,一个Web应用程序只能在窗口焦点时才能访问地理位置(我假设是这样的,因为我进入iPhone的位置设置,看到在我的应用程序的位置只有在应用程序正在使用时才能跟踪位置的设置,即当应用程序在屏幕上可见时)。

我正在寻找的是一种方式 (在HTML5或JS中) ,即使应用程序在屏幕上不可见,也可以让Web应用程序继续监视用户的位置

这是我用来检测用户位置的代码:

function getLocation(){ if(geo_position_js.init()){ geo_position_js.getCurrentPosition(success_callback,error_callback,{enableHighAccuracy:true}); } else{ alert("Warning: unable to determine your position!"); } } function watchCurrentPosition() { navigator.geolocation.watchPosition(success_callback, error_callback, {enableHighAccuracy:true}); } function success_callback(p) { return [p.coords.longitude.toFixed(2), p.coords.latitude.toFixed(2)]; } function error_callback(p) { alert("Warning - error!"); } 

我在iPhone 6上运行iOS 8.1.3,如果这是任何使用。 提前致谢!

经过一些进一步的研究和testing,我发现了以下答案:

  1. 问题1 :我testing了第一个答案中build议的iFrame方法,但发现它不起作用,导致错误发生,如评论
  2. 问/答2 :这里的答案似乎是目前的情况。

所以只要应用程序本身就是目前的窗口,它应该似乎工作,我的testing会同意这个结论。 尽pipe它并不是一个完整的原生应用程序,但对于像我这样一个不是全职应用程序开发人员的人来说,这是一个代价昂贵的冒险,但这似乎是不可能的。 HTML5的地理位置function似乎更适用于Web应用程序,用户可以通过地图而不是地理位置监视来检查其位置。