更新记录
1.21.0(2025-12-29) 下载此版本
- 【Android】修复一些,bug 加固炫彩活体
- 【IOS】修复一些,bug 加固炫彩活体
1.20.0(2025-09-26) 下载此版本
- 【IOS】修复一些bug
- 【Android】修复兼容性问题,修复一些bug
1.19.0(2025-07-14) 下载此版本
- [IOS] 兼容IOS 26
- [Android] 优化用户体验
平台兼容性
| Android | Android CPU类型 | iOS |
|---|---|---|
| 适用版本区间:6.0 - 16.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | 适用版本区间:9 - 18 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
概述
Android/IOS活体检测 (眨眼,摇头,点头,张嘴,远近,炫彩),前后端结合,确保活体检测结果安全可靠。(可用于实人认证,刷脸认证,意愿核验,活体检测等场景)
功能特性
- ✅ 支持多种活体检测动作:远近、眨眼、摇头、点头、张嘴、炫彩
- ✅ 支持多动作组合检测(最多4组动作)
- ✅ 支持视频录制功能
- ✅ 支持多语言界面(中文、繁体中文、英文、日文、韩文)
- ✅ 丰富的界面样式自定义选项
- ✅ 支持前置/后置摄像头切换
- ✅ 支持多张照片获取
演示效果


