接入流程与说明

最近更新时间:2019-07-09 14:59:16

整体工作流程

人脸识别主要流程包括以下步骤:

  1. 登录人脸识别 SDK,即 loginInLiveCheckXXX 方法。
  2. 登录结果返回,在第一步登录成功以后,SDK 会自动拉起活体检测界面进行活体检测,进入第三步;如果登录失败,则不会拉起活体检测页面,会通过 failure block 回调返回一个 WBFaceError 对象。
  3. 人活体检测的具体过程,若成功,进入第四步;若失败,进入第五步。
  4. 人活体检测前端 SDK 检测结果上送后台进行活体检测以及人脸比对等服务。
  5. 服务结果返回,通过 delegate 回调方法或者注册 NSNotification 的方式获取活体检测/人脸比对的结果,结果封装在 WBFaceVerifyResult。

登录接口说明

iOS 人脸识别接口大部分参数说明请参考头文件注释。

注意:

userid,nonce,sign,orderNo 等参数建议通过接入方后台透传给前端,前端无需在本地生成。

方法功能一:

如果使用活体检测服务+人脸比对服务(身份证的网纹照片进行对比)方式,则需要传入 faceID,其中faceID需要合作方后台调用相关接口生成faceID, 其中userid,nonce,sign,orderNo要与生成sign时, 使用的相同

方法功能二:

如果使用活体检测服务+人脸比对服务(合作方提供的比对源图片进行比对),则需要传入 faceID,其中 faceID 需要合作方后台调用相关接口生成 faceID, 其中 userid,nonce,sign,orderNo 要与生成 sign 时, 使用的相同, 在生成 faceID 时传入比对源图片。

方法功能三:

仅使用活体检测,通过活体检测服务判断是否是真人。

识别界面拉起方式说明

默认情况 SDK 会创建一个全屏幕大小的 UIWindow,覆盖在当前屏幕上方,并且默认 windowLevel=UIWindowLevelNormal+1。

识别结果回调方式说明

SDK 中,人脸识别结果返回给接入方有两种方式,两种结果回调都在 Main Thread 完成:

  • 通过实现 WBFaceVerifyCustomerServiceDelegate 的 WBFaceVerifyCustomerServiceDelegate 方法,通过该方法返回 WBFaceVerifyResult 对象。
  • 无需实现 delegate 方法,通过注册 WBFaceVerifyCustomerServiceDidFinishedNotification 通知,在接受到该通知时,进行结果处理。

WBFaceVerifyCustomerServiceDidFinishedNotification 通知中,通过获取该通知的 userInfo,获取字典中 key 为 faceVerifyResult 对应的 value 对象就是 WBFaceVerifyResult。

WBFaceVerifyResult 说明:

/**
 人脸服务返回结果对象
 */
@interface WBFaceVerifyResult : NSObject
/**
 人脸比对结果是否通过:
 YES: 表示人脸服务通过
 NO:  表示人脸服务不通过
 */
@property (nonatomic, assign, readonly) BOOL isSuccess;
@property (nonatomic, copy, readonly) NSString *orderNo;

/**
 isSuccess == YES 时, sign有值, 通过该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 时候, error 无意义
 isSuccess == NO  时, error中存储的具体错误信息,参考 WBFaceError.h
 */
@property (nonatomic, strong, readonly) WBFaceError *error;

+(instancetype)resultWith:(BOOL)isSuccess error:(WBFaceError *)error;
+(instancetype)resultWith:(BOOL)isSuccess error:(WBFaceError *)error sign:(NSString *)sign;
+(instancetype)resultWith:(BOOL)isSuccess error:(WBFaceError *)error sign:(NSString *)sign liveRate:(NSString *)liveRate similarity:(NSString *)similarity;

-(NSString *)description;
@end