更新记录

6.2.8(2023-07-25)

【优化】Android端新增disableGooglePermission属性,修复上架google商店时被驳回的问题

6.2.7(2023-04-14)

【新增】Android端新增cameraWidthRatio、cameraHeightRatiotranslateCanvas属性,主要增加对非手机设备的支持,详细使用请参考文档

6.2.6(2023-04-12)

【新增】Android端新增跳转人脸采集页面前的回调

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.1 - 14.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 17

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


插件功能概述

  • 支持自定义提示文字颜色、人像框颜色及采集页面背景色
  • 支持设置相机,可配置使用前置或后置摄像头
  • 支持配置是否启用提醒音
  • 支持自定义人脸检测页面相关图片(如:关闭按钮图片、关闭开启提醒音图片)
  • 支持用户主动关闭回调(用户点击关闭按钮、虚拟返回键、手势返回都会触发)
  • 支持返回百度抠图过的人像图片
  • 支持返回原图人脸照片和采集过程中的原图照片新版新特性
  • 支持针对不同分辨率设备人脸拉伸问题的兼容
  • 支持前/后摄像头无动作人脸采集
  • 支持自定义文字提示,满足特殊的产品需求
  • 支持自定义语音文件,让产品走到海外新版新特性
  • 支持戴口罩采集,可配置是否开启戴口罩采集新版新特性
  • 采集的图片无黑边新版新特性
  • 支持SDK初始化状态监听,可以自定义弹窗,更加完美的用户体验新版新特性
  • 全新的UI设计,更好的用户体验新版新特性
  • 支持自定义人脸采集时的相关质量控制,具体参考请quality_config.json说明v4.1.1新增
  • 支持自定义人脸采集超时时间v4.1.1新增
  • 支持平板设备采集v4.1.1新增
  • 支持Android/IOS双平台,IOS端功能与Android端保持一致v5.1.1起支持IOS
  • 支持在采集页面切换前后摄像头,可以通过switchCameraEnable属性控制是否开启此功能v5.3.1新增
  • 支持自定义采集完成之后是否关闭采集页面v5.4.4新增
  • 支持图片压缩,可以把图片大小控制在150KB以下v5.6.6新增
  • 支持自定义相机预览画面宽高,适配特殊机型人脸预览变形问题v5.7.8新增
  • 支持自定义图片压缩大小v5.8.8新增
  • 支持base64图片转本地图片路径,方便用户将人脸图片上传至自己的服务器v6.0.1新增
  • Android端支持自定义相机预览旋转角度v6.1.9新增
  • 待完善功能,敬请期待!

插件接入文档

关于更新

有空闲时间会不断更新维护,有问题随便提,有时间一定会修改,如有不懂的请QQ咨询:1299259684,或者添加QQ群:620436066

特别推荐

  1. 结合OCR文字识别插件支持身份证正反自动识别,可以轻松实现实名认证,身份核验等功能
  2. 如果您用于非手机设备(如一体机设备、双目摄像头设备等),推荐您使用老版本插件

注意事项

  • 一定一定一定要使用正式版的license文件,一定要等正式版的审核通过之后使用正式版的,不要用测试版的license文件,否则造成不可逆的后果自行负责!!!
  • 使用该插件时一定要先试用测试,如果不会搞的可以加群,群里有完整的测试demo,虚拟物品一旦购买之后无法退款!!!

准备工作

  1. Android、ios端证书准备工作
  2. 百度官方资料准备
    • 1) 进入百度人脸识别官网点击这里
    • 2) 点击右上角的控制台,登陆百度账号(没有的自行注册,注意:如果是公司项目使用,请让公司申请账号并认证为企业账号),进入控制台
    • 3) 选择人脸识别 --> 人脸实名认证 --> 项目管理 --> 进行企业认证 ---> 新建项目

接入步骤(QQ:1299259684 不懂可咨询)

