IDV NFC认证服务提供iOS客户端SDK,帮助您在业务应用(App)中实现NFC认证功能。本文结合示例代码介绍iOS客户端的接入流程。
使用限制
仅支持 iOS 13 及以上系统版本的移动设备(iPhone 或 iPad)。
必要的隐私权限:相机(护照三要素通过OCR获取时需要此权限)、网络、NFC等权限。
SDK下载和配置
获取SDK
下载iOS SDK并解压,然后复制所有framework包到您的工程文件夹中。
添加必要权限
在 Info.plist 中添加以下权限(权限描述仅供参考):

添加Privacy - NFC Scan Usage Description权限和说明。
添加ISO7816 application identifiers for NFC Tag Reader Session配置,在item0中填写
A0000002471001(旅行证件)。
Xcode添加framework
在工程的设置中定位到Build Settings > Build Phases > Link Binary With Libraries,添加framework。
添加SDK中所有的framework:
AliyunIdentityFace.framework AliyunIdentityPlatform.framework AliyunIdentityUtils.framework AliyunIdentityOcr.framework AliyunIdentityNFC.framework ToygerService.framework AliyunOSSiOS.framework faceguard.framework DTFUtility.framework ToygerNative.framework MNN.framework OpenSSL.framework添加系统依赖库:
AudioToolbox.framework CoreMedia.framework CoreML.framework AVFoundation.framework SystemConfiguration.framework UIKit.framework CoreTelephony.framework CoreMotion.framework Accelerate.framework libresolv.tbd libsqlite3.tbd libc++.tbd libz.tbd CryptoKit.framework CryptoTokenKit.framework CoreNFC.framework libswiftCoreNFC.tbd并设置NFC相关系统库为可选,否则在无NFC设备上会导致找不到系统库崩溃:

