文档

iOS SDK UI自定义配置说明

更新时间:

金融级实人认证服务iOS SDK提供自定义UI颜色、icon图标和UI文案的接口,开发者可以通过调用setCustomUIsetCustomTxtConfig接口进行自定义。本文为您介绍UI自定义接口说明以及相关的代码示例。

自定义UI颜色和icon图标

目前仅支持自定义引导页活体认证页的颜色和icon图标。

接口说明

iOS SDK中提供了自定义UI颜色和icon图标的接口:setCustomUI

/**
 * 设置自定义UI
 * @param customConfig 
 * 传入JSON文件路径或者JSON字符串
 * @param type 
 * 传入的config类型path或者json
 * @param completion配置文件结果回调
* */
+ (void)setCustomUI:(nonnull NSString *)configuration type:(nonnull NSString *)type completion:(void(^)(BOOL success, NSError *error))completion;
  • 参数说明

    名称

    类型

    说明

    configuration

    NSString

    配置自定义入参的类型:

    • json:传入JSON字符串。

    • path:传入JSON文件的沙盒路径。

    type

    NSString

    根据传入的configuration,选择传入jsonpath

    completion

    block

    结果信息回调。

    • success为YES表示设置成功。

    • success为NO表示设置的内容存在问题,具体请查看对应返回的error说明。

  • 返回值:无。

示例代码

//传入文件路径
NSString *path = @"/var/mobile/Containers/Data/Application/C9DF10E6-7AB4-4C66-A180-DF1080C93F72/Documents/uiCustom.json";
[AliyunFaceAuthFacade setCustomUI:path type:@"path" completion:^(BOOL success, NSError * _Nonnull error) {
	NSLog(@"%@",error.localizedDescription);
}];

//传入JSON字符串
NSString *jsonString = @"{""\"guideConfig\": \"#FF0000\""}";
[AliyunFaceAuthFacade setCustomUI:jsonString type:@"json" completion:^(BOOL success, NSError * _Nonnull error) {
	NSLog(@"%@",error.localizedDescription);
}];

字段定义

字段列表

