ARTICLE · 1042991
这个 uni-app 人脸识别插件,主打一个「完全离线」

做实名认证、身份核验这类需求时,常见做法是把采集到的人脸图传到后端去比对。但今天要聊的这个方案走的是另一条路——比对和活体判断全部在手机本地完成,不依赖任何后台 API。
它就是 FaceAISDK_uniapp_UTS,一个专为 uni-app / uni-app x 打造的 UTS 插件,GitHub 上开源,iOS 和 Android 双端都能用。
项目地址:https://github.com/FaceAISDK/FaceAISDK_uniapp_UTS
一、它解决什么问题
简单说:让你在 uni-app 项目里,用一套接口搞定人脸识别和活体检测,而且全程离线。
离线带来的直接好处有三个:
如果你的项目正好用的是 uni-app 技术栈,又需要同时覆盖 iOS 和 Android,这个插件的目标就是把两端的原生能力统一成一套 UTS 接口。
二、核心能力
1. 人脸识别(1:1 比对)
传入待比对的人脸,SDK 返回相似度分数,是否通过由你设定的阈值(threshold)决定。典型的"本人 vs 证件照"比对场景。
2. 活体检测(三种方式)
这是防"用照片/视频糊弄"的关键。插件提供了三种活体方式,各有适用场景:
| 动作活体 | ||
| 炫彩活体 | ||
| 静默活体 |
3. 状态码回调
整个识别/活体流程通过回调返回状态码(0–13),覆盖了从初始化、比对成功/失败、各类活体结果,到超时、多人脸、光线过强等异常。
接入建议:先把状态码的所有分支写全,再往上补业务逻辑,不容易出漏。
三、兼容性
四、接入流程(重点看这里)
官方反复强调一个顺序,这也是大部分集成问题的根源:
先做自定义调试基座,再用基座运行项目。
具体两步:
第一步:制作自定义调试基座
运行 ➔ 运行到手机或模拟器 ➔ 制作自定义调试基座 ➔ 打包第二步:用自定义基座运行
运行 ➔ 运行到 Android/iOS 基座 ➔ 选择使用自定义基座运行 ➔ 选择本地基座 ➔ 运行在需要用到的页面里引入:
import { faceVerify } from "@/uni_modules/FaceAISDK-Core";⚠️ 几个容易踩的坑
五、定制与优化
UI 定制有边界
UTS 插件版本只支持自定义字体和主题颜色。如果你想改页面布局、交互逻辑,得拉取原生 SDK 自己封装:
FaceAISDK_iOSFaceAISDK_Android包体积优化
Android 动态库默认带了 32 位老旧设备的兼容。如果只面向现代主流手机,可以在 build.gradle 里过滤 SO 库,只保留 arm64-v8a,APK 体积能明显缩小。
高级功能
外接摄像头(UVC 协议)、相册批量导入这些不在 UTS 插件默认范围内,需要下载原生体验包。
六、实战建议
七、小结
这个项目的定位很清晰:给 uni-app 生态提供一个开箱即用、纯离线、双端统一的人脸核验方案。
核心价值就三个字——离线、无依赖。适合隐私要求高、又不想承担后端比对成本的业务。
接入本身不复杂,真正的门槛在于自定义调试基座的制作流程,以及原生层定制的边界。把基座流程走对、状态码分支写全,落地基本很顺。
遇到问题时,官方建议附上 HBuilderX 版本、Vue 版本、测试机型和报错日志,反馈效率会高很多。
项目地址:https://github.com/FaceAISDK/FaceAISDK_uniapp_UTS