使用指南
1.SDK 目录结构
1.1 如何运行Demo
看下你拿到手上的Demo结构如下图,点击项目即可运行
1.2 运行Demo的相关配置
该配置只针对在线版本,离线版6.0.0版本以后不在提供SDK。
配置app_id和aap_Key
完成以上配置,运行即可。
2.将SDK集成到开发环境
使用 SDK 前,首先需要将其集成到您的开发环境中。
项目的开发环境需要在 Xcode 6.0版本及以上,运行环境需要 iOS9.0 及以上,支持机型 iPhone 4s以上。下文将说明开发中需要的详细操作。
2.1 配置开发环境
2.1.1 编译选项设置
2.1.1.1 需要添加 Xcode 链接器参数:-ObjC 和 -lstdc++。
添加 -ObjC 参数后链接器可以把静态库中所有的 Objective-C 类和分类都加载到最后的可执行文件中。
添加 -lstdc++ 参数是由于我们的静态库中需要 c++ 标准库支持。
添加方法:
TARGETS -> Build Settings -> Linking -> Other Linker Flags 中添加 -lstdc++ 和 -ObjC 。
2.1.1.2 需要添加一下三个系统的编译链接库
2.1.1.3 如果使用的开发工具是Xcode 7.0以上版本,需要手动关闭Bitcode。
步骤:
TARGETS -> BuildSettings -> Enable Bitcode 设置为 NO。
2.2 将SDK集成到项目中
2.2.1 将demo中指定的文件夹(OCRLib)加入到已经配置好环境的xcode项目(以下称项目)中
打开我们提供的Demo,我们的Demo提供的是重UI,高度自定义UI的用户请参考API接口;
LFBankCard.h和LFIDCard.h
接下来我们看如何将代码集成到环境中。
1、打开我们提给您的Demo工程文件夹,你将看到如下的结构
其中includ文件夹中包含BankCard和IDCard UI相关的文件
2、将OCRLib文件夹加入工程中,选中如图的三项。
3、在项目中创建调用银行卡识别和身份证识别按钮,实现点击方法
UIButton * bankBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
[bankBtn setBackgroundColor:[UIColor grayColor]];
[bankBtn setTitle:@"银行卡扫描" forState:UIControlStateNormal];
[bankBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
bankBtn.center = self.view.center;
[bankBtn addTarget:self action:@selector(bankBtnClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:bankBtn];
UIButton * IDBtn = [[UIButton alloc] initWithFrame:CGRectMake(30, 300, 100, 50)];
[IDBtn setBackgroundColor:[UIColor grayColor]];
[IDBtn setTitle:@"身份证扫描" forState:UIControlStateNormal];
[IDBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[IDBtn addTarget:self action:@selector(IDBtnClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:IDBtn];
6、实现按钮的点击方法
- (void)bankBtnClick
{
__weak typeof(self) weakSelf = self;
//初始化SDK前先通过/v2/sdk/get_token获取token
[self getTokenComplete:^(BOOL success, NSString *token) {
if (!success || !token.length) {
return;
}
LFBankCardScannerController *scannerVC = [[LFBankCardScannerController alloc] initWithOrientation:[weakSelf orientation] licensePath:[[NSBundle mainBundle] pathForResource:@"" ofType:@""] isVertical:NO shouldFullCard:[LFSettingManager sharedInstance].shouldFullCard token:token];
// scannerVC.snapshotSeconds = 3;//3s取一次扫描快照
scannerVC.autoCancelTime = [LFSettingManager sharedInstance].autoCancelTime;
scannerVC.delegate = weakSelf;
scannerVC.appID = APP_ID;
scannerVC.captureDelegate = self;
// 是否是自动识别,1为自动识别,0位拍照
scannerVC.isAuto = 1;
scannerVC.showAnimation = [LFSettingManager sharedInstance].showAnimation;
scannerVC.modalPresentationStyle = UIModalPresentationFullScreen;
// [scannerVC moveWindowVerticalFromCenterWithDelta:-50];
[weakSelf presentViewController:scannerVC animated:NO completion:nil];
}];
}
- (void)IDBtnClick
{
__weak typeof(self) weakSelf = self;
//初始化SDK前先通过/v2/sdk/get_token获取token
[self getTokenComplete:^(BOOL success, NSString *token) {
if (!success) {
return;
}
LFIDCardScannerController *scanVC = [[LFIDCardScannerController alloc] initWithOrientation:[self orientation] licensePath:[[NSBundle mainBundle] pathForResource:nil ofType:nil] shouldFullCard:[LFSettingManager sharedInstance].shouldFullCard token:token];
// scanVC.snapshotSeconds = 3;//3s取一次扫描快照
scanVC.autoCancelTime = [LFSettingManager sharedInstance].autoCancelTime;
scanVC.delegate = self;
scanVC.appID = APP_ID;
scanVC.appSecret = APP_SECRET;
scanVC.isAuto = 1;
// scanVC.returnType = YES;
// scanVC.bDebug = YES;
//获取剪切头像
// scanVC.returnPortrait = YES;
scanVC.showAnimation = [LFSettingManager sharedInstance].showAnimation;
scanVC.cardMode = kIDCardSmart;
weakSelf.type = kResulrTypeScanSamrt;
[scanVC moveWindowVerticalFromCenterWithDelta:-50];
weakSelf.resultVC = nil;
scanVC.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:scanVC animated:YES completion:nil];
}];
}
7、实现代理方法,这里只示例银行卡。上传数据请参考Demo中的详细代码。
- (void)getCardResult:(LFBankCard *)bankcard{
if (bankcard){
NSLog(@"这里获取到加密后的数据d,调用上传即可");
}
}
- (void)didCancel{
NSLog(@"取消回调,必须实现");
[self dismissViewControllerAnimated:YES completion:nil];
}
2.3 配置 APP_ID
、APP_SECRET
获取APP_ID 和 APP_SECRET
1、访问Linkface官网[https://www.linkface.cn] (#https://www.linkface.cn),点击右上角“管理中心”;
2、按照流程提示完成账号的注册及登录,添加应用;
3、在应用管理界面,可以看到您应用的API ID、API SECRET,即SDK中需要使用的APP_KEY,、 APP_SECRET。
在使用SDK上传成功数据之前,需要先配置好您的 APP_ID 和 APP_SECRET。
请参考下面的代码:
2.2.1 在Demo中LFFrontPageViewController.m中设置 id 和 secret
#error 请删除此行, 在线版填充api_id、api_secret、urlString值
NSString *api_id = @"";
NSString *api_secret = @"";
2.3在Xcode8上调试iOS9以上系统时,调用相机功能时,在info.plist文件下添加隐私权限。
<key>NSCameraUsageDescription</key>
<string>cameraDesciption</string>
2.4添加http访问权限。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
2.5 初始化你的SDK
在初始化时分别调用初始化的各自初始化方法即可;这里LFBankCrad举例: modelPath:模型的名称,如果传nil,默认是model的名称是我们提供的demo中的名称。 extraPath:可传nil。
LFBankCard *bankcard = [[LFBankCard alloc] initWithModelPath:modelPath extraPath:extraPath];
2.6 其他
1、如果你集成了其中一个SDK,并且完成了动态更新机制,SDK正常运行,再添加另外一个SDK时,如果你不想修改动态更新的逻辑代码;则你不需要关心这部分代码;正常初始化新添加SDK即可。