微信小程序开发设置获取权限管理,摄像头权限,位置权限,用户信息权限等

在小程序开发的时候,我们总会遇到很多权限问题,比如摄像头权限,位置权限,用户信息权限等,如果不加以判断,很难给用户一个好的体验。

有一天,小明来参观一个拍照微信小程序。 他很感兴趣,看着精美的页面,忍不住点击了拍照按钮。 然而,他太兴奋了,以至于点击了错误的授权选项。 他选择了“拒绝❌”选项。 接下来无论点击多少次,拍照功能都无法打开。 年事已高、不懂手机权限设置的小明陷入了痛苦之中。

所以,正确的处理权限是个比较重要的事情。

1:获取用户的授权设置

使用 wx.getSetting 可以获取用户已经同意的授权和拒绝的授权。

wx.getSetting({
    
    
    success: res => {
    
    
        if (scope) {
    
    
            resolve(res.authSetting[scope])
        } else {
    
    
            resolve(res.authSetting)
        }
    },
    fail: err => {
    
    
        reject(err)
    }
})

2:打开小程序的授权设置

在得知用户拒绝某个权限后,我们就可以调用 openSetting 帮助用户跳转到权限设置页面,免去了查找的麻烦。

再回调中我们可以做一些判断,判断用户是否正确的打开了相应权限。

wx.openSetting({
    
    
    success: res => {
    
    
        if (res.authSetting['scope.camera']) {
    
    
                // 正确的打开了摄像头权限
                // ......
        } else {
    
    
            // 未打开摄像头权限
            // ......
        }
    },
    fail: err => {
    
    
        // 出错
    }
})

3:主动拉起授权页

除此之外,其实还有一种情况,就是用户即没有同意也没有拒绝,这时候就需要主动拉起授权页了。

使用authorize可以实现这个功能。

wx.authorize({
    
    
    scope: 'scope.camera',
    success() {
    
    
        // 用户已经同意小程序使用摄像头
        // ......
    },
    fail() {
    
    
        // 用户拒绝授权
    }
})

这里还有个问题需要注意,就是我们怎么判断用户是既没有同意授权也没有拒绝授权的状态

当我们使用 wx.getSetting 获取用户授权权限扽时候会有个对象,比如:

{
    
    
   scope.address: true,
   scope.camera: undefined, // 用户既没有同意也没有拒绝
   scope.invoice: true,
   scope.invoiceTitle: true,
   scope.userInfo: true,
}

当其中某个值不是true也不是false,即为undefined的时候就可以判断用户处于未拒绝和未同意的状态。

4:权限表

具体权限表你可以访问 微信小程序权限表 进行查阅。

猜你喜欢

转载自blog.csdn.net/qq_41974199/article/details/131970634