最简单的接入步骤(基本10分钟搞定)

  • step1:扫描上方QQ群二维码加入QQ群,下载对应Deom的ZIP压缩包,本插件demo为liyahong-BDFace-v4-Demo
  • step2:解压完成之后会看到很多文件和文件夹,你在桌面新建一个文件夹(最好英文命名哦),然后把你解压到的文件和文件夹拷贝到你创建的这个文件夹下
  • step3:打开hx,然后依次选择文件 --> 导入 --> 从本地目录导入 --> 选择刚才在桌面创建的文件夹 --> 导入成功
  • step4:打开导入的项目,然后打开manifest.json文件,重新获取appid,或者填写你项目的appid都可以
  • step5:回到插件页面,看右边有个试用的按钮,点它,然后弹出来一个模态框,选择试用的项目,点击确认按钮
  • step6:回到hx,然后再次打开manifest.json文件,然后依次选择App原生插件配置 --> 云端插件 --> 选择云端插件 --> 勾选【Android/IOS支持/口罩识别】的插件
  • step7:替换license文件,详细操作看详细接入步骤的第2条
  • step8:打开pages下的index.vue文件,把里面的licenseID替换为你的
  • step9:打自定义基座包运行测试(包名一定要跟你在百度后台创建license文件的包名保持一致),详细操作看详细接入步骤的第9条及以后

详细接入步骤

  1. 点击试用插件,选择要试用的项目,获取试用资格,测试没问题之后确定插件功能符合您的产品需求再考虑购买。

  2. 在uni-app项目根目录创建nativeplugins文件夹,然后依次在nativeplugins文件夹下创建以下文件夹,并将刚才下载下来的License授权文件放入以下文件夹下,注意:一定不要修改license文件的名字,否则将会导致初始化SDK失败

    • 1) Android端放置目录:nativeplugins --> liyahong-BDFace-v4 --> android --> assets
    • 2) IOS端放置目录:nativeplugins --> liyahong-BDFace-v4 --> ios

  3. 自定义资源图片(说明:插件内置的有图片资源,如果不需要更换就无需配置此项),需要将图片文件放置以下目录,注意:图片文件名一定要按照文档中命名规范命名,否则不会生效,文件名见下方自定义图片尺寸说明

    • 1) Android端放置目录:nativeplugins --> liyahong-BDFace-v4 --> android --> res --> mipmap-xxhdpi
    • 2) IOS端放置目录:nativeplugins --> liyahong-BDFace-v4 --> ios --> FaceSDKImage.bundle

  4. 自定义语音提醒文件(说明:插件内置的有语音提醒文件,如果不需要更换就无需配置此项),需要将语音文件放置以下目录,注意:语音文件名一定要按照文档中命名规范命名,否则不会生效,文件名见下方自定义语音文件说明

    • 1) Android端放置目录:nativeplugins --> liyahong-BDFace-v4 --> android --> res --> raw
    • 2) IOS端放置目录:nativeplugins --> liyahong-BDFace-v4 --> ios --> com.baidu.idl.face.faceSDK.bundle

  5. 自定义质量属性,需要下载示例demo,然后找到quality_config.json文件,将该文件放到自己项目的对应文件夹中,注意:一定要按照demo中命名规范命名,否则不会生效,然后打开文件,修改对应的质量控制属性值即可,属性值参考下方说明

    • 1) Android端放置目录:nativeplugins --> liyahong-BDFace-v4 --> android --> assets
    • 2) IOS端放置目录:nativeplugins --> liyahong-BDFace-v4 --> ios

  6. 点击manifest.json --> App 原生插件配置 --> 云端插件 --> 勾选插件对应的插件

  7. 使用插件,传入licenseID(必填),其他参数可以不填

  • 1) 插件方法说明

    • liveFace(object, function) 人脸采集方法
    • closeLive(function) 关闭人脸采集页面方法,仅resultBackEnable=false时调用有效
    • compressBase64Image(object, function) base64图片压缩方法,可以将图片压缩到150KB以下,具体说明见下v5.6.6新增
    • base64ToFile(object, function) base64数据转图片方法,可以将base64数据转换为本地图片,并返回本地路径v6.0.1新增

    compressBase64Image方法说明

    参数说明

    属性 类型 默认值 必填 说明
    base64 string 需被压缩的base64数据,不带前缀
    compressSize int 150 期望压缩大小,单位KBv5.8.8新增

    返回值说明

    属性 返回值说明
    code 【必填】状态码
    msg 【必填】提示信息
    result 【选填】压缩结果,当code==1时必填

    result说明

    属性 属性说明
    base64 【选填】压缩后的base64数据,不带前缀
    originalSize 【选填】原图大小,单位byte
    compressedSize 【选填】压缩后的图片大小,单位byte

    base64ToFile方法说明

    参数说明

    属性 类型 默认值 必填 说明
    base64 string 需转换的base64数据,不带前缀

    返回值说明

    属性 返回值说明
    code 【必填】状态码
    msg 【必填】提示信息
    result 【选填】转换路径,当code==1时必填
  • 2) liveFace方法参数说明文档

