当移动设备处于睡眠模式或浏览器处于后台时,如何使用 Web 应用程序在移动浏览器中使用 HTML Geolocation API 获取位置?

Posted

技术标签:

【中文标题】当移动设备处于睡眠模式或浏览器处于后台时,如何使用 Web 应用程序在移动浏览器中使用 HTML Geolocation API 获取位置?【英文标题】:How to get location using HTML Geolocation API in mobile browser using web application when mobile is in sleep mode or when browser is in background? 【发布时间】:2020-07-06 20:14:15 【问题描述】:

我正在使用 html Geolocation API 在一段时间后获取用户在 Web 应用程序中的位置。当 Web 应用程序处于前台时,它在移动浏览器上运行良好,即使在 iPhone 上的 safari 和 android 上的 google chrome 中也是如此。但是,当浏览器中的 Web 应用程序进入后台或移动设备进入睡眠模式时,我无法使用 HTML Geolocation API 获取位置。下面是示例代码

<script>

setInterval(function() 
    getLocation();
, 10000);

var x = document.getElementById("demo");

function getLocation() 
  if (navigator.geolocation) 
    navigator.geolocation.getCurrentPosition(showPosition);
   else  
    x.innerHTML = "Geolocation is not supported by this browser.";
  


function showPosition(position) 
 // save the position

</script>   

有什么帮助吗?

【问题讨论】:

我认为这可能会有所帮助:***.com/questions/5927284/… 【参考方案1】:

首先,您可能应该每隔一段时间使用 watchPosition() 而不是 getCurrent。

其次,地理定位在后台不起作用:-(

这个要求是众所周知的,已经有 5 年多了。见冗长讨论here

还为years 提供了 POC 设计和解决方案

迄今为止没有人可以解决问题!然而 W3C 拒绝规范它,浏览器拒绝实现它 :-( 原因只有他们自己知道。

【讨论】:

以上是关于当移动设备处于睡眠模式或浏览器处于后台时,如何使用 Web 应用程序在移动浏览器中使用 HTML Geolocation API 获取位置?的主要内容,如果未能解决你的问题,请参考以下文章

设备处于睡眠模式时不会出现 Android GCM 通知

设备处于睡眠模式时的 URLConnection 不起作用

Android 在设备处于睡眠状态时获取 GPS 坐标更新(屏幕已关闭)

如何在设备处于睡眠模式时的某个特定时间在 android 中推送本地通知

当 iphone 处于睡眠模式/锁定时,如何使用视频播放?

如何在设备休眠时保持 GPS 处于全功率状态