{
 "guideConfig": {
 "titleColor": "#111111",
 "titleBackPath": "",
 "titleBackBase64": "",
 "titleClosePath": "",
 "titleCloseBase64": "",
 "bannerImg": "https://mdn.alipayobjects.com/huamei_b7qffi/afts/img/A*PCogQ4jgd6wAAAAAAAAAAAAADnt7AQ/original",
 "agrtUnSelColor": "#c5c5c5",
 "agrtSelBgColor": "#ff6a00",
 "agrtAgreeColor": "#333333",
 "agrtColor": "#ff6a00",
 "startBtnColor": "#ffffff",
 "agrtBotTipsColor": "#333333",
 "startBtnDisColor": "#ffffff",
 "startBtnBgColor": "#ff6a00",
 "startBtnDisBgColor": "#d9d9d9",
 "elderBtnDisColor": "#ffffff",
 "elderBtnBgColor": "#f0f0f0",
 "elderBtnDisBgColor": "#d9d9d9",
 "exitBtnColor": "#333333",
 "exitBtnBgColor": "#ffffff",
 "rareFormNameColor": "#333333",
 "rareFormIDColor": "#333333",
 "elderBtnColor": "#ff6a00",
 "rareFormEntBtnColor": "#ff6a00",
 "permissionToastBgColor": "#ffffff",
 "permissionToastTitleColor": "#000000",
 "permissionToastMsgColor": "#000000",
 "dialogExitTitleColor": "#000000",
 "dialogExitMsgColor": "#000000",
 "dialogExitCancelColor": "#0E83E6",
 "dialogExitConfirmColor": "#0E83E6",
 "dialogPermissionFailedTitleColor": "#000000",
 "dialogPermissionFailedMsgColor": "#000000",
 "dialogPermissionFailedConfirmColor": "#0E83E6",
 "dialogSupportFailedTitleColor": "#000000",
 "dialogSupportFailedMsgColor": "#000000",
 "dialogSupportFailedConfirmColor": "#0E83E6",
 "dialogNetworkFailedTitleColor": "#000000",
 "dialogNetworkFailedMsgColor": "#000000",
 "dialogNetworkFailedConfirmColor": "#0E83E6"
 },
 "faceConfig": {
 "faceBgColor": "#FFFFFF",
 "faceTitleColor": "#000000",
 "circleTxtBgAlpha": "0.25",
 "dialogBgAlpha": "0.25",
 "faceProgressStartColor": "#dfe6eb",
 "faceProgressEndColor": "#FF6A00",
 "circleTxtColor": "#ffffff",
 "exitIconPath": "",
 "exitIconBase64": "",
 "submitTextColor": "#E4E4E4",
 "submitLoadingIconBase64": "",
 "submitLoadingIconPath": "",
 "dialogExitTitleColor": "#000000",
 "dialogExitMsgColor": "#000000",
 "dialogExitCancelColor": "#0E83E6",
 "dialogExitConfirmColor": "#0E83E6",
 "dialogTimeOutTitleColor": "#000000",
 "dialogTimeOutMsgColor": "#000000",
 "dialogTimeOutConfirmColor": "#0E83E6",
 "dialogNetworkFailedTitleColor": "#000000",
 "dialogNetworkFailedMsgColor": "#000000",
 "dialogNetworkFailedConfirmColor": "#0E83E6",
 "dialogArchSysFailedTitleColor": "#000000",
 "dialogArchSysFailedMsgColor": "#000000",
 "dialogArchSysFailedConfirmColor": "#0E83E6",
 "dialogTooManyRetriesTitleColor": "#000000",
 "dialogTooManyRetriesMsgColor": "#000000",
 "dialogTooManyRetriesConfirmColor": "#0E83E6",
 "dialogInterruptTitleColor": "#000000",
 "dialogInterruptMsgColor": "#000000",
 "dialogInterruptConfirmColor": "#0E83E6",
 "dialogInterruptCancelColor": "#0E83E6",
 "dialogSDKErrTitleColor": "#000000",
 "dialogSDKErrMsgColor": "#000000",
 "dialogSDKErrConfirmColor": "#0E83E6",
 "dialogCamOpenFailedTitleColor": "#000000",
 "dialogCamOpenFailedMsgColor": "#000000",
 "dialogCamOpenFailedConfirmColor": "#0E83E6",
 "dialogCamOpenFailedCancelColor": "#0E83E6"
 }
}

对应列表

展开折叠面板查看字段详细说明。

自定义UI颜色和icon字段详细说明

模块

key

截图

补充说明

guideConfig(引导页)

titleColor

image.png

标题刷脸认证字体颜色。

示例值“#111111”。

agrtTopTipsColor

image.png

协议顶部提示文本颜色。

示例“#111111”

bannerImg

image.png

示例图。

支持远程图片路径或是图片的Base64格式(需要固定开头,例如:“data:image/jpeg;base64,/9j...”

)。

agrtUnSelColor

image.png

勾选框未选中颜色。

agrtSelBgColor

image.png

勾选框选中颜色。

agrtAgreeColor

image.png

同意字体颜色。

agrtColor

image.png

《认证服务协议》颜色。

agrtBotTipsColor

image.png

同意认证后,……颜色。

startBtnBgColor

image.png

开始认证按钮背景颜色。

startBtnDisBgColor

image.png

未选中同意时,即按钮不可用状态下开始认证按钮的背景颜色。

startBtnDisColor

image.png

未选中同意时,即按钮不可用状态下开始认证按钮的文字颜色。

startBtnColor

image.png

开始认证按钮字体颜色。

exitBtnBgColor

image.png

暂不认证按钮背景颜色。

exitBtnColor

image.png

暂不认证按钮字体颜色。

elderBtnColor