属性 类型 默认值 必填 说明
licenseID string licenseID与百度资料上的一致
liveArray array [] 活体动作数组,详细见活体动作说明,如:['Month']
liveRandom boolean false 活体动作是否随机
sound int 0 是否开启提醒音,0:有声,1:无声
camera int 0 前置/后置摄像头,0:前置,1:后置
openMask boolean false 是否开启戴口罩采集
hintTextColor string #333333 提示文字颜色
backgroundColor string #FFFFFF 采集页面背景色
roundColor string #CCCCCC 人像框默认颜色
roundSelectColor string #FF0000 识别成功时,采集框的颜色
copyright string '' 采集页面底部版权文字内容
copyrightColor string '#CCCCCC' 采集页面底部版权文字颜色
showBottomImage boolean false 是否显示采集页面底部背景图片
otherImage boolean false 是否回调经过百度抠图的人像图片
originalImage boolean false 是否返回采集过程中的原图人像照片
qualityLevel int 0 质量等级,0:正常(normal)、1:宽松(loose)、2:严格(strict),质量控制属性参考quality_config.json文件v4.1.1新增
detectTimeOut int 15 采集超时时间,单位(秒)v4.1.1新增
switchCameraEnable boolean false 是否开启切换摄像头功能,设置为true则会在右上角多一个切换摄像头按钮v5.3.1新增
tipsModel object {} 自定义每个状态的提示文字内容
resultBackEnable boolean true 采集完成之后是否直接返回,如果设置false,采集完成之后将不会返回,需要js端调用closeLive()方法来关闭采集页面,详情参考demo或文档v5.4.4新增
width int 0 自定义预览画面宽度v5.7.8新增(IOS不支持)
height int 0 自定义预览画面高度v5.7.8新增(IOS不支持)
soundEnable boolean true 是否显示声音按钮v5.9.8新增
cameraDegree int 相机预览角度取值(0、90、180、270),如果发现预览角度不对,可以设置此属性(一般用于非手机设备)v6.1.9新增(IOS不支持)
cameraWidthRatio int 0.33 识别框宽度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大框越小v6.2.7新增(IOS不支持)
cameraHeightRatio int 0.1 识别框高度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大越朝上v6.2.7新增(IOS不支持)
translateCanvas boolean false 是否交换识别框宽高,一般用于非手机设备,如果出现人脸框过大可以设置为truev6.2.7新增(IOS不支持)
disableGooglePermission boolean false 是否禁止google不允许的权限(如需上架google商店可设置该属性为true)v6.2.8新增(IOS不支持)
  • 3) 活体动作说明
动作值 说明
Eye 眨眨眼
Mouth 张张嘴
HeadLeft 向左缓慢转头
HeadRight 向右缓慢转头
HeadUp 缓慢抬头
HeadDown 缓慢低头
  • 4) quality_config.json文件配置说明,0:正常(normal)、1:宽松(loose)、2:严格(strict)
