logo
logo
请输入关键词搜索产品或者文档
中国

中国站

创蓝云智

国际站

Innopaas

IOS开发文档

更新时间:2026-07-23 19:05:12

demo地址

一.准备工作

概述

本文结合示例代码指导您在 iOS 应用中集成活体检测 SDK,帮助您在 App 中实现刷脸认证功能。

前置条件

  • 应用必须在 iOS 9.0+ 平台上运行。

创建应用

应用的创建流程及 AppId 的获取,请查看「账号创建」文档

注意:**AppId**与 bundle id 一一对应的绑定关系,否则会校验不通过。

认证流程

graph LR A[SDK 检测] --> B[SDK 返回结果] --> C[云上校验] --> D[认证结果]

快速体验 demo

  • iOS 压缩包中的 demo 文件夹中是示例工程源码,使用 Xcode 打开完成以下步骤配置,可直接运行测试:

    • 将项目中 bundle id 更改成您的创建应用时填写的 bundle id
    • 将项目中的 AppId 换成您创建应用后生成的 AppId

开发环境搭建

  1. 添加隐私权限
  • Privacy - Camera Usage Description
  • Privacy - NSUserTrackingUsageDescription
img

ps:参考文案“请放心,开启权限不会获取您在其他 APP 或网站的隐私信息,该权限仅用于标识设备并保障认证流程安全

  1. Xcode 关闭 BitCode 选项

Build Setting -搜索 Enable Bitcode -修改设置为NO

img
  1. 编译配置

在 Xcode 变异设置的Linking > Other Linker Flags中**,**添加 -ObjC

img
  1. 导入 SDK 包及系统依赖包
  • SDK 库
APBToygerFacade
APPSecuritySDK
BioAuthEngine
DTFIdentityManager
DTFUtility
ToygerNative
ToygerService
CLLivingDetectSDK
  • 系统依赖库
CoreGraphics.framework
Accelerate.framework
SystemConfiguration.framework
AssetsLibrary.framework
CoreTelephony.framework
QuartzCore.framework
CoreFoundation.framework
CoreLocation.framework
ImageIO.framework
CoreMedia.framework
CoreMotion.framework
AVFoundation.framework
WebKit.framework
libresolv.tbd
libz.tbd
libc++.1.tbd
libc++abi.tbd
AudioToolbox.framework
CFNetwork.framework
MobileCoreServices.framework
libz.1.2.8.tbd
AdSupport.framework
  • 拷贝资源文件

选择 TARGETS ,点击 Build Phases 标签页,在 Copy Bundle Resources 中添加如下四个 bundle:

APBToygerFacade.bundle:位于 APBToygerFacade.framework 中。
BioAuthEngine.bundle:位于 BioAuthEngine.framework 中。
ToygerService.bundle: 所在位置为 ToygerService.framework 中。
CLLivingDetect.bundle:所在位置为 CLLivingDetectSDK.framework中。

二.API 说明

1.初始化

导入头文件 #import <CLLivingDetectSDK/CLLivingDetectSDK.h>

  • 为提高身份核验的用户体验,并为刷脸认证准备必要数据,iOS 客户端需要进行 SDK 初始化。

方法原型

/// 初始化
/// @param appId 控制台创建应用的appid
+ (void)initWithAppId:(NSString *)appId;

示例代码

/// 初始化
/// @param appId 控制台创建应用的appid
+ (void)initWithAppId:(NSString *)appId;

2.认证参数配置

  • 【可选方法】每个配置都有默认值,可以不配置。如需修改默认配置,调用相应配置方法即可。
/// 扫脸圆圈颜色,默认为蓝色,颜色格式为 @"#FFFFFF"
@property(nonatomic, strong) NSString * faceCircleColor;

/// 验证请求超时时间设置
@property(nonatomic, strong) NSNumber * vertifyOutTime;

/// 是否返回图片,默认为@(NO)
@property(nonatomic, strong)NSNumber * returnImage;

/// 是否返回录制视频地址,默认不返回,格式@(YES) or @(NO)
@property(nonatomic, strong) NSNumber * returnVideo;

/// 活体检测动作
///(默认)眨眼动作活体检测;
/// CLLivingVertifyActionMulti:多动作活体检测,眨眼+任意摇头检测
@property(nonatomic, assign) CLLivingVerifyAction vertifyAction;

///是否自定义协议,默认为@(YES),显示协议页 ,为@(NO)需要用户自定义协议页面
@property(nonatomic, assign)NSNumber * showProtocol;