image.png

“长辈模式认证”按钮字体颜色

适老化(选择)模式。

elderBtnBgColor

image.png

长辈模式认证按钮背景颜色。

elderBtnDisBgColor

image.png

长辈模式认证按钮禁用(暂不可点击)背景颜色。

rareFormNameColor

image.png

生僻字模式,姓名字体颜色。

生僻字模式。

rareFormIDColor

image.png

生僻字模式,身份证号字体颜色。

rareFormEntBtnColor

image.png

生僻字模式,录入生僻字按钮文本颜色。

titleBackPath

无。

标题栏返回icon图标。

路径优先级低于Base64编码。

titleBackBase64

titleClosePath

image.png

标题栏关闭icon图标。

路径优先级低于Base64编码。

titleCloseBase64

permissionToastTitleColor

image.png

权限兜底toast的标题字体颜色。

permissionToastMsgColor

image.png

权限兜底toast的内容字体颜色。

permissionToastBgColor

image.png

权限兜底toast背景颜色。

dialogPermissionFailedTitleColor

image.png

权限拒绝弹框配色。

dialogPermissionFailedMsgColor

dialogPermissionFailedConfirmColor

dialogPermissionFailedConfirmColor

dialogExitTitleColor

image.png

退出弹窗配色。

dialogExitMsgColor

dialogExitCancelColor

dialogExitConfirmColor

faceConfig(刷脸页)

faceBgColor

image.png

刷脸页背景色。

faceTitleColor

image.png

刷脸页标题字体颜色。

faceProgressEndColor

image.png

取景框(环形进度条)颜色色值。

circleTxtBgAlpha

image.png

蒙层不透明度。

取值范围(0,1)。

circleTxtColor

image.png

蒙层上方文案颜色。

dialogBgAlpha

image.png

弹窗背景蒙层不透明度。

取值范围:(0,1)。

exitIconPath

image.png

退出图标路径。

exitIconBase64

退出icon图片base64。

submitTextColor

image.png

认证提交loading提示文案字体颜色。

submitLoadingIconBase64

image.png

loading图标Base64。

submitLoadingIconPath

loading图标路径。

dialogExitTitleColor

image.png

退出弹框配色。

dialogExitMsgColor

dialogExitCancelColor

dialogExitConfirmColor

dialogTimeOutTitleColor

image.png

操作超时弹框配色。

dialogTimeOutMsgColor

dialogTimeOutConfirmColor

dialogNetworkFailedTitleColor

image.png

网络异常弹窗配色。

dialogNetworkFailedMsgColor

dialogNetworkFailedConfirmColor

dialogTooManyRetriesTitleColor

image.png

重试过多弹框配色。

dialogTooManyRetriesMsgColor

dialogTooManyRetriesConfirmColor

dialogInterruptTitleColor

image.png

验证中断弹窗配色。

dialogInterruptMsgColor

dialogInterruptConfirmColor

dialogInterruptCancelColor

文案自定义

目前仅支持自定义引导页活体认证页的展示文案。

接口说明

SDK中提供了自定义UI的接口:setCustomTxtConfig

/**
 * 设置自定义文案
 * @param customConfig 
 * 传入json文件路径或者json字符串
 * @param type 
 * 传入的config类型path或者json
 * @param completion配置文件结果回调
* */
+ (void)setCustomLanguage:(nonnull NSString *)configuration type:(nonnull NSString *)type completion:(void(^)(BOOL success, NSError *error))completion;
  • 参数说明

    名称

    类型

    说明

    configuration

    NSString

    配置自定义入参的类型:

    • json:传入JSON字符串。

    • path:传入JSON文件的沙盒路径。

    type

    NSString

    根据传入的configuration,选择传入jsonpath

    completion

    block

    结果信息回调。

    • success为YES表示设置成功。

    • success为NO表示设置的内容存在问题,具体请查看对应返回的error说明。

  • 返回值:无。

示例代码