属性 类型 默认值 说明
minIllum int 正常: 40, 宽松: 30, 严格: 60 最小光照阈值(取值 0~255)
maxIllum int 正常: 220, 宽松: 240, 严格: 200 最大光照阈值(取值 0~255)
leftEyeOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 左眼遮挡阈值(取值 0~1.0)
rightEyeOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 右眼遮挡阈值(取值 0~1.0)
noseOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 鼻子遮挡阈值(取值 0~1.0)
mouseOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 嘴巴遮挡阈值(取值 0~1.0)
leftContourOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 左脸颊遮挡阈值(取值 0~1.0)
rightContourOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 右脸颊遮挡阈值(取值 0~1.0)
chinOcclusion float 正常: 0.8, 宽松: 0.95, 严格: 0.4 下巴遮挡阈值(取值 0~1.0)
pitch int 正常: 20, 宽松: 30, 严格: 15 低头抬头角度(取值 0~45)
yaw int 正常: 18, 宽松: 18, 严格: 15 左右摇头角度(取值 0~45)
roll int 正常: 20, 宽松: 30, 严格: 15 偏头角度(取值 0~45)
blur float 正常: 0.6, 宽松: 0.8, 严格: 0.4 模糊度阈值(取值 0~1.0)
  • 5) 自定义提示文字说明【tipsModel的属性】
属性 类型 默认值
detect_face_in string 请把脸移入框内
detect_zoom_in string 请将脸部靠近一点
detect_zoom_out string 请将脸部离远一点
detect_head_up string 请略微抬头
detect_head_down string 请略微低头
detect_head_left string 请略微向左转头
detect_head_right string 请略微向右转头
detect_occ_left_eye string 左眼有遮挡
detect_occ_right_eye string 右眼有遮挡
detect_occ_nose string 鼻子有遮挡
detect_occ_mouth string 嘴部有遮挡
detect_occ_left_check string 左脸颊有遮挡
detect_occ_right_check string 右脸颊有遮挡
detect_occ_chin string 下巴有遮挡
detect_low_light string 请使环境光线再亮些
detect_keep string 请握稳手机,视线正对屏幕
detect_timeout string 检测超时
detect_left_eye_close string 左眼未睁开
detect_right_eye_close string 右眼未睁开
liveness_eye string 眨眨眼
liveness_mouth string 张张嘴
liveness_head_left string 向左缓慢转头
liveness_head_right string 向右缓慢转头
liveness_head_up string 缓慢抬头
liveness_head_down string 缓慢低头
liveness_good string 非常好
  • 6) 自定义图片尺寸说明
图片名称 建议尺寸 图片格式 说明
lyh_bdface_back 66*66 png 关闭按钮图片
lyh_bdface_close_sound 66*66 png 关闭提醒音图片
lyh_bdface_open_sound 66*66 png 打开提醒音图片
lyh_bdface_switch_camera 66*66 png 切换摄像头图片
  • 7) 自定义语音文件说明注意:语音文件必须控制在2s之内,否则会影响识别效率

  • 注意:这里为了兼容老用户,Android端与IOS端的文件名不一样,注意区分,感谢各位的理解!

  • Android端

文件名称 语音文件时长 文件格式 原文件语音内容
lyh_bdface_detect_face_in 2s mp3 把脸移入框内
lyh_bdface_liveness_eye 2s mp3 眨眨眼
lyh_bdface_liveness_mouth 2s mp3 张张嘴
lyh_bdface_liveness_head_left 2s mp3 向左缓慢转头
lyh_bdface_liveness_head_right 2s mp3 向右缓慢转头
lyh_bdface_liveness_head_up 2s mp3 缓慢抬头
lyh_bdface_liveness_head_down 2s mp3 缓慢低头
  • IOS端
文件名称 语音文件时长 文件格式 原文件语音内容
moveface 2s mp3 把脸移入框内
blink 2s mp3 眨眨眼
open_mouth 2s mp3 张张嘴
turn_left 2s mp3 向左缓慢转头
turn_right 2s mp3 向右缓慢转头
head_up 2s mp3 缓慢抬头
head_down 2s mp3 缓慢低头
  • 8) 代码示例
const bdFaceLive = uni.requireNativePlugin('liyahong-BDFace-v4')
var resultBackEnable = true

let licenseID = plus.os.name == 'Android' ? 'lyhBDFace-face-android' : 'lyhBDFace-face-ios'

