如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?

Posted

技术标签:

【中文标题】如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?【英文标题】:How to request user permission for html5 geolocation api in web apps? 【发布时间】:2017-02-04 17:32:03 【问题描述】:

我有这段代码可以使用 html5 地理位置

    this.getCurrentLocation = function(callback) 
        if (navigator.geolocation) 
            navigator.geolocation.getCurrentPosition(function (pos) 
                callback(
                    'lat' : pos.coords.latitude,
                    'lng' : pos.coords.longitude        
                );
            , function (error) 
                switch(error.code) 
                    case error.PERMISSION_DENIED:
                        alert("Could not get your location. User denied the request for Geolocation.");
                        break;
                    case error.POSITION_UNAVAILABLE:
                        alert("Could not get your location. Location information is unavailable.");
                        break;
                    case error.TIMEOUT:
                        alert("Could not get your location. The request to get user location timed out.");
                        break;
                    case error.UNKNOWN_ERROR:
                        alert("Could not get your location. An unknown error occurred.");
                        break;
                    default:
                        alert("Could not get your location. An unknown error occurred.");
                
                callback(null);
            , 
                maximumAge: 500000, 
                enableHighAccuracy:true, 
                timeout: 6000
            );
        
    ;

我正在 android 手机上的 chrome 浏览器上对其进行测试。但它马上就说用户拒绝了许可。它甚至不问我是否要允许它。我怎样才能得到它来请求许可。我在网站设置中,也应该请求该位置的许可。

如果我在桌面上尝试,它可以工作。

有谁知道怎么回事?

谢谢

【问题讨论】:

【参考方案1】:

这不是通过 HTML 或 javascript 完成的(这是一件好事)。必须通过用户的应用设置来完成。否则,开发人员只能将接受使用位置服务的代码编写到他们的应用程序中,绕过用户的意愿。

【讨论】:

但在我的应用设置中,在谷歌浏览器上,它说要先询问。问题是网站甚至没有询问。 关闭该设置,然后再次打开以重置它。一旦应用询问您并得到回应,它就不会再询问。 我试过了,但它仍然进入用户拒绝权限。 它必须是设备/用户代理设置。这无法通过代码确定。在另一台设备上试试。 我把它改成了HTTPS。除非其安全连接,否则 Android 上的 Chrome 无法用于地理定位。

以上是关于如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5中Web Sql学后总结

HTML5Web存储

如何使用多个发送(请求)实现 HTML5 WEB-Socket

Web 通知 (HTML5) - 它是如何工作的?

如何使用 AJAX 请求将用户在类变量中的 HTML5 位置从 JavaScript 传递到 Rails 控制器?

将OAuth请求与响应匹配