【问题标题】:How to request user permission for html5 geolocation api in web apps?如何在 Web 应用程序中请求用户对 html5 地理位置 api 的权限?
【发布时间】: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 浏览器上对其进行测试。但它马上就说用户拒绝了许可。它甚至不问我是否要允许它。我怎样才能得到它来请求许可。我在网站设置中,也应该请求该位置的许可。

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

有谁知道怎么回事?

谢谢

【问题讨论】:

    标签: javascript android html google-chrome geolocation


    【解决方案1】:

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

    【讨论】:

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