// 调用插件开始采集人脸
bdFaceLive.liveFace({
    licenseID: licenseID, // 必填项,与百度资料上的License ID保持一致
    /**
     * Eye: 眨眨眼
     * Mouth: 张张嘴
     * HeadLeft: 向左缓慢转头
     * HeadRight:向右缓慢转头
     * HeadUp:缓慢抬头
     * HeadDown:缓慢低头
     * 
     * 默认无动作,如果填写了会按照指定动作执行
     * 注意:这里跟老版的不一样,更符合用户需求
     */
    liveArray: ['Mouth', 'HeadLeft', 'HeadRight'], // 选填【活体动作】
    liveRandom: true, // 选填【动作是否随机】,默认有序,false:有序|true:随机
    sound: 1, // 选填【是否有声】,默认有声,0:有声|1:无声
    camera: 0, // 选填【前置|后置摄像头】,默认前置,0:前置|1:后置
    openMask: true, // 选填【是否开启戴口罩采集】,默认false不开启
    hintTextColor: '#333333', // 选填【提示文字颜色】,默认#333333
    backgroundColor: '#FFFFFF', // 选填【页面背景颜色】,默认#FFFFFF
    roundColor: '#CCCCCC', // 选填【人脸采集框颜色】,默认#666666
    roundSelectColor: '#FF0000' ,// 选填【识别成功时采集框的颜色】,默认#FF0000
    copyright: '', // 选填【底部版权文字内容】,默认''
    copyrightColor: '#0094FF', // 选填【底部版权文字颜色】,默认#CCCCCC
    showBottomImage: false, // 选填【是否显示底部背景图片】,默认false
    otherImage: false, // 选填【是否返回动作人像信息】,默认false,true:返回base64ImageResult + otherBase64Image,false:只返回base64ImageResult
    originalImage: false, // 选填【是否返回原图照片信息】,默认false,true:返回base64ImageResult + originalBase64Image,false:只返回base64ImageResult
    /**
     * 0:正常(normal)、1:宽松(loose)、2:严格(strict)
     * 可以通过quality_config.json配置相关质量属性,具体属性介绍参考文档
     */
    qualityLevel: 0, // 选填【质量等级】,默认0
    detectTimeOut: 15, // 选填【采集超时时间】,默认15,单位(秒)
    /**
     * 如果设置为true,页面右上方会多一个相机切换功能入口
     * 您如果想自定义图片,可以参考文档中的自定义图片说明
     */
    switchCameraEnable: false, // 选填【是否开启相机切换功能】,默认false
    /**
     * 如果你希望采集完成之后,需要前端处理完成之后再返回的话,可以将此属性设置为false
     * 需注意:设置为false之后插件将不会调用关闭页面方法,需要前端手动调用插件的closeLive()方法完成关闭识别页面操作
     */
    resultBackEnable: resultBackEnable, // 选填【采集完成之后是否返回】,默认true
    tipsModel: {}, // 选填【自定义提示文字内容】,取值可参考文档,不填则使用插件默认提示
    /**
     * width 和 height属性是用来设置人脸采集预览画面的宽高的
     * 
     * 1、如果您仅用于手机端采集的话,插件内部已经对所有手机端进行了适配,此属性无需理会,直接设置0即可
     * 2、如果您将插件用于平板设备、厂商定制机设备、快递员扫码设备可能会出现预览框人脸被拉伸的情况,
     *    此时您可以来设置width 和 height属性来进行特定的适配,一般设置为width:1080,height:1920即可,
     *    具体根据设备分辨率来设置
     */
    width: 0, // 选填【自定义预览画面宽度】,默认值0
    height: 0, // 选填【自定义预览画面高度】,默认值0
    soundEnable: true, // 选填【是否显示声音图片】默认值:true
    cameraWidthRatio: 0.33, // 选填【识别框宽度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大框越小】,默认值0.33
    cameraHeightRatio: 0.1, // 选填【识别框高度比例,一般用于非手机设备,如果出现人脸框过大可以设置此属性,值越大越朝上】,默认值0.1
    translateCanvas: false // 选填【是否交换识别框宽高,一般用于非手机设备,如果出现人脸框过大可以设置为true】,默认值false
}, result => {
    /**
     * code=1时会返回base64ImageResult
     *   + 如果otherImage=true,otherBase64Image也会返回
     *   + 如果originalImage=true,originalBase64Image也会返回
     * 如果使用百度人脸比对的话建议使用base64ImageResult,这个返回的是最佳人像照片,
     * 做百度人脸比对是完全没有问题的,也是百度官方推荐的
     * 
     * otherBase64Image:经过百度抠图过的人脸照片
     * originalBase64Image:人脸采集过程中的原图照片
     */
    switch (result.code) {
        case 1:     // 人脸采集成功
            // this.logResult(result)
            // 调用插件方法进行图片压缩,压缩后的图片在150KB以下
            bdFaceLive.compressBase64Image({
                base64: result.base64ImageResult, // 必填【base64数据】,直接使用插件返回的base64数据即可,不要带前缀
                compressSize: 150 // 选填【期望压缩大小】,默认值150,单位KB
            }, compressResult => {
                if (compressResult.code === 1) { // 压缩成功
                    // 获取压缩结果
                    const compressData = compressResult.result
                    // console.log(compressData)
                    this.faceResult = `data:image/jpg;base64,${compressData.base64}`
                    this.result = '人脸采集成功啦,棒棒哒!'
                    this.checkResultBackEnable()

                    // 调用插件方法将base64转为图片路径
                    // bdFaceLive.base64ToFile({
                    //  base64: compressData.base64 // 必填【base64数据】,直接使用插件返回的base64数据即可,不要带前缀
                    // }, fileResult => {
                    //  // 获取到图片路径,可以直接调用uni.uploadFile上传到自己的服务器
                    //  // 【注意:IOS端使用本地路径无法显示图片,但是上传到服务器是没有问题的,如果需要展示图片,可以直接展示base64】
                    //  this.faceResult = fileResult.result
                    //  this.result = '人脸采集成功啦,棒棒哒!'
                    //  this.checkResultBackEnable()
                    // })
                }
            })
            return
        case 2:      // 跳转人脸采集页面前的回调,仅Android端支持
            break
        case -1:     // 其他错误,如:licenseID没有配置等
            break
        case -2:     // 活体检测超时
            break
        case -3:     // 没有提取到人脸信息
            break
        case -4:     // 用户主动关闭
            break
        case -5:     // 权限申请被拒绝,仅Android端支持
            if (result.never) { // 是否被永远拒绝,如果被永远拒绝需要跳转设置页让用户手动开启
                this.showModal({
                    title: '权限受限',
                    msg: '您拒绝了一些权限,可能导致该服务无法正常使用,请前往设置!',
                    confirmText: '前往设置',
                }).then(() => {
                    permissionUtils.gotoAppPermissionSetting()
                })
            } else { // 没有永远拒绝就弹窗给予提示然后再次调用插件
                this.showModal({
                    title: '权限受限',
                    msg: '您拒绝了一些权限,可能导致该服务无法正常使用,请授予!'
                }).then(() => {
                    this.scan()
                })
            }
            break
        case 100001: // 开始初始化SDK,此处如果用户网络不佳会比较耗时,为了更好的用户体验,建议设置弹窗
            uni.showLoading({
                title: '初始化SDK...',
                mask: true
            })
            break
        case 100002: // SDK初始化完成,如果在100001开启了弹窗,可以在这里关闭
            uni.hideLoading()
            break
    }
    this.result = JSON.stringify(result)
})