+ (CLLvingConfig *)defaultConfig;

示例代码

CLLvingConfig * config = [CLTestSettingModel defaultConfig];
[CLLivingDetectManager setLivingConfig:config];

3.开始认证

  • 调用此方法会启动 SDK 内部活体检测界面,并返回第4 步服务端查询刷脸认证结果所需要的certifyId。

方法原型

/// 开启活体校验
/// @param viewController 当前显示viewcontroller
/// @param completion 返回结果
+ (void)startVerifyWithViewController:(UIViewController *)viewController
                            completion:(void(^)(CLLivingResult * result))completion;

示例代码

[CLLivingDetectManager startVerifyWithViewController:self completion:^(CLLivingResult * _Nonnull result) {
}];

刷脸认证结果

/**
 SDK返回外层码
 10000 :刷脸结束
 10001:校验失败
 10002:验签失败
 10003:网络异常
 10004:本地异常
 */
@property (nonatomic, assign, readonly)NSInteger code;
/// SDK返回响应描述
@property (nonatomic, strong, readonly)NSString * message;
/// SDK内层码
@property (nonatomic, assign )NSInteger  innerCode;
/// SDK内层描述,可查看具体原因
@property (nonatomic, strong )NSString * innerMessage;
/// SDK报错,返回错误信息
@property (nonatomic, strong, readonly)NSError * error;
@property (nonatomic, strong)id ext;
/// SDK 活体检测后返回详细信息
@property (nonatomic, strong)CLLivingDetectResponse * response;

4.查询认证结果

客户端刷脸结束,并不能判断是否为真是自然人,务必对接服务端 “活体检测结果查询” 接口,并以服务端查询接口返回的结果为准。 

5.日志开关

  • 放到初始化之前调用,开启后可打印 SDK 内部调用日志

方法原型

/// 是否开启控制台日志打印
/// @param enable 默认为NO
+ (void)setPrintConsoleEnable:(BOOL)enable;

示例代码

[CLLivingDetectManager setPrintConsoleEnable:YES];

三、返回码

外层码外层描述内层码内层描述
10000刷脸结束1000刷脸结束,请通过服务端查询接口获取认证结果(Android端、iOS端)
10001校验失败1001本地代码异常(Android端)
人脸识别算法初始化失败(Android端)
不支持的CPU架构(Android端)
Android系统版本过低(Android端)
刷脸超时(单次)(Android端、iOS端)
多次刷脸超时(Android端、iOS端)
无前置摄像头(Android端)
摄像头权限未赋予(Android端)
打开摄像头失败(Android端)
SDK认证流程正在进行中,请等待本地认证流程完成后再发起新调用(Android端)
上传炫彩Meta信息失败(Android端)
上传炫彩视频失败(Android端)
用户点击Home键(Android端)
抱歉,系统出错了,请您稍后再试(iOS端)
拒绝开通相机权限(iOS端)
无法启动相机(iOS端)
本地活体检测出错(iOS端)
验证中断(用户点击home键等导致验证停止)(iOS端)
业务参数错误(iOS端)
本地活体检测出错(iOS端)
1003用户主动退出认证(Android端、iOS端)
用户暂不认证(Android端)
2001用户OCR主动退出(iOS端)
2002
客户端初始化网络错误(Android端)
客户端初始化接口返回网络错误(Android端)
信息上传网络错误(Android端)
服务端认证接口网络错误(Android端)
服务端接口并发请求超出限制(Android端)
网络错误(iOS端)
2003客户端设备时间错误(iOS端)
2006刷脸结束,请通过服务端查询接口获取认证结果(Android端、iOS端)
10002验签失败400001参数校验异常(Android端、iOS端)
600016Android签名参数异常(Android端)
600009bundleId不能为空(iOS端)
600017平台类型非法(Android端、iOS端)
600005签名校验失败(Android端、iOS端)
600018签名失效(Android端、iOS端)
600004包名签名对应的appid不匹配 或 appid未匹配到应用(Android端、iOS端)
500006请求外部系统失败(Android端、iOS端)
600019包名签名校验失败(Android端、iOS端)
500003业务操作失败(Android端、iOS端)
1010服务端返回为空(Android端)
10003网络异常1023网络原因导致的超时、域名解析异常等(Android端、iOS端)
10004本地异常1014本地捕获异常(Android端、iOS端)
10005重复调用1015刷脸进行中,请稍后再试
10006代理异常1016代理返回为空
24小时热线 400-9669-253