使用指南

优质
小牛编辑
132浏览
2023-12-01

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_IDAPP_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即可。