// 3.将下面两个函数复制到你的methods里面
logResult(result) {
    // 最佳人像信息
    console.log('base64', result.base64ImageResult)
    // 百度抠图的人像信息
    const otherBase64 = result.otherBase64Image
    if (otherBase64) {
        for (const key in otherBase64) {
            console.log(key, otherBase64[key])
        }
    }
    // 原图人像信息
    const originalBase64 = result.originalBase64Image
    if (originalBase64) {
        for (const key in originalBase64) {
            console.log(key, originalBase64[key])
        }
    }
},
// 此方法用于演示resultBackEnable属性为false的情况
checkResultBackEnable() {
    // 如果resultBackEnable设置为false后,采集完成之后不会主动关闭识别页面
    if (resultBackEnable === false) {
        // 模拟网络请求,5s之后自动关闭
        let number = 5
        const intervalId = setInterval(() => {
            if (number <= 1) {
                clearInterval(intervalId)
                /**
                 * 调用插件方法,关闭识别页面
                 */
                bdFaceLive.closeLive((result) => {
                    console.log(result)
                })
            } else {
                number--
            }
        }, 1000)
    }
},
/**
 * 显示弹窗提示
 */
showModal({ title, msg, confirmText }) {
    return new Promise((resolve, reject) => {
        uni.showModal({
            title,
            content: msg,
            showCancel: true,
            confirmText: confirmText || '确认',
            success(res) {
                if (res.confirm) {
                    resolve()
                } else {
                    reject()
                }
            },
            fail() {
                reject()
            }
        })
    })
}
  • 9) 打自定义基座,这里只演示Android的,ios需要自己去申请测试证书
  • 10) 运行项目,注意:插件返回的图片结果是base64格式,如果需要其他处理请自行处理,建议:如果需要上传人脸图片到自己服务器上,建议直接上传base64数据给后端,让后端来转为图片,在前端转换图片会出现未知兼容问题。

  • 11) result返回值说明