相关链接
- H5 体验DEMO链接:https://dev.esandcloud.com/h5demo/esand/living
- 意愿核验H5版体验链接:https://dev.esandcloud.com/h5demo/esand/faceVoiceVerify/index
- 插件地址:https://ext.dcloud.net.cn/plugin?id=2357
- 接入文档:https://esandinfo.yuque.com/yv6e1k/aa4qsg/agg77l
API 文档
1. Init() - SDK初始化
为了提升性能,建议在Application中提前调用,否则获取token时间会比较长。
调用方式:
const livingDetection = uni.requireNativePlugin('EsLivingDetection');
livingDetection.Init();
2. verifyInit(options) - 认证初始化
初始化活体检测配置,返回初始化结果。
参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| livingType | string | 是 | 认证类型:1-远近,2-眨眼,3-摇头,4-点头,5-张嘴,6-炫彩。支持多动作组合,如"12"表示先做远近后做眨眼,一次最多支持4组动作 |
| keyType | string | 否 | 密钥类型(留空即可) |
| isAutoUploadVerifyMsg | boolean | 否 | 是否自动上传verifyMsg(留空即可) |
| navigate | boolean | 否 | 是否显示导航条 |
| language | string | 否 | 界面显示语言(不分大小写):"CN"-中文,"TCN"-繁体中文,"JP"-日文,"KR"-韩文,"EN"-英文 |
| takeMultiImg | boolean | 否 | 是否获取多张照片,默认为false |
| isRecordVideo | boolean | 否 | 是否录制视频,默认为false。设置为true时,认证结束将返回视频存储的本地绝对路径 |
| uploadLogOnError | boolean | 否 | 是否在错误时上传日志 |
界面样式参数:
| 参数名 | 类型 | 说明 |
|---|---|---|
| textColor | string | 字体颜色,如 "#FFFFFF" |
| progressColor | string | 进度条颜色 |
| progressBgColor | string | 进度条背景颜色 |
| progressStaGradient | string | 进度条渐变开始颜色 |
| progressEndGradient | string | 进度条渐变结束颜色 |
| backGroundColor | string | 页面背景颜色 |
| circleBackWidth | number | 进度条宽度 |
| visitedStepBorderDotColor | string | 多动作导航的边框颜色,如 "#FFC0CB" |
| visitedStepFillDotColor | string | 完成步骤点的填充颜色 |
| nextStepBorderDotColor | string | 下一步骤点的边框颜色 |
| nextStepFillDotColor | string | 下一步骤点的填充颜色 |
| visitedStepSeparatorColor | string | 当前步骤条的颜色 |
| nextStepSeparatorColor | string | 下一步步骤条的颜色 |
| exitIcon | string | 退出按钮图片(BASE64字符串) |
返回值:
{
code: string, // 错误码,成功时为 "ELD_SUCCESS"
msg: string, // 提示信息
data: object // 初始化数据,包含token等信息
}
使用示例:
const result = livingDetection.verifyInit({
livingType: "12", // 先做远近,后做眨眼
language: "CN",
navigate: true,
isRecordVideo: true,
textColor: "#FFFFFF",
progressColor: "#00FF00"
});
3. startLivingDetect(options, callback) - 开始活体检测
启动活体检测流程。
参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | string | 是 | 服务器返回的认证token(从verifyInit的返回值中获取) |
| cameraID | string | 否 | 摄像头ID:"FRONT"-前置摄像头,"REAR"-后置摄像头,默认为前置摄像头 |
回调结果:
{
code: string, // 错误码
msg: string, // 提示信息
data: object, // 检测结果数据
token: string, // 认证token
videoPath: string // 视频文件路径(如果isRecordVideo为true)
}
使用示例:
livingDetection.startLivingDetect({
token: "your_token_here",
cameraID: "FRONT"
}, (result) => {
if (result.code === "ELD_SUCCESS") {
console.log("检测成功", result.data);
if (result.videoPath) {
console.log("视频路径", result.videoPath);
}
} else {
console.error("检测失败", result.msg);
}
});
4. getLivingDetectVideo(options) - 获取认证视频
获取活体检测录制的视频文件路径。
参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | string | 是 | 认证token |
返回值:
{
code: string, // 错误码
msg: string, // 提示信息
data: string // 视频文件绝对路径
}
使用示例:
const result = livingDetection.getLivingDetectVideo({
token: "your_token_here"
});
if (result.code === "ELD_SUCCESS") {
console.log("视频路径", result.data);
}
业务流程
活体检测认证涉及用户、APP、SDK和业务服务器四个参与方的交互,完整流程如下:
用户 ←→ EsandSdk ←→ APP ←→ 业务服务器
流程步骤
-
APP调用SDK认证初始化
- APP调用
verifyInit()方法,配置活体检测参数 - SDK返回初始化结果,包含认证所需的基础信息
- APP调用
-
APP向业务服务器发起认证初始化
- APP将SDK初始化结果发送到业务服务器
- 业务服务器验证并返回认证token(此步骤由业务方实现)
-
APP执行认证操作
- APP调用
startLivingDetect()方法,传入业务服务器返回的token - SDK启动活体检测界面
- APP调用
-
SDK与用户交互完成刷脸活体认证
- SDK引导用户完成指定的活体动作(眨眼、摇头、点头、张嘴、远近、炫彩等)
- 实时进行活体检测和验证
- 检测完成后返回结果数据
-
APP获取认证结果
- APP收到SDK返回的检测结果
- APP将结果数据发送到业务服务器进行最终验证
- 业务服务器返回最终的认证结果(此步骤由业务方实现)
时序图说明
┌──────┐ ┌─────────┐ ┌─────┐ ┌──────────┐
│ 用户 │ │EsandSdk │ │ APP │ │业务服务器 │
└───┬──┘ └────┬────┘ └──┬──┘ └────┬─────┘
│ │ │ │
│ │ ①认证初始化 │ │
│ │ verifyInit() │ │
│ │◄─────────────────┤ │
│ │ │ │
│ │ │ ②认证初始化 │
│ │ │─────────────────►│
│ │ │ │
│ │ ③执行认证操作 │ │
│ │ startLivingDetect() │
│ │◄─────────────────┤ │
│ │ │ │
│ ④刷脸完成活体认证 │ │
│◄────────────────┤ │ │
│ │ │ │
│ │ 返回检测结果 │ │
│ │─────────────────►│ │
│ │ │ │
│ │ │ ⑤获取认证结果 │
│ │ │─────────────────►│
│ │ │ │
注意事项
- 步骤2和步骤5需要业务方自行实现与业务服务器的交互
- SDK只负责活体检测部分,最终的认证结果需要业务服务器验证
- Token的有效期由业务服务器控制,建议及时使用
- 建议在Application中提前调用
Init()方法以提升性能
完整使用流程
// 1. 初始化SDK(建议在Application中调用)
const livingDetection = uni.requireNativePlugin('EsLivingDetection');
livingDetection.Init();
// 2. 配置并初始化认证
const initResult = livingDetection.verifyInit({
livingType: "12", // 远近 + 眨眼
language: "CN", // 中文界面
navigate: true, // 显示导航条
isRecordVideo: true, // 录制视频
textColor: "#FFFFFF",
progressColor: "#00FF00"
});
if (initResult.code === "ELD_SUCCESS") {
// 3. 向业务服务器获取认证token(业务方实现)
const serverToken = await getTokenFromServer(initResult.data);
// 4. 开始活体检测
livingDetection.startLivingDetect({
token: serverToken, // 使用业务服务器返回的token
cameraID: "FRONT"
}, async (result) => {
if (result.code === "ELD_SUCCESS") {
// 5. 将检测结果发送到业务服务器进行最终验证(业务方实现)
const finalResult = await verifyWithServer(result.data, result.token);
if (finalResult.success) {
console.log("活体检测成功", finalResult);
} else {
console.error("业务验证失败", finalResult);
}
// 如果需要获取视频
if (result.videoPath) {
console.log("视频路径", result.videoPath);
}
} else {
// 检测失败
console.error("活体检测失败", result.msg);
}
});
}
错误码说明
ELD_SUCCESS: 操作成功ELD_PARAME_ERROR: 参数错误ELD_FAILED: 操作失败ELD_EXCEPTION: 发生异常
联系我
有任何疑问或者问题,可通过如下方式联系我
Wechat Number: esand_info
QQ Number: 3626921591
Phone Number: +8613691664797
Email: reid.li@foxmail.com
Telegram: @R90000000
Wechat QR CODE :


收藏人数:
https://gitee.com/szrd2023/livingdetection_for_uniapp
购买(
下载 for 离线打包
赞赏(0)
下载 2351
赞赏 0
下载 12711
赞赏 1
赞赏
京公网安备:11010802035340号