//传入文件路径
NSString *path = @"/var/mobile/Containers/Data/Application/C9DF10E6-7AB4-4C66-A180-DF1080C93F72/Documents/customLanguage.json";
[AliyunFaceAuthFacade setCustomLanguage:path type:@"path" completion:^(BOOL success, NSError * _Nonnull error) {
	NSLog(@"%@",error.localizedDescription);
}];

//传入json字符串
NSString *jsonString = @"{""\"titleText\": \"刷脸认证\""}";
[AliyunFaceAuthFacade setCustomLanguage:jsonString type:@"json" completion:^(BOOL success, NSError * _Nonnull error) {
	NSLog(@"%@",error.localizedDescription);
}];

字段定义

字段列表

{
 "guideConfig": {
 "titleText": "刷脸认证",
 "agrtTopTipsText": "请先勾选协议",
 "agrtAgreeText": "同意",
 "agrtText": "《认证服务协议》",
 "agrtBotTipsText": "同意认证后,将获取您的摄像头权限用于人脸识别验证身份",
 "startBtnText": "开始认证",
 "elderBtnText": "长辈模式认证",
 "exitBtnText": "暂不认证",
 "rareFormNameText": "姓名",
 "rareFormIDText": "身份证号",
 "rareFormEntBtnText": "录入生僻字",
 "authPermissionSDKName": "实人认证",
 "authPermissionAPPName": "阿里云实人认证",
 "authPermissionCamera": "相机",
 "authPermissionAudio": "录音",
 "authPermissionScreenEvidence": "录屏",
 "authPermissionToastTitle": "",
 "authPermissionToastMsg": "",
 "dialogExitTitle": "确定退出吗?",
 "dialogExitMsg": "露个脸就能通过",
 "dialogExitConfirm": "确定",
 "dialogExitCancel": "取消",
 "dialogPermissionFailedTitle": "认证失败",
 "dialogPermissionFailedMsg": "请确认相关权限已开启后再次发起",
 "dialogPermissionFailedConfirm": "确认",
 "dialogNetworkFailedTitle": "网络不给力",
 "dialogNetworkFailedMsg": "请检查网络",
 "dialogNetworkFailedConfirm": "确定",
 "dialogSupportFailedTitle": "当前系统不支持刷脸",
 "dialogSupportFailedMsg": "刷脸仅在高版本及以上系统可用",
 "dialogSupportFailedConfirm": "确定"
 },
 "faceConfig": {
 "faceNotFound": "没有检测到脸",
 "faceTooFar": "靠近一点",
 "faceTooClose": "离远一点",
 "faceNotIn": "把脸移入圈内",
 "badPitch": "请正对手机",
 "badYaw": "请正对手机",
 "faceTooMore": "请保持单人操作",
 "faceIsMoving": "再清晰一点",
 "faceBrightless": "脸部亮一点",
 "faceBadQuality": "请露出正脸",
 "eyesOnScreen": "请注视屏幕",
 "blink": "眨眨眼",
 "leftYaw": "向左摇头",
 "rightYaw": "向右摇头",
 "stackTime": "请保持不动",
 "isBlur": "再清晰一点",
 "faceInitTxt": "请正对屏幕",
 "faceTitleBlink": "拿起手机,眨眨眼",
 "leftYawLiveness": "拿起手机,向左摇头",
 "rightYawLiveness": "拿起手机,向右摇头",
 "photinusCommTips": "请把脸移入圈内保持不动",
 "processing": "正在处理",
 "dialogTimeOutTitle": "操作超时",
 "dialogTimeOutMsg": "正对手机,更容易成功",
 "dialogTimeOutConfirm": "再试一次",
 "dialogInterruptTitle": "验证中断",
 "dialogInterruptConfirm": "再试一次",
 "dialogInterruptCancel": "退出",
 "dialogTooManyRetriesTitle": "本次操作失败",
 "dialogTooManyRetriesMsg": "刷脸失败次数过多,请稍后再试",
 "dialogTooManyRetriesConfirm": "我知道了",
 "dialogExitTitle": "确定退出吗?",
 "dialogExitMsg": "露个脸就能通过",
 "dialogExitConfirm": "确定",
 "dialogExitCancel": "取消",
 "dialogCamOpenFailedTitle": "摄像头打开异常",
 "dialogCamOpenFailedMsg": "请重启app或手机后再次尝试",
 "dialogCamOpenFailedConfirm": "确定",
 "dialogCamOpenFailedCancel": "取消",
 "dialogArchSysFailedTitle": "当前系统不支持刷脸",
 "dialogArchSysFailedMsg": "刷脸仅在高版本及以上系统可用",
 "dialogArchSysFailedConfirm": "确定",
 "dialogSDKErrTitle": "本次操作失败",
 "dialogSDKErrMsg": "抱歉,系统出错了,请再试一次",
 "dialogSDKErrConfirm": "确定",
 "dialogNetworkFailedTitle": "网络不给力",
 "dialogNetworkFailedMsg": "请检查网络",
 "dialogNetworkFailedConfirm": "确定"
 }
}

