必须通过原生插件封装百度Android/iOS SDK,因纯JS无法调用摄像头、执行本地活体检测及质量判断,且百度RESTful接口不支持实时流处理与防攻击要求。

直接对接百度人脸识别 SDK 在 uni-app 里不能靠纯 JS 调用,必须走原生插件路径。百度官方没有提供纯 H5 版人脸检测能力(Web 端仅支持基础人脸检测,不支持活体、比对等核心功能),所以 App 端必须用 Android/iOS 原生 SDK 封装后接入。
为什么不能直接 uni.request 调百度人脸 API?
百度人脸 RESTful 接口(如 /rest/2.0/face/v3/detect)只接受 base64 图片或图片 URL,但实际业务中需要:实时摄像头流 + 活体动作控制 + 本地质量判断(光照、模糊、遮挡)+ 防截图/视频攻击。这些必须依赖设备摄像头和本地算法模型,纯 HTTP 请求做不到。
- 活体检测(
Blink/Nod)需控制摄像头帧率、叠加引导动画、实时反馈动作完成状态 —— 这些只能在原生层实现 - 百度 Android/iOS SDK 内置离线活体模型(如光流法),不上传原始图像,满足《个人信息保护法》对生物特征数据“本地处理、最小传输”要求
- 直接传 base64 到服务端做活体,等于把活体判定权交给网络链路,延迟高、易被重放攻击,金融类场景直接不合规
BaiduFaceSDK 原生插件怎么装进 uni-app?
别搜 npm 包 —— 百度没发布过 baidu-face-uni 这类通用 npm 插件。所有可用方案都基于 HBuilderX 的原生插件机制,分两种路径:
百度地图 RTOS SDK(mapsdk-rtos)应用层集成规范与代码生成。帮助应用开发者对接 mapsdk-rtos,开发类似 rtos-mac-simulator(mapAPP)的应用层,包含初始化鉴权、地图组件控制、覆盖物(Marker/Polyline)、检索路线、离线地图、导航、Canvas 适配层等能力。当用户提到:对接 RTOS 地图 SDK、集成 mapsdk-rtos、RTOS 地图初始化、MapComponentApi、AuthLicenseApi、SearchApi、NaviApi
- 用插件市场现成的(推荐新手):HBuilderX → 插件市场 → 搜“百度人脸识别”,认准作者是“DCloud 官方”或“百度智能云”(注意看更新时间,2025 年后维护的才支持 Android 14 / iOS 18)
- 自己封装原生插件(推荐生产项目):下载百度官方 SDK(Android 用
libBaiduFaceAPI.so+ AAR,iOS 用BaiduFaceAPI.framework),按 uni-app 原生模块规范写桥接代码,UniModule(Android)和DCUniModule(iOS)必须实现统一 JS 方法名,比如startLiveness - 无论哪种方式,
manifest.json必须配权限:"android.permission.CAMERA"、"android.permission.INTERNET";iOS 还得在Info.plist加NSCameraUsageDescription
调用时 startLiveness 参数容易错哪几个?
参数名大小写、类型、必填项不一致是崩溃主因,尤其 actionType 和 licenseId:
-
actionType必须小写字符串:"blink"、"nod"、"mouth"—— 写成"Blink"或"BLINK"在 iOS 上静默失败 -
licenseId不是 API Key!它是你在百度 AI 控制台「应用管理」里为该 App 单独申请的授权 ID(Android/iOS 各一个),漏填或填错导致 SDK 初始化失败,错误码常是-1001 -
timeout单位是毫秒,但 Android SDK 实际最小有效值是8000,设5000会触发超时回调而非延长等待 - 安卓真机调试时,如果
build.gradle里没加abiFilters 'arm64-v8a', 'armeabi-v7a',部分华为/小米新机型直接白屏无报错
最易被忽略的是 license 文件加载时机:iOS 必须在 application:didFinishLaunchingWithOptions: 里预加载 license,安卓必须在 Application.onCreate() 中初始化 SDK —— 这些不在 JS 层控制,插件封装时若遗漏,startLiveness 第一次调用必失败,且错误信息不明确。

















