问题叙述:
使用uniapp开发H5和wgt小程序时。需要用户进行实人认证。场景需要使用摄像头在ios内正常使用。但是在Android下就无法使用了。
应用场景:
开发中使用阿里的实人认证功能进行人脸识别认证功能。需要用户进行扫脸。
解决办法:
使用uni插件库中的插件引入到项目中。使用插件的方法进行用户授权的判断操作。
项目目录如下:
┌─components
├─js_sdk
│ └─wa-permission
│ └─permission.js
├─pages
│ └─index
│ └─index.vue
├─static
├─main.js
├─App.vue
├─manifest.json
└─pages.json
在index.vue中引入插件import permision from "@/js_sdk/wa-permission/permission.js"
使用方法如下:
methods:{
// 判断Android权限是否开启
async requestAndroidPermission(permisionID) {
var result = await permision.requestAndroidPermission(permisionID);
return result;
},
attestation(){
// #ifdef APP-PLUS
uni.getSystemInfo({
success({ osName }) {
switch (osName){
case 'ios':
if(permision.judgeIosPermission("camera")){
// 已获得授权
let uri = process.uniEnv.interviewUrl + '/miniapp/nft/pages/user/real';
uni.navigateTo({
url: '/pages/webView/jumpAuthentication?jumpUrl=' + uri
});
}else{
// 未授权
permision.gotoAppPermissionSetting();//引导用户去打开设置授权
}
break;
case 'android':
_self.requestAndroidPermission('android.permission.CAMERA')
.then(result => {
switch (result){
case -1:
// 被永久拒绝权限
_self.$u.toast('您拒绝授权相机功能,请到设置中开启后再次进行认证。');
break;
case 0:
// 未获得授权
_self.$u.toast('您未授权相机功能,请授权后再次进行认证。');
break;
case 1:
// 已获得授权
let uri = process.uniEnv.interviewUrl + '/miniapp/nft/pages/user/real';
uni.navigateTo({
url: '/pages/webView/jumpAuthentication?jumpUrl=' + uri
});
break;
default:
break;
}
})
break;
default:
break;
}
}
});
// #endif
},
}