字段详细说明

展开折叠面板查看字段详细说明。

自定义UI文案字段详细说明

模块

key

截图

补充说明

guideConfig(引导页)

titleText

image.png

刷脸认证文案。

agrtTopTipsText

image.png

默认不显示,未勾选同意,点击开始认证时显示。

agrtAgreeText

image.png

同意文案。

agrtText

image.png

《认证服务协议》文案。

agrtBotTipsText

image.png

同意认证后,……文案。

startBtnText

image.png

开始认证按钮文案。

elderBtnText

image.png

长辈模式认证按钮文案。

默认不显示,启用适老化“选择模式”时,显示此按钮。

exitBtnText

image.png

暂不认证文案。

rareFormNameText

image.png

生僻字模式显示。具体文案参见左图示例。

rareFormIDText

image.png

rareFormEntBtnText

image.png

authPermissionToastTitle

image.png

兜底权限提示toast标题文案。

没有注入ZIMUICustomListener或onPermissionRequest方法返回False且传参ZIM_EXT_PARAMS_KEY_NEED_PERMISSION_TOAST值为ZIMFacade.ZIM_EXT_PARAMS_VAL_NEED_PERMISSION_TOAST_TRUE,在请求权限时,SDK兜底显示该提示toast。

authPermissionToastMsg

image.png

兜底权限提示toast内容文案。

authPermissionAPPName

image.png

默认兜底toast中显示的“应用名称”。

为确保您能使用<SDK名><应用名称>需要申请您的相机权限。允许后,您可以随时通过手机系统设置对授权进行管理。

authPermissionSDKName

image.png

默认兜底toast中显示的“SDK名称”。

为确保您能使用<SDK名><应用名称>需要申请您的相机权限。允许后,您可以随时通过手机系统设置对授权进行管理。

dialogExitTitle

image.png

手动退出弹框文案

手动点击“X”(退出)/“暂不认证”时。

dialogExitMsg

dialogExitConfirm

dialogExitCancel

dialogPermissionFailedTitle

image.png

权限拒绝弹框文案。

dialogPermissionFailedMsg

dialogPermissionFailedConfirm

dialogPermissionFailedCancel

faceConfig(刷脸页)

faceTitleBlink

leftYawLiveness

rightYawLiveness

photinusCommTips

image.png

刷脸页标题文案。

faceNotFound

faceTooFar

faceTooClose

faceNotIn

badPitch

badYaw

faceTooMore

faceIsMoving

faceBrightless

faceBadQuality

eyesOnScreen

blink

leftYaw

rightYaw

stackTime

isBlur

faceInitTxt

image.png

取景框内提示文案。

processing

image.png

认证提交时loading文案。

dialogInterruptTitle

image.png

验证中断弹窗文案。

