如果被拒绝,请再次请求地理定位许可

IT技术 javascript jquery cordova geolocation
2021-02-25 02:23:34

我正在通过 phonegap 构建一个带有地理定位按钮的应用程序。

如果用户第一次拒绝地理定位许可,当他们再次单击地理定位按钮时,我如何再次请求许可?

我目前的代码结构是:

function getLocation() {    
    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition, positionError);

    } else {
        hideLoadingDiv()
        showError('Geolocation is not supported by this device')
    }
}

function positionError() {
    hideLoadingDiv()
    showError('Geolocation is not enabled. Please enable to use this feature')
}
3个回答

你不能。

您唯一可以做的就是在浏览器的设置 ( https://support.google.com/chrome/answer/142065?hl=en ) 中显示重新激活位置共享的说明

它们依赖于浏览器,我只是举了一个例子。
2021-04-21 02:23:34
拥有所有主要浏览器链接会很棒!
2021-04-28 02:23:34
在 2020 年,这是可能的。请检查我上面的代码。
2021-05-08 02:23:34
说明不会依赖于浏览器吗?
2021-05-12 02:23:34

这样做的两种方法:

  1. 如果您的 Chrome 版本大于 83.0.4103.97,请使用 URL 中的锁定图标

在此处输入图片说明

  1. 对于旧版本的 Chrome,下面的代码可以正常工作:

以下代码仅适用于 Chrome。

脚步:

  1. 打开 Chrome
  2. 打开控制台
  3. 在控制台复制
       var allowGeoRecall = true;
       var countLocationAttempts = 0;
  1. 在控制台中复制函数
    function getLocation() {   
        console.log('getLocation was called') 
        if(navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition, 
            positionError);
        } else {
            hideLoadingDiv()
            console.log('Geolocation is not supported by this device')
        }
    }

    function positionError() {    
        console.log('Geolocation is not enabled. Please enable to use this feature')
            
         if(allowGeoRecall && countLocationAttempts < 5) {
             countLocationAttempts += 1;
             getLocation();
         }
     }

    function showPosition(){
        console.log('posititon accepted')
        allowGeoRecall = false;
    }
  1. 在控制台中运行该函数
    getLocation();

运行后,您将被要求允许分享您的位置。如果您的回答是否定的,您将被再次询问,直到您同意为止。

提示:如果您的用户有否定的回应,请让他知道您为什么需要坐标。让他明白这一步对于 Web 应用程序的良好运行至关重要。

即使是谷歌案例也是一种解决方法。但很高兴看到它在某些浏览器中是可能的。我认为我们真的需要一个强大的权限 api,它在浏览器中受支持,例如我在上面的评论中提到的所有方法都支持的权限 api。
2021-04-22 02:23:34
另一个问号和建议:如果我们以某种方式绝对需要位置来使应用程序可用而用户仍然拒绝许可,并且我们找到了一种在用户拒绝时退出应用程序的方法,当应用程序再次启动时会记住这个选择还是我们可以要求位置重新获得许可。
2021-05-07 02:23:34
不幸的是,Firefox、Edge、Opera 等不允许这样做。Chrome 是唯一允许这种行为的浏览器。没有什么是你可以做的。您唯一能做的就是在提出要求之前确保客户知道您为什么需要他的位置,否则,更改它会很痛苦。
2021-05-14 02:23:34
确实如此,但由于 chrome 支持渐进式网络应用程序,与其他浏览器相比,它改变了其行为。为了与原生应用竞争,我们确实需要更好的 API。除了 Chrome,所有浏览器都会记住用户对地理位置问题的决定。为了作为用户更改它,您将不得不深入浏览器设置。
2021-05-16 02:23:34
适用于 Chrome 但不适用于 Firefox。它无休止地运行而无需在 Firefox 上打开标准提示。你有什么建议吗?
2021-05-20 02:23:34

这可以在页面信息中重置,可以通过单击 URL 旁边的锁定图标并允许位置来访问