更新记录

1.0.1(2022-09-18)

修复iOS上传ipa时bundle文件校验出错的问题。

1.0.0(2022-09-05)

完成基本功能,满足日常业务所需,详见使用说明。


平台兼容性

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

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


使用说明

1. 准备工作

了解百度人脸离线采集SDK,申请百度人脸离线采集SDK license,参考百度官方文档

2. 接入PT-BaiduFacePlugin插件

试用或购买插件,云插件使用官方参考文档

Android

将从百度控制台获取到的“idl-license.face-android”文件件放到uni工程的nativeplugins/PT-BaiduFacePlugin/android/assets/目录下(需自行按该路径创建文件夹)

iOS

将从百度控制台获取到的“idl-license.face-ios”文件放到uni工程的nativeplugins/PT-BaiduFacePlugin/ios/目录下(需自行按该路径创建文件夹)

3. 使用插件

3.1 初始化,人脸采集配置,活体检测配置

一般在App.vue的onLaunch方法中调用,示例中人脸采集和活体检测所展示配置参数均为默认值,无特殊需求可以不传参数

// 引用插件
const PTFace = uni.requireNativePlugin('PT-BaiduFacePlugin')

// 初始化,参数必传
PTFace.authorizeFaceSDK({
    iosFaceLicenseName: "idl-license.face-ios", // 必传
    iosFaceLicenseId: "xxx-face-ios", // 必传
    androidFaceLicenseName: "idl-license.face-android", // 必传
    androidFaceLicenseId: "xxx-face-android" // 必传
}, res => {
    // 初始化鉴权成功
    if (res == "success") {
        // 配置人脸检测,如无特殊需求,参数可不传,使用默认配置,示例:PTFace.setFaceSDKConfig()
        PTFace.setFaceSDKConfig({
            // 设置最小检测人脸阈值
            minFaceSize: 200,
            // 设置截取人脸图片宽
            cropFaceSizeWidth: 400,
            // 设置截取人脸图片高
            cropFaceSizeHeight: 640,
            // 设置人脸遮挡阀值
            occluThreshold: 0.5,
            // 设置亮度阀值
            minIllumThreshold: 40,
            maxIllumThreshold: 240,
            // 设置图像模糊阀值
            blurThreshold: 0.3,
            // 设置头部姿态角度
            eulurAngleThrPitch: 10,
            eulurAngleYaw: 10,
            eulurAngleRoll: 10,
            // 设置人脸检测精度阀值
            notFaceThreshold: 0.6,
            // 设置抠图的缩放倍数
            cropEnlargeRatio: 2.5,
            // 设置照片采集张数
            maxCropImageNum: 3,
            // 设置超时时间
            conditionTimeout: 15,
            // 设置原始图缩放比例
            imageWithScale: 0.8,
            // 设置图片加密类型,type=0 基于base64 加密;type=1 基于百度安全算法加密
            imageEncrypteType: 0,
            // 设置人脸过远框比例
            minRect: 0.4,
            // 设置是否开启语音提示
            isOpenSound: true
        })
        // 配置活体检测,如无特殊需求,参数可不传,使用默认配置,示例:PTFace.setFaceLivenessConfig()
        PTFace.setFaceLivenessConfig({
            // 活体动作列表,Eye: 眨眼 Mouth:张嘴 YawRight: 向右转头 YawLeft: 向左转头 PitchUp: 抬头 PitchDown: 低头
            livenessList: ["Eye", "Mouth", "YawRight"],
            // 是否按顺序进行活体动作
            isByOrder: false
        })
    } else {
        // res == "failure"
        // 初始化鉴权失败,排查接入是否正确
    }
})

3.2 人脸采集

// 安卓需先申请相机权限
let that = this
// 获取插件类
const PTFace = uni.requireNativePlugin('PT-BaiduFacePlugin')
// 调用人脸采集
PTFace.faceDetection((res) => {
    // res即为采集的图片转base64字符串后的结果,请勿使用console.log(res)查看, 会导致控制台无限输出文本
    uni.showToast({
        title: res,
        icon: 'none'
    })
})

3.3 人脸采集+活体检测

// 安卓需先申请相机权限
let that = this
// 获取插件类
const PTFace = uni.requireNativePlugin('PT-BaiduFacePlugin')
// 调用人脸采集+活体检测
PTFace.faceLiveness((res) => {
    // res即为采集的图片转base64字符串后的结果,请勿使用console.log(res)查看, 会导致控制台无限输出文本
    uni.showToast({
        title: res,
        icon: 'none'
    })
})

4. 注意事项

4.1 安卓调用采集接口前需先申请相机权限,推荐参考 App权限判断和提示

4.2 iOS常见问题

iOS的文件路径层级和安卓不一样,少一层assets,创建文件夹时需注意;
iOS验证失败时请检查百度后台iOS配置是否正确,iOS开发证书和描述文件等是否过期。

欢迎大家交流指正,有任何问题和建议请在评论区留言反馈,作者将尽快回复和处理。联系方式QQ:1275917459,加好友请备注uni人脸插件

隐私、权限声明

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

需要获取相机使用权限

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

本插件不采集任何数据,插件使用的百度人脸离线采集SDK会采集数据,详情可参考 https://ai.baidu.com/ai-doc/FACE/Ek37c1q2g

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

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