dialogInterruptConfirm

dialogInterruptCancel

dialogTooManyRetriesTitle

image.png

重试次数过多弹窗文案。

dialogTooManyRetriesMsg

dialogTooManyRetriesConfirm

dialogNetworkFailedTitle

image.png

网络异常弹窗文案。

dialogNetworkFailedMsg

dialogNetworkFailedConfirm

dialogExitTitle

image.png

手动退出弹窗文案。

dialogExitMsg

dialogExitConfirm

dialogExitCancel

dialogTimeOutTitle

image.png

操作超时弹窗文案。

dialogTimeOutMsg

dialogTimeOutConfirm

合规权限提醒

SDK为了保证基础功能的运行需要向客户申请对应功能的权限,为了保证您的应用对客户展示合规,SDK内部提供了权限获取以及使用说明提醒弹窗,该功能默认关闭,当您需要使用时请通过verify接口进行开启。

开关接口

接口说明

请参考对应方案的Verify接口函数定义。

名称

说明

类型

ZIM_EXT_PARAMS_KEY_NEED_PERMISSION_TOAST

SDK获取权限前是否弹窗

[extParams setValue:@"true" forKey:ZIM_EXT_PARAMS_KEY_NEED_PERMISSION_TOAST];

NSMutableDictionary *extParams = [NSMutableDictionary dictionary];
//需要使用权限toast
[extParams setValue:@"true" forKey:ZIM_EXT_PARAMS_KEY_NEED_PERMISSION_TOAST];
.....
[AliyunFaceAuthFacade verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {
 
}];

弹窗自定义接口

当SDK默认的弹框不足以满足业务诉求时,您可以通过DTFUICustomProtocol接口自定义弹窗能力。

接口说明

请参考对应方案的Verify接口函数定义。

名称

说明

类型

UICustomProtocol

权限弹框自定义对象

[extParams setValue:self forKey:@"UICustomProtocol"];

/**
 * 实现Protocol方法
 * @param permission,需要获取的权限
 * @param serviceType,需要获取的权限类型
 * return:BOOL类型,当您需要自行处理弹窗时,返回YES即可,否则SDK会根据开关配置决定是否进行弹窗
* */
- (BOOL)showPermissionViewWithPermission:(NSArray *)permission serviceType:(DTFServiceType)serviceType{
 //实现弹窗样式并展示
 return YES; 
}
  • 参数说明

    名称

    类型

    说明

    permission

    NSArray

    当前请求权限的列表。

    serviceType

    String

    当前请求权限的业务。

    • FACE:活体业务。

    • OCR:证件业务。

    • WISH:多因子意愿业务。

  • 返回值:bool类型。当您需要自行处理弹窗时,返回设置YES;若需要默认弹窗,则返回值设置NO。

示例代码

@interface PermissionView : NSObject<DTFUICustomProtocol>

- (BOOL)showPermissionViewWithPermission:(NSArray *)permission serviceType:(DTFServiceType)serviceType;

@end



@implementation PermissionView

/**
 * 实现Protocol方法
 * @param permission 
 * 需要获取的权限
 * @param serviceType 
 * 需要获取的权限类型
 * return:BOOL类型,当您需要自行处理弹窗时,返回YES即可,否则SDK会根据开关配置决定是否进行弹窗
* */
- (BOOL)showPermissionViewWithPermission:(NSArray *)permission serviceType:(DTFServiceType)serviceType{
 //实现弹窗样式并展示
 return YES; 
}
@end
NSMutableDictionary *extParams = [NSMutableDictionary dictionary];
PermissionView *permissionView = [PermissionView alloc]init];
// 把实现了Protocol的对象传入
[extParams setValue:permissionView forKey:@"UICustomProtocol"];
.....
[AliyunFaceAuthFacade verifyWith:certifyId extParams:extParams onCompletion:^(ZIMResponse *response) {
       
}];

  • 本页导读
文档反馈