1 iOS Pro SDK集成说明
1.1 准备工作
- 确认已经获取AppID、AppKey、OCR License(aip.license)、活体License(idl-license.face-ios) 和 Face_Name。将aip.license和idl-license.face-ios放到CWResource.bundle资源包中。
- Face_Name的具体命名规则:
appName +“-face-ios”
appName为申请账户时,提交给远程实名管理平台的应用名称。
1.2 引入SDK和配置工程
- 在General-> Embeded Binaries 中添加:
修改项目配置
Other Link flags添加-ObjC
info.plist 配置
- iOS 集成需要在 info.plist 文件中添加
Privacy - Camera Usage Description
字段,客户根据业务需求填写相关说明。
- iOS 集成需要在 info.plist 文件中添加
Privacy - Microphone Usage Description
字段,客户根据业务需求填写相关说明。
- iOS 集成需要在 info.plist 文件中添加
Privacy - Photo Library Usage Description
字段,客户根据业务需求填写相关说明。
- iOS 集成需要在 info.plist 文件中添加
Privacy - Location When In Use Usage Description
字段,客户根据业务需求填写相关说明。
- iOS 集成需要在 info.plist 文件中添加
Privacy - Motion Usage Description
字段,客户根据业务需求填写相关说明。
在所需类中导入.h文件
#import <PayEgisAuthentication/MTUtil.h>
#import <PayEgisAuthentication/PayEgisAuthentication.h>
#import <PayEgisAuthentication/PayegisAuthSDK.h>
1.3 SDK初始化
方法名为:
- (void) initSDK : (NSMutableDictionary*)context completionBlock:(PayegisAuthInitCompletionBlock)completionBlock
参数说明:
参数名称 |
参数类型 |
描述 |
备注 |
context |
NSMutableDictionary |
上下文 |
初始化参数 |
上下文参数说明
参数 |
参数类型 |
描述 |
备注 |
PayegisAuthSDKAppId |
NSString |
AppId |
申请下发的id |
PayegisAuthSDKAppKey |
NSString |
AppKey |
申请下发的key |
PayegisAuthSDKAppFaceName |
NSString |
Face_Name |
应用名称(注册开户填写的应用名) |
参考代码:
PayegisAuthSDK *_sdk = [PayegisAuthSDK shareInstance];
// OCR扫描界面是否支持选择图库图片
//_sdk.isShowAlbum = YES;
// 首次是否弹出温馨提示
//_sdk.isHiddenAlert = YES;
// 设置OCR返回结果是图片对象还是字典对象
// [_sdk setOCRCallBackImageType:NO];
NSMutableDictionary *context = [NSMutableDictionary dictionaryWithObjectsAndKeys:
AppId,PayegisAuthSDKAppId,//必须
AppKey,PayegisAuthSDKAppKey,// 必须
Face_Name,PayegisAuthSDKAppFaceName,//必须
nil];
[_sdk initSDK:context completionBlock:^(NSError *error) {
if (!error) {
NSLog(@"初始化成功");
}
}];
[danger] 注意
OCR扫描界面是否支持选择图库图片,通过isShowAlbum属性控制;
isHiddenAlert 标准化流程中首次使用弹出提示信息
setOCRCallBackImageType 设置OCR扫描返回结果的类型 YES 返回UIImage对象 NO 返回NSDictionary对象,包括裁剪图和原图
1.4 身份证OCR
先使用'openOCR'方法获取身份证正面和反面图像,然后调用'idOCROnly'方法,获取身份证相关信息
- 身份证OCR扫描获取图片,v3.3.0版本中新增方法,可以无需退出扫描界面直接进行下一面的扫描。可以根据需求选择调用的方法,下面是两个方法的介绍和使用。
1.OCR 扫描(身份证单面扫描)
方法名称为:
- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
PECardType |
NS_ENUM |
卡片类型 |
PECardType_ID_FRONT 身份证正面 PECardType_ID_BACK 身份证反面 PECardType_BANK 银行卡 PECardType_Other 其他类型卡片 |
参考代码:
WeakSelf(weakSelf)
[_sdk openOCR:PECardType_ID_FRONT completionBlock:^(id returnObj) {
if ([returnObj isKindOfClass:[NSDictionary class]] ) {
NSDictionary *imageDic = (NSDictionary *) returnObj;
if (imageDic.allKeys.count > 0) {
// 裁剪过后的图
[weakSelf.idCardFrontImgV setImage:imageDic[@"image"]];
weakSelf.frontImg = imageDic[@"image"];
//原图
weakSelf.frontOriginImg = imageDic[@"orign"];
}
}else{
if (returnObj != nil) {
[weakSelf.idCardFrontImgV setImage:returnObj];
weakSelf.frontImg = returnObj;
}
}
}];
2.OCR 扫描(身份证自动正反面扫描)
方法名称为:
- (void) openOCR:(PECardType) cardType idImgsDictinary:(NSDictionary *) idImgsDictinary completionBlock:(ImageOCROnceBlock) retunBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
PECardType |
NS_ENUM |
卡片类型 |
PECardType_ID_FRONT 身份证正面(先进行正面扫描) PECardType_ID_BACK 身份证反面(先进行反面扫描) |
idImgsDictinary |
NSDictionary |
正反面图片 |
选填 front 身份证正面图片 back 身份证反面图片 |
参考代码:
WeakSelf(weakSelf)
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:self.frontImg?self.frontImg:@"",@"front",self.backImg,@"back", nil];
[_sdk openOCR:PECardType_ID_FRONT idImgsDictinary:dic completionBlock:^(id frontObj, id backObj) {
if ([frontObj isKindOfClass:[NSDictionary class]] ) {
NSDictionary *frontDic = (NSDictionary *) frontObj;
if (frontDic.allKeys.count > 0) {
[weakSelf.idCardFrontImgV setImage:frontDic[@"image"]];
weakSelf.frontImg = frontDic[@"image"];
// 原图
weakSelf.frontOriginImg = frontDic[@"orign"];
}
NSDictionary *backDic = (NSDictionary *) backObj;
if (backDic.allKeys.count > 0) {
[weakSelf.idCardbackImgV setImage:backDic[@"image"]];
weakSelf.backImg = backDic[@"image"];
// 原图
weakSelf.backOriginImg = backDic[@"orign"];
}
}else{
if (frontObj) {
[weakSelf.idCardFrontImgV setImage:frontObj];
weakSelf.frontImg = frontObj;
}
if (backObj) {
[weakSelf.idCardbackImgV setImage:backObj];
weakSelf.backImg = backObj;
}
}
}];
方法名称为:
- (void) idOCROnly:(UIImage *) frontImg backImg:(UIImage *) backImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock
需要以下入参:
参数 |
参数类型 |
描述 |
frontImg |
UIImage |
身份证正面 |
backImg |
UIImage |
身份证反面 |
参考代码:
WeakSelf(weakSelf)
[_sdk idOCROnly:self.idCardFrontImgV.image backImg:self.idCardbackImgV.image completionBlock:^(NSDictionary *result, NSError *error) {
[weakSelf hideWaiting];
if (error) {
NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey];
[weakSelf showError:string];
}else{
[weakSelf.nameView setInfoString:result[@"name"]];
[weakSelf.IDView setInfoString:result[@"cid"]];
[weakSelf.timeView setInfoString:[NSString stringWithFormat:@"%@-%@",result[@"validateFrom"],result[@"validateTo"]]];
}
}];
名称 |
类型 |
描述 |
name |
NSString |
姓名 |
cid |
NSString |
身份证号 |
sex |
NSString |
性别 |
folk |
NSString |
民族 |
birthday |
NSString |
出生 |
address |
NSString |
地址 |
authority |
NSString |
发证机关 |
validateFrom |
NSString |
有效期开始时间 |
validateTo |
String |
有效期结束时间 |
1.5 银行卡OCR
先使用'openOCR'获取银行卡图片,然后调用'bankOCROnly'方法,获取银行卡相关信息。
- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
PECardType |
NS_ENUM |
卡片类型 |
PECardType_ID_FRONT 身份证正面 PECardType_ID_BACK 身份证反面 PECardType_BANK 银行卡 PECardType_Other 其他类型卡片 |
参考代码:
WeakSelf(weakSelf)
[_sdk openOCR:PECardType_BANK completionBlock:^(id returnObj) {
if ([returnObj isKindOfClass:[NSDictionary class]]) {
NSDictionary *bankDic = (NSDictionary *) returnObj;
if (bankDic.allKeys.count > 0) {
[weakSelf.bankImgV setImage:bankDic[@"image"]];
weakSelf.bankCardImg = bankDic[@"image"];
// 原图
weakSelf.bankCardOriginImg = bankDic[@"orign"];
}
}else{
if (returnObj == nil) {
return;
}
weakSelf.bankCardImg = returnObj;
[weakSelf.bankImgV setImage:returnObj];
}
}];
- (void) bankOCROnly:(UIImage *) bankImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock
需要以下入参:
参数 |
参数类型 |
描述 |
bankImg |
UIImage |
银行卡正面 |
参考代码:
WeakSelf(weakSelf)
[_sdk bankOCROnly:self.bankImgV.image completionBlock:^(NSDictionary *result, NSError *error) {
[weakSelf hideWaiting];
if (error) {
NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey];
[weakSelf showError:string];
}else{
NSString *cardNO = [weakSelf subStringWithNumber:4 str:result[@"cardno"] padding:@" "];
[weakSelf.cardView setInfoString:cardNO];
[weakSelf.bankView setInfoString:result[@"bankname"]];
[weakSelf.typeView setInfoString:result[@"cardtype"]];
}
}];
名称 |
类型 |
描述 |
bankname |
NSString |
发卡行 |
cardno |
NSString |
银行卡号 |
cardtype |
NSString |
卡类型 |
1.6 驾驶证OCR
先使用'openOCR'获取驾驶证图片,然后调用'drivingOCROnly'方法,获取驾驶证相关信息。
- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
PECardType |
NS_ENUM |
卡片类型 |
PECardType_ID_FRONT 身份证正面 PECardType_ID_BACK 身份证反面 PECardType_BANK 银行卡 PECardType_Other 其他类型卡片 |
参考代码:
WeakSelf(weakSelf)
[_sdk openOCR:PECardType_Other completionBlock:^(id returnObj) {
if ([returnObj isKindOfClass:[NSDictionary class]]) {
NSDictionary *bankDic = (NSDictionary *) returnObj;
if (bankDic.allKeys.count > 0) {
[weakSelf.contentIV setImage:bankDic[@"image"]];
weakSelf.contentImg = bankDic[@"image"];
}
}else{
if (returnObj == nil) {
return;
}
weakSelf.contentImg = returnObj;
[weakSelf.contentIV setImage:returnObj];
}
}];
- (void) drivingOCROnly:(UIImage *) contentImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock
需要以下入参:
参数 |
参数类型 |
描述 |
contentImg |
UIImage |
驾驶证图片 |
参考代码:
WeakSelf(weakSelf)
[_sdk drivingOCROnly:self.contentImg completionBlock:^(NSDictionary *result, NSError *error) {
[weakSelf hideWaiting];
if (error) {
NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey];
[weakSelf showError:string];
}else{
// 处理结果
[weakSelf ocrOnDrivingLicenseSuccessful:result];
}
}];
// 处理结果方法
- (void)ocrOnDrivingLicenseSuccessful:(id)result {
NSLog(@"%@", result);
NSMutableString *message = [NSMutableString string];
if(result){
[self.nameInfoView setInfoString:result[@"name"]];
[self.sexInfoView setInfoString:result[@"sex"]];
[self.bornInfoView setInfoString:result[@"birthday"]];
[self.countryInfoView setInfoString:result[@"nationality"]];
[self.addressInfoView setInfoString:result[@"address"]];
[self.driveTypeInfoView setInfoString:result[@"type"]];
[self.carNumInfoView setInfoString:result[@"certNo"]];
[self.startDateInfoView setInfoString:result[@"validateFrom"]];
[self.initialDateInfoView setInfoString:result[@"getCertTime"]];
if ([result[@"validateTo"] length]) {
[self.effectiveDateInfoView setInfoString:[NSString stringWithFormat:@"%@至%@",result[@"validateTime"],result[@"validateTo"]]];
}else{
[self.effectiveDateInfoView setInfoString:result[@"validateTime"]];
}
}else{
[message appendFormat:@"%@", result];
}
}
名称 |
类型 |
描述 |
name |
NSString |
姓名 |
sex |
NSString |
性别 |
birthday |
NSString |
出生日期 |
nationality |
NSString |
国籍 |
address |
NSString |
住址 |
type |
NSString |
准驾车型 |
certNo |
NSString |
证号 |
validateFrom |
NSString |
有效起始日期 |
getCertTime |
NSString |
初次领证日期 |
validateTime |
NSString |
有效日期(如:6年,或者拼接validateTo形成时间区间) |
validateTo |
NSString |
有效日期截止时间 |
1.7 行驶证OCR
先使用'openOCR'获取行驶证图片,然后调用' vehicleOCROnly'方法,获取行驶证相关信息。
- (void) openOCR:(PECardType) cardType completionBlock:(ImageOCRBlock) retunBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
PECardType |
NS_ENUM |
卡片类型 |
PECardType_ID_FRONT 身份证正面 PECardType_ID_BACK 身份证反面 PECardType_BANK 银行卡 PECardType_Other 其他类型卡片 |
参考代码:
WeakSelf(weakSelf)
[_sdk openOCR:PECardType_Other completionBlock:^(id returnObj) {
if ([returnObj isKindOfClass:[NSDictionary class]]) {
NSDictionary *bankDic = (NSDictionary *) returnObj;
if (bankDic.allKeys.count > 0) {
[weakSelf.contentIV setImage:bankDic[@"image"]];
weakSelf.contentImg = bankDic[@"image"];
}
}else{
if (returnObj == nil) {
return;
}
weakSelf.contentImg = returnObj;
[weakSelf.contentIV setImage:returnObj];
}
}];
- (void) vehicleOCROnly:(UIImage *) contentImg completionBlock:(PayegisTokenAuthCompletionBlock) completionBlock
需要以下入参:
参数 |
参数类型 |
描述 |
contentImg |
UIImage |
行驶证图片 |
参考代码:
WeakSelf(weakSelf)
[_sdk vehicleOCROnly:self.contentImg completionBlock:^(NSDictionary *result, NSError *error) {
[weakSelf hideWaiting];
if (error) {
NSString *string = [error.userInfo valueForKey:@"message"]?:[error.userInfo valueForKey:NSLocalizedDescriptionKey];
[weakSelf showError:string];
}else{
[weakSelf ocrOnVehicleLicenseSuccessful:result];
}
}];
// 处理结果方法
- (void)ocrOnVehicleLicenseSuccessful:(id)result {
NSLog(@"%@", result);
NSMutableString *message = [NSMutableString string];
if(result){
[self.nameInfoView setInfoString:result[@"name"]];
[self.addressInfoView setInfoString:result[@"address"]];
[self.brandTyhpeInfoView setInfoString:result[@"brand"]];
[self.carTypeInfoView setInfoString:result[@"carType"]];
[self.numberInfoView setInfoString:result[@"plate"]];
[self.engineNumInfoView setInfoString:result[@"engine"]];
[self.useInfoView setInfoString:result[@"useType"]];
[self.registDateInfoView setInfoString:result[@"registerDate"]];
[self.issueDateInfoView setInfoString:result[@"certDate"]];
[self.idCodeInfoView setInfoString:result[@"nickNo"]];
}else{
[message appendFormat:@"%@", result];
}
}
}
名称 |
类型 |
描述 |
name |
NSString |
所有人 |
address |
NSString |
住址 |
brand |
NSString |
品牌型号 |
carType |
NSString |
车辆类型 |
plate |
NSString |
号牌号码 |
engine |
NSString |
发动机号码 |
useType |
NSString |
使用性质 |
registerDate |
NSString |
注册日期 |
certDate |
NSString |
发证日期 |
nickNo |
NSString |
车辆识别代码 |
1.8 活体检测
活体检测分为两个接口: startLivenessAction: completion:、startLivenessAction: randomBool:completion:
方法名称为:
-(void)startLivenessAction:(NSInteger) count completion:(LivenessCompletionBlock)completionBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
count |
NSInteger |
活体数目 |
count < 1动作数目默认为1 1=< count <=6 动作数目为count count > 6 动作数目默认为6 |
completionBlock |
Block |
返回图片 |
returnImage |
参考代码:
WeakSelf(weakSelf)
[_sdk startLivenessAction:3 completion:^(UIImage *retunImage) {
if (retunImage == nil) {
[self showError:@"未获取到图片"];
}else{
weakSelf.realImageView.image = retunImage;
}
}];
方法名称为:
- (void) startLivenessAction:(NSArray *) actionsArray randomBool:(BOOL)randomBool completionBlock:(LivenessCompletionBlock) completionBlock
需要以下入参:
参数 |
参数类型 |
描述 |
备注 |
actionsArray |
NSArray |
动作数组 |
不允许设置重复动作 PEFaceLivenessActionTypeLiveEye = 0,// 眨眼 PEFaceLivenessActionTypeLiveMouth = 1, // 张嘴 PEFaceLivenessActionTypeLiveYawRight = 2, // 向右摇头 PEFaceLivenessActionTypeLiveYawLeft = 3, // 向左摇头 PEFaceLivenessActionTypeLivePitchUp = 4, // 抬头 PEFaceLivenessActionTypeLivePitchDown = 5 // 低头 |
randomBool |
BOOL |
是否随机 |
Yes 随机 NO 不随机 |
completionBlock |
Block |
返回图片 |
returnImage |
参考代码:
WeakSelf(weakSelf)
[_sdk startLivenessAction:@[@(PEFaceLivenessActionTypeLiveEye),@(PEFaceLivenessActionTypeLiveYawLeft),@(PEFaceLivenessActionTypeLiveYawRight)] randomBool:YES completionBlock:^(UIImage *retunImage) {
if (retunImage == nil) {
[self showError:@"未获取到图片"];
}else{
weakSelf.realImageView.image = retunImage;
}
}];
1.9 指纹识别
SDK Pro中封装了系统指纹识别,使用了PKI(Public Key Infrastructure)技术来保证指纹识别信息传输的机密性和完整性。
方法名称为:
- (void)peTouchIDWithMessage:(NSString *)message fallbackTitle:(NSString *)fallbackTitle completeBlock:(void (^)(NSError *error)) completeBlock
参数说明:
参数 |
参数类型 |
描述 |
备注 |
message |
NSString |
Touch ID 提示语 |
|
fallbackTitle |
NSString |
用于设置左边的按钮的名称,默认为空不显示 |
|
account |
NSString |
账号 |
(不能含有中文和特殊字符) |
businessID |
NSString |
业务标志 建议随机产生,确保每次不一样 |
不能含有中文和特殊字符 |
completeBlock |
Block |
指纹识别的回调处理 回调参数error,error 为空表示Touch ID 成功,error 不为空,错误码与系统相同,具体说明如下 |
错误码说明:
错误码 |
描述 |
LAErrorAuthenticationFailed |
验证信息出错,就是说你指纹不对 |
LAErrorUserCancel |
用户取消了验证 |
LAErrorUserFallback |
用户点击了手动输入密码的按钮,所以被取消了 |
LAErrorSystemCancel |
被系统取消,就是说你现在进入别的应用了,不在刚刚那个页面,所以没法验证 |
LAErrorPasscodeNotSet |
密码在设备上没有设置 |
LAErrorTouchIDNotAvailable |
设备不支持TouchID |
LAErrorTouchIDNotEnrolled |
设备没有设置手指指纹 |
LAErrorTouchIDLockout |
用户错误次数太多,现在被锁住了 |
LAErrorAppCancel |
在验证中被其他app中断 |
LAErrorInvalidContext |
授权过程中,LAContext对象被释放掉了,造成的授权失败 |
-101 |
其他错误 |
参考代码:
[_sdk peTouchIDWithMessage:@"远程实名认证需要验证TouchID" fallbackTitle:@"" account:@"account" businessID:@"businessID" completeBlock:^(NSError *error) {
if (error == nil) {
NSDate *date = [NSDate new];
self.showDescLabel.text = [NSString stringWithFormat: @"Touch ID验证成功--%ld",(long)[date timeIntervalSince1970]];
}else{
self.showDescLabel.text = [error.userInfo objectForKey:NSLocalizedDescriptionKey];
}
}];
2.0 远程身份认证(不含银行卡认证)
方法名称为:
- (void) startIDCardTokenAuthToken :(NSString *) token CompletionBlock : (PayegisTokenAuthCompletionBlock) completionBlock
参数说明:
参数 |
参数类型 |
描述 |
备注 |
Token |
NSString |
事务号 |
身份证认证流程事务号 |
参考代码:
[_sdk startIDCardTokenAuthToken:self.authCode CompletionBlock:^(NSDictionary *result, NSError *error) {
if (error) {
RAResultViewController * resultVC = [[RAResultViewController alloc]init];
resultVC.token = self.authCode;
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:resultVC];
[self presentViewController:nav animated:YES completion:nil];
}else{
RAResultViewController * resultVC = [[RAResultViewController alloc]init];
resultVC.token = self.authCode;
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:resultVC];
[self presentViewController:nav animated:YES completion:nil];
}
}];
2.1 远程身份银行卡认证(含银行卡认证)
远程身份银行卡认证分为三要素认证和四要素认证,两者区别是四要素认证会校验手机号。三要素和四要素认证通过txntype
参数来获取不同的事务号。
参数说明:
参数 |
参数类型 |
描述 |
备注 |
txntype |
NSString |
事务号类型 |
NAME_ID_BANKCARD:身份证银行卡(三要素) NAME_ID_BANKCARD_PHONE:身份证银行卡(四要素) |
方法名称为:
- (void) startBankCardTokenAuthToken:(NSString *)token CompletionBlock : (PayegisTokenAuthCompletionBlock) completionBlock
参数说明:
参数 |
参数类型 |
描述 |
备注 |
Token |
NSString |
事务号 |
银行卡认证流程事务号 |
参考代码:
[_sdk startBankCardTokenAuthToken:self.authCode CompletionBlock:^(NSDictionary *result, NSError *error) {
if (error) {
RAResultViewController * resultVC = [[RAResultViewController alloc]init];
resultVC.token = self.authCode;
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:resultVC];
[self presentViewController:nav animated:YES completion:nil];
}else{
RAResultViewController * resultVC = [[RAResultViewController alloc]init];
resultVC.token = self.authCode;
UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:resultVC];
[self presentViewController:nav animated:YES completion:nil];
}
}];
2.2 自定义UI
远程实名认证SDK(V3.3.0以上)提供了以下方法来进行UI的自定义,具体介绍如下
2.2.1 自定义导航条(UINavigationBar)
通过调用- (void) setNavagatinStyleBlock:(PENavigatonVCStyleBlock) block
方法可以设置导航栏的文字颜色、字体大小、背景图片和返回按钮的设置。通过setBarTintColor
方法来设置导航栏的颜色无效。
方法名称为:
- (void) setNavagatinStyleBlock:(PENavigatonVCStyleBlock) block;
参考代码:
[_sdk setNavagatinStyleBlock:^(UINavigationController *nav) {
// 设置文字的颜色
[nav.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:21]}];
// 设置导航条背景图片
[nav.navigationBar setBackgroundImage:[ViewController imageWithColor:[UIColor purpleColor] size:CGSizeMake(1, 1)] forBarMetrics:UIBarMetricsDefault];
// 设置返回按钮
UIImage *backButtonImage = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)];
UIViewController *vc = [[nav viewControllers] objectAtIndex:0];
UIButton *button = (UIButton *) vc.navigationItem.leftBarButtonItem.customView ;
[button setImage:backButtonImage forState:UIControlStateNormal];
}];
2.2.2 自定义按钮
通过调用- (void) setCustomButton:(NSDictionary *) dictinoary;
方法可以设置部分按钮的文字颜色和背景颜色。
方法名称为:
- (void) setCustomButton:(NSDictionary *) dictinoary;
参数说明:
参数 |
参数类型 |
描述 |
备注 |
dictinoary |
NSDictionary |
UIButton相关属性 |
ThemeButtonColor背景颜色 ThemeButtonTintColor文字颜色 |
参考代码:
NSMutableDictionary *themecontext = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[UIColor purpleColor],ThemeButtonColor,
[UIColor brownColor],ThemeButtonTintColor,
nil];
[_sdk setCustomButton:themecontext];
2.2.3 自定义活体检测页面
通过PayEgisFace.framework的PayegisFaceSDK.h提供的- (void) setFaceLivessTheme:(NSDictionary *) dictionary;
方法可以设置活体检测页面文字颜色、圆圈颜色、倒计时边框颜色和文字颜色。
- 下图设置活体检测页面相关文字提示、圆圈、倒计时圆圈和倒计时文字的颜色。
- 下图设置活体检测页面关闭按钮、警告提示、成功提示、背景的图片。
方法名称为:
- (void) setFaceLivessTheme:(NSDictionary *) dictionary;
参数说明:
参数 |
参数类型 |
描述 |
备注 |
dictinoary |
NSDictionary |
页面相关控件颜色 |
FaceRemindLabelColor 文字提示颜色 FaceCircleColor 圆圈颜色 FaceCountDownColor 倒计时颜色 FaceCountDownLabelColor 倒计时文字颜色 |
参考代码:
NSDictionary *faceDictinoary = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor purpleColor],FaceRemindLabelColor,
[UIColor brownColor],FaceCircleColor,
[UIColor redColor],FaceCountDownColor,
[UIColor greenColor],FaceCountDownLabelColor,
nil];
[[PayegisFaceSDK shareInstance] setFaceLivessTheme: faceDictinoary];