收藏
回答

用户地理位置授权弹窗如何监听用户点击了允许或者拒绝?

用户地理位置授权弹窗如何监听用户点击了允许或者拒绝?

场景是首页需要要根据用户当前位置信息设置当前所在城市,但是我点了下面的允许后其实我已经获取过用户的地理位置信息了 这个时候就会让用户很懵逼 我怎么监听用户这个允许或者拒绝的操作 我好在用户操作后在获取位置信息

回答关注问题邀请回答
收藏

2 个回答

  • 正青春
    正青春
    04-27

    使用 wx.getLocation 方法

    当调用 wx.getLocation 方法时,如果用户之前没有授权地理位置信息,系统会自动弹出授权窗口。你可以在 wx.getLocation 的 fail 和 success 回调中处理用户的授权结果。
    wx.getLocation({
      type: 'wgs84', // 默认为wgs84返回gps坐标,gcj02返回可用于wx.openLocation的坐标
      success: function(res) {
        // 用户点击了允许
        const latitude = res.latitude;
        const longitude = res.longitude;
        console.log('用户允许授权,获取到的位置信息:', latitude, longitude);
        // 在这里处理获取到的地理位置信息
      },
      fail: function(res) {
        if (res.errMsg.indexOf('auth') !== -1) {
          // 用户点击了拒绝
          console.log('用户拒绝了地理位置授权');
          // 在这里处理用户拒绝授权的情况
        } else {
          // 其他错误
          console.log('获取地理位置失败:', res.errMsg);
        }
      }
    });
    
    

    使用 wx.authorize 方法


    如果你希望在用户进入小程序时就提前获取授权,可以使用 wx.authorize 方法。

    javascript
    复制
    wx.authorize({
      scope: 'scope.userLocation',
      success() {
        // 用户点击了允许
        console.log('用户允许授权地理位置信息');
        // 在这里可以调用 wx.getLocation 获取位置信息
      },
      fail() {
        // 用户点击了拒绝
        console.log('用户拒绝了地理位置授权');
        // 在这里处理用户拒绝授权的情况
      }
    });
    

    注意事项

    全局配置文件:如果你使用 wx.authorize 主动发起授权请求,还需要在小程序的全局配置文件 app.json 中配置 requiredPrivateInfos 字段,声明需要获取的敏感权限。

    {
      "requiredPrivateInfos": [
        "scope.userLocation"
      ]
    }
    

    用户体验:在处理用户拒绝授权的情况时,应该给出友好的提示,并引导用户到设置页面手动开启授权


    04-27
    有用
    回复
  • 那是风。
    那是风。
    04-27

    我要是主动调用wx.authorize的时候 还需要在全局配置文件中配置requiredPrivateInfos吗?

    04-27
    有用
    回复
登录 后发表内容