拷贝资源文件
在工程的设置中定位到Build Settings > Build Phases > Copy Bundle Resources,拷贝资源文件。
AliyunIdentityPlatform.bundle:资源存在于
AliyunIdentityPlatform.framework中。AliyunIdentityFace.bundle:资源存在于
AliyunIdentityFace.framework中。AliyunIdentityOCR.bundle:资源存在于
AliyunIdentityOcr.framework中。ToygerService.bundle:资源存在于
ToygerService.framework中。AliyunIdentityNFC.bundle:资源存在于
AliyunIdentityNFC.framework中。
配置Linker flags
在工程的设置中定位到Build Settings > Other Linker Flags,添加-ObjC标识。
如纯OC工程需要额外添加-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME标识。
添加capability
在工程中选中TARGETS > 选中Signing & Capabilities > 新增capability > 选择NFC。
|
|
调用SDK
引入头文件
#import <AliyunIdentityPlatform/AliyunIdentityPlatform.h>初始化SDK
- (void)install;获取metaInfo数据
- (NSString *)getMetaInfo;调用SDK开始认证
调用SDK开始认证前,请确认您已将 MetaInfo 传递至服务端,并通过 Initialize 接口获取了 transactionId 。
服务端返回的 transactionId 对应此方法的入参:certifyId。
- (void)verifyWithCertifyId:(NSString *)certifyId
withCurrentViewController:(UIViewController *)viewController
withExtParams:(NSDictionary *)extParams
complete:(AliyunIdentityVerifyBlock)completeBlock;参数说明:
名称
类型
说明
certifyId
NSString
调用服务器端的Initialize接口获取,返回的transactionId传入本参数。
viewController
UIViewController
客户端App当前的ViewController。
extParams
NSDictionary
用户自定义参数,如无特殊情况,一般直接传null即可。
当前支持的参数字段,请参见extParams配置说明。
completeBlock
AliyunIdentityVerifyBlock
认证结束回调,包含认证结果。返回码可以在返回码表中查询。
extParams配置说明:
Key名
说明
示例(String类型)
kIdentityParamKeyNextButtonColor
OCR识别结果页面的底部按钮颜色。
#FF0000
kIdentityParamKeyRoundProgressColor
扫脸时的圆圈颜色。
#FF0000
kIdentityParamKeyOcrSelectPhoto
证件OCR识别环节,是否展示相册上传入口:
1(默认):展示
0:不展示
1
kIdentityParamKeyMaxRetryCount
重试次数上限。可设置范围为3~10次,默认10次。
10
kIdentityParamKeyCardOcrTimeOutPeriod
OCR识别环节超时时长。可设置范围为20~60秒,默认20秒。
20
kIdentityParamKeyFaceVerifyTimeOutPeriod
活体采集检测环节超时时长。可设置范围为20~60秒,默认20秒。
20
kIdentityParamKeyCardOcrEditTimeOutPeriod
OCR识别结果页面可编辑时长。 可自定义配置,范围为60秒到180秒之间,默认不限。
180
kIdentityParamKeyLanguage
SDK语言自定义设置。默认跟随移动设备系统的设置。
说明SDK具体支持的语言列表,请参见Android和iOS SDK 自定义语种。
zh-Hans
kIdentityParamKeyDefaultLanguage
SDK默认语言设置,可参考kIdentityParamKeyLanguage字段取值。
默认为en:英文。
en
kIdentityParamKeyCloseButtonPosition
SDK关闭按钮位置:
left(默认):左侧
right:右侧
left
kIdentityParamKeyWatermark
OCR识别成功后水印文字。
测试水印文字
kIdentutyParamKeyProtocol
SDK Protocol。
说明通过服务端Initialize接口获取protocol,传入扩展参数中,可减少SDK内部接口交互,提升网络体验。
968412EB*******...
返回码表:
错误码
是否计费
结果码描述
1000
是
用户完成了刷脸过程,认证建议结果为通过。该结果仅供参考,可通过调用服务端CheckResult接口获取最终认证结果,进行下一步处理。
1001
是
用户完成了刷脸过程,认证建议结果为未通过。该结果仅供参考,可通过调用服务端CheckResult接口获取最终认证结果、未通过的详细原因,进行下一步处理。
1002
否
表示系统错误。
1003
否
表示SDK初始化失败,请确认客户端时间是否正确。
1004
否
表示摄像头错误。请参考以下步骤尝试解决:
在认证前请先确保App已获取到相机权限。
如已授权仍提示无权限,请尝试清除App缓存后重试。
1005
否
表示网络错误。
1006
否
表示用户退出。
1007
否
表示TransactionId无效。
1009
否
表示客户端时间戳错误。
1011
否
表示提交证件类型错误。
1012
否
表示识别出的证件关键信息缺失或格式校验失败。
1013
否
表示图片质量不佳。
1014
否
表示错误次数超出上限。
示例代码
#import "ViewController.h"
#import <AliyunIdentityPlatform/AliyunIdentityPlatform.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Initialize the sdk
[[AliyunIdentityPlatform sharedInstance] install];
[self initUI];
}
// This function needs to be implemented by the user
- (NSString *)sentMetaInfoAndGetTransactionId:(NSString*) metaInfo {
return @"Get TransactionId from your server."; // replace it.
}
- (void)onClickStart:(id) sender {
NSString *metaInfo = [[AliyunIdentityPlatform sharedInstance] getMetaInfo];
NSString *transactionId = [self sentMetaInfoAndGetTransactionId:metaInfo];
// Set the sdk language
NSDictionary *extParams = @{
kIdentityParamKeyLanguage:@"en"
kIdentutyParamKeyProtocol:@"968412EB......................."//配置该协议可优化网络耗时
};
// start Verify
[[AliyunIdentityPlatform sharedInstance] verifyWithCertifyId:transactionId
withCurrentViewController:self
withExtParams:extParams
complete:^(AliyunIdentityVerifyRes *response) {
NSString *resContent = [NSString stringWithFormat:@"Code=%d Message=%@", response.code, response.message];
}];
}
- (void)initUI {
// ......
}
@endDemo代码包
您可以下载iOS-NFCDemo进行体验。

