微信小程序: 用户拒绝获取定位信息后如何再次获得

获取用户定位信息是小程序比较常用的功能,而且很多需求是一进入就需要拿到定位的信息,所以很多小程序都是打开后就有个询问弹窗

这时候有些人会点【取消】,就拿不到定位信息了,而且小程序的特殊运行机制,只要你点取消了,以后每次进来都是默认拒绝了,也就是说,以后进来都拿不到定位信息了,必须要把小程序删除后再次进入才会弹窗询问,这给我们开发者带来了很多烦恼。

怎么解决呢,我们可以用微信小程序提供的API wx.openSetting(Object object)

 

wx.openSetting(Object object)

支持版本 >= 1.1.0

调起客户端小程序设置界面,返回用户设置的操作结果。设置界面只会出现小程序已经向用户请求过的权限

注意:2.3.0 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息。

调用打开后的界面如下:

看到里面都是已经向用户请求过的权限,可以把地理位置设置为允许。返回后再次调用getLocation接口就可以拿到定位信息了。

上个简单的代码

<!--index.wxml-->
<button bindtap='toSetting'>重新定位</button>
//index.js
toSetting() {
    wx.openSetting({
      success(res) {
        console.log(res.authSetting)
        if (res.authSetting["scope.userLocation"]) {
          // res.authSetting["scope.userLocation"]为trueb表示用户已同意获得定位信息,此时调用getlocation可以拿到信息
          wx.getLocation({
            type: 'wgs84',
            success(res) {
              const latitude = res.latitude
              const longitude = res.longitude
              const speed = res.speed
              const accuracy = res.accuracy
            }
          })
        }
      }
    })
  },

还一种方式是直接用button组件

<!--index.wxml-->
<button open-type='openSetting' bindopensetting="openSetting">重新定位</button>
//index.js
 openSetting(e) {//跳转授权设置之后的回调
    if (e.detail.authSetting['scope.userLocation']) { //此处同上同理
      wx.getLocation({
        type: 'wgs84',
        success(res) {
          const latitude = res.latitude
          const longitude = res.longitude
          const speed = res.speed
          const accuracy = res.accuracy
        }
      })
    }
  },    

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值