属性 返回值说明
code 【必填】状态码,说明见下
msg 【必填】提示信息
never 【选填】权限申请时是否选择了“拒绝且不弹出”的选项,也就是权限被永远拒绝,code=-5的时候返回
base64ImageResult 【选填】最佳人脸信息,base64数据,code=1的时候返回
otherBase64Image 【选填】动作人脸信息,经过百度抠图过的图片,base64数据,code=1 && otherImage=true 的时候返回
originalBase64Image 【选填】动作人脸信息,未经任何处理的原图图片,base64数据,code=1 && originalImage=true 的时候返回
  • 12) code返回值说明
状态码 返回值说明
1 人脸采集成功
2 跳转人脸采集页面前的回调IOS不支持
-1 其他错误,如:licenseID没有填写等
-2 检测超时
-3 没有提取到人脸信息
-4 用户主动关闭
-5 权限申请被拒绝IOS不支持
100001 开始初始化SDK,此处如果用户网络不佳会比较耗时,为了更好的用户体验,建议设置弹窗等待,为满足特殊的产品需求,用户可以自定义弹窗
100002 SDK初始化完成,如果在100001开启了弹窗,可以在这里进行关闭
  • 13) 常见问题

    1. 提示SDK初始化失败是什么原因?
      • android/ios目录下的license文件必须替换为你自己的
      • 确定一下包名,包名一定要和你生成的license文件的包名保持一致
      • 一定要打自定义基座包,然后使用自定义基座运行,否则不会包含插件包
      • 打自定义基座包的时候一定要使用自有证书,不要使用公共证书文件
      • 如果以上都没有问题,请确定一下licenseID是否修改成你自己的ID
    2. 为什么插件返回的图片不显示?
      • 注意:插件返回的图片是去掉前缀的base64数据,如果要显示图片请加上前缀
      • 如有不懂请下载实例demo,md文档的实例代码有些被屏蔽了
  • 14) 错误码对照表,例:local auth failed:4,4就是错误码

错误码 错误说明
1 license未初始化
2 license数据解密失败
3 license数据格式错误
4 licenseID不匹配
5 算法ID校验错误
6 MD5校验错误
7 设备ID校验错误
8 包名(应用名)校验错误
9 过期时间不正确
10 功能未授权
11 授权已过期
12 本地文件读取失败
13 远程数据拉取失败
14 本地时间校验错误

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android端权限说明: 相机权限:android.permission.CAMERA 文件写入权限:android.permission.WRITE_EXTERNAL_STORAGE 网络访问权限:android.permission.INTERNET

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本插件本身不会采集任何用户数据,插件内部集成的是百度离线采集SDK,具体请访问官方说明:https://ai.baidu.com/ai-doc/FACE/Mk37c1pue

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问