微信小程序之位置信息权限获取和设置界面权限显示

小程序提交审核和发布后,多种机型使用起来发现了一个问题,在小程序设置中没有显示具体的权限信息。如下图所示

当考虑到用户使用小程序时,若缺少对应权限,按照官方案例讲的方式是进行自动导航跳转“设置”页面,让用户手动开启,但此时设置界面啥都没有,会导致一个“死循环”;用户每次按钮点击事件都会判断权限,但权限并没显示,无法进行下一步操作,循环往复,严重影响用户使用体验,那怎么办呢?

我们可以看官方文档,在全局配置中的 PermissionObject 结构 ,介绍了权限使用,我的小程序使用了蓝牙,但android6.0以上需要位置服务权限,才能进行扫描操作,此处以“位置服务”权限为例。

一、app.json文件追加权限列表信息。

"permission":{
    "scope.userLocation": {
      "desc": "您的位置信息将用于设备定位和蓝牙操作"
    }
  }

二、用户登陆操作执行成功后,在登陆成功跳转后的那个页面做用户授权验证。

onLoad函数中新增:

//校验小程序是否具备某些权限
checkPermission(this);  

App结构体外增加方法:

//小程序进入首页  权限校验
function checkPermission(obj){
  console.log("-------------checkPermission----------");
  wx.getSetting({
    success:function(res){
      if (!res.authSetting['scope.userLocation']) {
        console.log("-------------不满足scope.userLocation权限----------");
        //申请授权
        wx.authorize({
          scope: 'scope.userLocation',
          success() {
            
          }
        })
      }
    }
  })
}

wx.getSetting API只是为了获取小程序所拥有的权限信息,通过成功回掉后,查询是否包含了位置服务信息,若没位置服务信息,则需要请求用户授予权限。如下图所示

即使点击了拒绝,在设置页面也会显示小程序包含的权限信息和开关信息。

关于点击按钮后,如何校验android或ios所需要的版本,可以参考我的另外一篇博客    链接地址

猜你喜欢

转载自blog.csdn.net/qq_38322527/article/details/88180119