浏览器未聚焦时允许HTML5 Web应用访问位置(iOS)

时间:2015-02-18 04:57:11

标签: javascript ios iphone html5 geolocation

我最近构建了一个HTML5网络应用程序,旨在通知用户何时接近设定目的地。我已将其设置为缓存,因此可以在没有Web访问的情况下使用具有GPS或AGPS功能的设备。因此,要设置图片,它是一个我已缓存并添加到主屏幕的Web应用程序,使其喜欢本机应用程序,但它实际上只是一个HTML5应用程序(使用Javascript)。< / p>

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

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

问题在于iPhone上似乎至少一个网络应用程序只能在窗口聚焦时才能进行地理位置访问(我认为就是这种情况,因为我进入了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上在iPhone 6上运行它,如果它有用的话。提前谢谢!

1 个答案:

答案 0 :(得分:0)

经过进一步的研究和测试后,我找到了以下答案:

  1. Q/A 1:我测试了第一个答案中建议的iFrame方法,但发现它不起作用并导致错误发生,如评论中所示
  2. Q/A 2:目前答案似乎就是这样。
  3. 因此,只要应用程序本身是当前窗口,它应该可以正常工作,我的测试将同意这个结论。如果不是一个完全的本机应用程序,对于像我这样不是全职应用程序开发人员的人来说这是一个有点代价的冒险,似乎是不可能的。 HTML5的地理定位功能似乎更适用于网络应用,用户可以通过地图而不是地理位置监控来检查他们的位置!