小程序地理位置授权失败检测,并引导开启

文章目录

    在涉及到用户位置的小程序里,如果用户拒绝授权,就无法拿到起当前的坐标,也就无法进行下一步的操作。所以,需要检测用户是否拒绝授权,并引导其开启。

    方法一

    在 wx.getLocation 失败回调里,通过 wx.getSetting 来判断是否授权了地理位置,如果没有,通过 wx.openSetting 来让用户再次手动授权。

    方法二

    在 wx.getLocation 失败回调里,通过 err msg 来判断是否禁用了授权。然后同样适用 wx.openSetting 来引导再次授权。但是,这里存在一个问题,即不同平台 err msg 不一致,这样做并不严谨。

    wx.getSetting

    https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html

    wx.getSetting(Object object)

    获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。

    wx.openSetting

    https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.openSetting.html

    wx.openSetting(Object object)

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

    success 回调返回用户授权的结果。

    注意:2.3.0 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息。所以,需要使用 modal 弹窗来解决此问题。

    示例代码

    wx.getLocation({
      type: 'gcj02',
      success: res => {
        this.setData({
          lat: res.latitude.toString(),
          lng: res.longitude.toString(),
        })
      },
      complete: () => {
        // 未授权情况
        var that = this;
        if (!this.data.lng) {
          wx.getSetting({
            success (res) {
              if (!res.authSetting["scope.userLocation"]) {
                // 2.3.0 版本开始,用户发生点击行为后,
                // 才可以跳转打开设置页,管理授权信息。
                wx.showModal({
                  title: '提示',
                  content: '请开启位置授权,否则将无法使用XX功能',
                  confirmText: "去开启",
                  cancelText: "取消",
                  success: res => {
                    if (res.confirm) {
                      wx.openSetting({
                        success (res) {
                          that.onShow();
                        }
                      })
                    }
                  }
                }) // end of wx.showModal
              }
            }
          })
          return;
        }
    
        // 已授权情况
        // TODO
      }
    });
    

    参考

    https://www.jianshu.com/p/80e33d16182f

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式