ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### 1.下载 下载 [ 人脸登录 SDK ](http://attachment.yun2win.com/v1/attachments/1589797711229407/85e6e32427f7c053a949d61997986451),里面包含了 SDK、 demo,开发者可以自己研读实践。 # ### 2.集成 将下载的 SDK 导入到项目并添加到 Targets -> General -> Embedded Binaries 里,如下图 ![导入SDK](https://attachment.yun2win.com/v1/attachments/1589786596018679/75d9f95b8abf5d4d2c6f45deff9740ed) > Embed 要选中 Embed & Sign # 在需要使用的地方导入头文件: ~~~ #import <FRS_SDK/FRS_SDK.h> ~~~ > 目前仅支持真机运行 > Build Configuration 仅支持 Release # ### 3.调用方式 ~~~ - (void)viewDidLoad { [super viewDidLoad]; // 创建实例 self.faceLogin = [[FRSFaceLogin alloc] initWithDelegate: self]; // 设置 accessToken (应从服务端获取) [self.faceLogin setAccessToken: accessToken]; // 传入照片进行识别 [self.faceLogin validate: image]; } // 在此设备首次识别成功会要求输入工号进行验证 - (void)handleConfirmForFaceLogin:(FRSFaceLogin *)faceLogin{ // 输入工号后调用 [self.faceLogin confirm: number] 进行验证 } // 识别成功后会接收到一个临时 identityToken(5分钟有效期) - (void)faceLogin:(FRSFaceLogin *)faceLogin didSuccessWithIdentityToken:(NSString *)identityToken{ // 获取 identityToken 后提交到服务端进行登录 } // 调用时捕获到的一些事件需要处理 - (void)faceLogin:(FRSFaceLogin *)faceLogin handleEvent:(FRSFaceLoginEventCode)eventCode{ switch (eventCode) { case FRSFaceLoginEventCodeAccessTokenInvalid: case FRSFaceLoginEventCodeAccessTokenHasExpired: // 获取并设置新 [self.faceLogin setAccessToken: accessToken] // 然后继续调用 [self.faceLogin validate: image] break; case FRSFaceLoginEventCodeModuleDisabled: case FRSFaceLoginEventCodeModuleNotFormal: // 此类问题请到富源开放平台查看 break; case FRSFaceLoginEventCodeNoFace: // 没有在照片中找到人脸,使用新照片重试 [self.faceLogin validate: image] break; case FRSFaceLoginEventCodeNoMatchFace: // 照片中存在人脸但不在安全处人脸库中,使用新照片重试 [self.faceLogin validate: image] break; case FRSFaceLoginEventCodeImageFormatError: // 传入的图片格式无法识别,请检查图片是否正确 break; } } // 执行失败,可能是网络错误或其它未知错误 - (void)faceLogin:(FRSFaceLogin *)faceLogin didFailWithError:(NSError *)error { } ~~~ # ### 4.API * FRSFaceLogin 类包含人脸登录的主要操作 * FRSFaceLoginDelegate 代理协议包含登录返回结果 * FRSFaceLoginEventCode 枚举包含登录异常的事件码 # ### FaceLogin 成员方法 # ### ◆ 设置 Token ``` - (void)setAccessToken:(NSString *)accessToken; ``` 参数 name | 类型 | 说明 |-|-|-| accessToken | NSString | 在 App 服务器端生成的用于鉴权的 accessToken | >注解: >* 在初始化 FRSFaceLogin 实例后应首先调用 setAccessToken 设置 accessToken。为保证 App 的安全性,App 客户端应请求 App 服务器端接口获取 accessToken(服务端端生成 accessToken,详见[从服务端生成 accessToken](https://help.yun2win.com/fuyuan-help/1700825#1_Accesstoken_0))。 >* 当 accessToken 无效(FRSFaceLoginEventCodeAccessTokenInvalid)或 accessToken 过期(FRSFaceLoginEventCodeAccessTokenHasExpired)时,客户端需要重新请求服务器获取 accessToken,并调用 setAccessToken 进行设置。 # ### ◆ 人脸验证 ``` - (void)validate:(UIImage *)image; ``` 参数 name | 类型 | 说明 |-|-|-| image | NSString | 摄像头采集的图片 | >注解:第一次调用 validate 之前,必须设置应用的 accessToken。 # ### ◆ 确认工号 ``` - (void)confirm:(NSString *)uid; ``` 参数 name | 类型 | 说明 |-|-|-| uid | NSString | 员工工号 | > 注解: 此方法仅能在触发 - (void)handleConfirmForFaceLogin:(FRSFaceLogin *)faceLogin 代理方法后使用,要求用户输入工号后调用 confirm 进行验证。 # ### FRSFaceLoginDelegate 代理方法 ### ◆ 处理验证员工工号 ``` - (void)handleConfirmForFaceLogin:(FRSFaceLogin *)faceLogin; ``` 接收到此回调需要让用户输入员工工号,然后调用 confirm 进行验证。 > * 首次调用 validate 成功会触发 - (void)handleConfirmForFaceLogin:(FRSFaceLogin *)faceLogin 代理方法。 > * 用户在一个设备识别并验证成功后,下次就不会再触发 - (void)handleConfirmForFaceLogin:(FRSFaceLogin *)faceLogin 代理方法。 # ### ◆ 人脸验证通过 ``` - (void)faceLogin:(FRSFaceLogin *)faceLogin didSuccessWithIdentityToken:(NSString *)identityToken; ``` 人脸验证成功后会触发此回调 > identityToken 可用来获取用户信息。 # ### ◆ 人脸验证异常事件处理 ``` - (void)faceLogin:(FRSFaceLogin *)faceLogin handleEvent:(FRSFaceLoginEventCode)eventCode; ``` 调用 validate 时可能会接收到的异常事件,需要处理后再次调用 validate | FRSFaceLoginEventCode 枚举值 | 描述 | 处理方式 | | - | :-: | :-: | | FRSFaceLoginEventCodeModuleDisabled | 模块已被禁用 | 开通模块 | | FRSFaceLoginEventCodeModuleNotFormal | 模块还未申请正式 | 申请正式服务 | | FRSFaceLoginEventCodeAccessTokenInvalid | accessToken 无效 | 实时更新 Token | | FRSFaceLoginEventCodeAccessTokenHasExpired | accessToken 已过期 | 实时更新 Token | | FRSFaceLoginEventCodeNoFace | 未检测到人脸 | 拍照重试 | | FRSFaceLoginEventCodeNoMatchFace | 未找到匹配的人脸 | 拍照重试 | | FRSFaceLoginEventCodeImageFormatError | 输入图片格式不正确 | 检查图片是否正常 | # ### ◆ 人脸验证出现错误 ``` - (void)faceLogin:(FRSFaceLogin *)faceLogin didFailWithError:(NSError *)error ``` 执行失败,可能是网络错误或其它未知错误