有没有办法重新询问用户获取他的位置的权限,或者使用带有 javascript 的地理定位 API 删除旧设置?

Posted

技术标签:

【中文标题】有没有办法重新询问用户获取他的位置的权限,或者使用带有 javascript 的地理定位 API 删除旧设置?【英文标题】:Is there any way to re ask the user permission to get his location, or to remove older setting using geolocation API with javascript? 【发布时间】:2020-05-06 19:19:35 【问题描述】:

我正在构建一个应用程序,我需要用户的位置来完成他的注册,但我该如何让他允许?我的意思是,弹出窗口说“系统要访问您的位置,要允许吗?”,如果他/她允许,那很好,但如果他/她拒绝,我想重新问他,说些什么比如,你不能继续,除非你允许我们得到你的位置,然后再问他。因为我知道你可以清理你的位置设置去 chorme 设置等,但是有什么方法可以通过 javascript 来完成吗?

这是我的功能

function pegaPaisUser()

   navigator.geolocation.getCurrentPosition(addPaisToUser,localizacaoNegada);


function localizacaoNegada(erro)
    pegaPaisUser();
    console.log("HERE")
[![my console][1]][1]

【问题讨论】:

您不能这样做,因为这会向用户发送垃圾邮件并且系统会阻止它。但是,您可以通知用户:为了使用此应用程序,必须打开位置服务。始终让用户做出选择。 再次询问他们是否要选择必须通过用户交互。所以仅在click 事件处理程序中,例如。 是的,我知道,但我想让他知道该怎么做,你知道吗?如果您仍想使用该系统,请去 blah blah,但如果工作量太大,我想通过重新弹出框让他更轻松,我正在使用 cordova btw 构建 不会那么多。创建一个按钮,如果用户想要使用定位服务,请点击它,然后您可以在其中重新向用户查询定位服务。 我试过了,但是chrome保存了他的选择,即使重新调用函数,id什么也没做 【参考方案1】:

使用下面的代码时,我看到第一次点击该网站时,我会被要求获得位置服务的许可。如果我拒绝并再试一次,我会在 Chrome 栏中看到一个小图标,但仅此而已。似乎您应该向用户说明如何选择它。或者以其他方式说服他们第一次提供访问权限。

<div class="message">
  <p>This application needs the location services. Please click the button if you want to allow location services to be used.</p>
  <button class="js-retry-location">Allow Location services</button>
</div>
const retryButton = document.querySelector('.js-retry-location');
retryButton.addEventListener('click', event => 
   navigator.geolocation.getCurrentPosition( coords => 
     console.log(coords);
   );
);

【讨论】:

是的,我想是的,多麻烦

以上是关于有没有办法重新询问用户获取他的位置的权限,或者使用带有 javascript 的地理定位 API 删除旧设置?的主要内容,如果未能解决你的问题,请参考以下文章

IOS - 如何向用户询问权限?

地理位置 API 权限 Web 浏览器

只要状态没有被授予,如何一直询问位置权限-Flutter

iOs自动处理相机权限吗?

每次询问时如何确保获得gps位置

如果之前未授予或拒绝权限,如何每次都询问活动开始的权限