iOS SDK 中,人脸识别结果返回给接入方有两种方式,两种结果回调都在 Main Thread 完成: 如果您只需要获取刷脸结果,不需要拉取视频和照片,您可以信任前端 SDK 核身结果,返回中的 isSuccess 字段 YES 代表人脸核身对比成功;NO 代表人脸核身失败。核身 SDK 和核身后台服务之间通信采用加密方式,可以有效防止结果篡改。
1. 通过实现 WBFaceVerifyCustomerServiceDelegate 的 WBFaceVerifyCustomerServiceDelegate 方法,通过该方法返回 WBFaceVerifyResult 对象。
2. 无需实现 delegate 方法,通过注册WBFaceVerifyCustomerServiceDidFinishedNotification 通知,在接受到该通知时,进行结果处理。
WBFaceVerifyCustomerServiceDidFinishedNotification通知中,通过获取该通知的 userInfo,获取字典中 key 为 faceVerifyResult对应的 value 对象就是 WBFaceVerifyResult。
WBFaceVerifyResult 说明
字段名 | 类型 | 字段含义 | 说明 |
isSuccess | BOOL | 人脸核身是否成功 | |
sign | NSString | 签名 | 供 App 校验人脸核身结果的安全性 |
liveRate | NSString | 活体检测分数 | - |
similarity | NSString | 人脸比对分数 | “仅活体检测” 类型不提供此分数 |
WbFaceError | 自定义对象 | 人脸核身错误 | 人脸核身成功时为 nil |
WBFaceError 对象说明
字段名 | 类型 | 字段含义 | 说明 |
domain | NSString | 错误发生的阶段 | 只有当 domain=WBFaceErrorDomainCompareServer 时表示用户完成了刷脸,可以通过接口去拉取刷脸结果。其他 domain 表示用户刷脸中途退出或命中了风控逻辑,后端无法查询到刷脸结果 |
code | NSString | 错误码 | - |
desc | NSString | 错误描述 | 如有需求,可以展示给用户 |
reason | NSString | 错误信息内容 | 错误的详细实际原因,主要用于定位问题 |
RiskInfo | 自定义对象 | 后台返回的刷脸风险信息 | 请注意:部分情况下此字段不返回,请不要做强校验 |
RiskInfo 对象说明
RiskInfo 是 SDK 用来给合作方传递刷脸风险信息的对象,在结果回调的 WBFaceVerifyResult 对象中作为参数返回给合作方 App。 其中 RiskInfo 对象的各个字段意义如下表所示:
字段名 | 类型 | 字段含义 | 说明 |
deviceInfoLevel | String | 设备风险等级 | 设备风险级别,如果命中风险则显示 |
deviceInfoTag | String | 设备风险标签 | 设备风险等级描述 |
riskInfoLevel | String | 身份风险等级 | 如果命中身份风险则显示风险等级 |
riskInfoTag | String | 身份风险标签 | 身份风险等级描述 |
@interface WBFaceSimpleModeResult : NSObject/**结果对应的订单号*/@property (nonatomic, copy, readonly) NSString *orderNo;/**接下来用于人脸对比的安全性参数*/@property (nonatomic, copy, readonly) NSString *encryptAESKey;/**视频编码*/@property (nonatomic, copy, readonly) NSString *userVideoString;/**使用传入 publickey 加密过的 AES*/@property (nonatomic, copy, readonly) NSString *videoEncryptAESKey;/**用于后面进行人脸比对的数据参数*/@property (nonatomic, copy, readonly) NSString *identifyStr;@end/*增强级结果,具体参数含义参考后台返回字段,结果为透传*/@interface WBFaceRiskInfo : NSObject@property (nonatomic, copy, readonly) NSString *deviceInfoLevel;@property (nonatomic, copy, readonly) NSString *deviceInfoTag;@property (nonatomic, copy, readonly) NSString *riskInfoLevel;@property (nonatomic, copy, readonly) NSString *riskInfoTag;@end/**人脸服务返回结果对象*/@interface WBFaceVerifyResult : NSObject/**人脸比对结果是否通过:YES:表示人脸服务通过NO:表示人脸服务不通过*/@property (nonatomic, assign, readonly) BOOL isSuccess;/**结果对应的订单号*/@property (nonatomic, copy, readonly) NSString *orderNo;/**isSuccess == YES 时,sign 有值,可以去后台拉取本次人脸服务的照片,视频存证isSuccess == NO 时,sign 无意义*/@property (nonatomic, copy, readonly) NSString * sign;/**活体检测服务得分isSuccess == YES 时, liveRate 有值:1.liveRate 可能是 @"分数为空", 这种情况具体咨询合作方2.float类型的字符串, 请调用 [liveRate floatValue] 获取具体分数isSuccess == NO 时, liveRate 无意义*/@property (nonatomic, copy, readonly) NSString * liveRate;/**人脸比对服务得分isSuccess == YES 时, similarity 有值:1.similarity 可能是 @"分数为空", 这种情况具体咨询合作方2.float类型的字符串, 请调用 [similarity floatValue] 获取具体分数isSuccess == NO 时, similarity 无意义*/@property (nonatomic, copy, readonly) NSString * similarity;/**人脸比对图片之一isSuccess == YES 时,该属性是上送比对图片之一UIImage的base64编码字符串(图片格式是jpg)isSuccess == NO 时,如果是 SDK 返回的错误码,该属性为nil,如果是后端返回的错误,该属性是上送比对图片之一UIImage的base64编码字符串(图片格式是jpg)*/@property (nonatomic, copy, readonly) NSString * userImageString;/**isSuccess == YES 时候, error 无意义isSuccess == NO 时, error中存储的具体错误信息,参考 WBFaceError.h*/@property (nonatomic, strong, readonly) WBFaceError * error;#pragma mark - 非标专用返回参数@property (nonatomic, strong, readonly) WBFaceSimpleModeResult *simpleModeResult;#pragma mark - 增强SDK专用参数@property (nonatomic, strong, readonly) WBFaceRiskInfo *riskInfo;#pragma mark --(NSString *)description;@end