智能证件照 iOS SDK

可以通过两种方式来集成智能证件照 SDK:「快速集成」和「自定义集成」。

快速集成

快速集成使用 SDK 实现的相机、打分、抠图制作等预置界面,只需少量代码即可快速集成。

安装

智能证件照 SDK 使用 CocoaPods 进行安装。需要在 Podfile 中添加依赖。

source 'https://git.coding.net/leqi/Specs.git'
use_frameworks!

target '<Your Target Name>' do
   pod 'Safelight', '~> 1.3.0'
end

使用

步骤1:在需要调用证件照SDK的文件中,增加头文件引用

@import Safelight

步骤2:实现代理方法,继承SafelightDelegate,在代码中调用如下:

[Safelight makeWithKey:APP_KEY
                secret:APP_SECRET
               specKey:specKey
            beginColor:beginColor
              endColor:endColor
        viewController:self
              delegate:self]

参数说明:
beginColorendColor同时传nil则表示使用原背景(请在证件照规格列表中查找 SPEC_KEY参数,请在背景色列表中查找 begin_color以及end_color 参数);APP_KEYAPP_SECRET可以去证件照SDK官网获取。

步骤3:实现代理的如下回调方法,获取最终结果

成功回调方法:

- (void)safelightFinishedWithImage:(UIImage * _Nonnull)image score:(NSInteger)score;

参数说明:
若回调该方法则表示证件照任务已完成,image为最终处理生成的图片,score为证件照对传入照片的综合打分。

失败回调方法:

- (void)safelightFinishedWithError:(NSError * _Nullable)error;

参数说明:
若回调该方法则表示证件照任务发生错误,error为证件照返回的错误信息。当[error.domain isEqualToString:[Safelight errorDomain]]YES并且error.code也同时为-1001时,表示该错误是由于用户主动取消了操作导致;其它错误信息可以根据[error localizedDescription]来查看。

自定义集成

对于需要自己定义 UI 样式的开发者,可以选择自行实现界面及跳转逻辑,仅使用 SDK 提供的证件照制作接口。

安装

使用

步骤1:初始化证件照任务

JYNetwork初始化需要传入appKeyappSecret两个参数。

#import "safelight_filament.h"

JYNetwork *network = [JYNetwork sharedNetwork];
[network setAppKey:appKey appSecret:appSecret];

注意事项:
APP_KEYAPP_SECRET可以去证件照SDK官网获取。此处若不使用单例,则下述所有步骤之前,都需重复该操作。

步骤2:步骤2传入的参数经过校验合格后,创建照片任务

#import "safelight_filament.h"

UIImage *img = [UIImage imageNamed:@"测试照片.jpg"];
[JYNetwork createTask:img
           beginColor:16777215
             endColor:16777215
              SpecKey:specKey
         successBlock:^(NSDictionary *dict) {
             NSLog(@"任务ID\n%@",dict[@"task_id"]);
         } failBlock:^(NSString *errorMessage) {
             NSLog(@"%@",errorMessage);
         }];   

注意事项:
beginColorendColor参数用于生成照片背景色。(请在颜色列表中查找beginColorendColor参数)
SpecKey是将要生成的规格参数KEY,请在规格列表中查找SpecKey参数。
successBlock中获取的任务ID将被用于之后的调用。

步骤3:上述参数经校验成功后即可开始获取任务信息

#import "safelight_filament.h"

[JYNetwork getTaskState:taskId successBlock:^(NSDictionary *dict) {
        NSLog(@"任务状态%@",dict[@"status"]);
        NSLog(@"预览图URL%@",dict[@"image_preview_url"]);
        NSLog(@"描述%@",dict[@"description"]);
    } failBlock:^(NSString *errorMessage) {
        NSLog(@"%@",errorMessage);
    }];   

注意事项:
taskId在创建照片任务请求中得到的。
任务状态:SUCCESS 成功;PENDING 等待处理;STARTED 开始处理;RETRY 重试;FAILURE 失败。
只有SUCCESS状态下才能获得预览图URL。
只有FAILURE状态下才能获得失败原因。
STARTED状态表示开始处理了,PENDING状态表示正在处理,RETRY表示需要重试。
出现STARTEDPENDINGRETRY这三种状态中任意一种,都可以再请求一次。

步骤4:获取了任务编号之后就可以开始创建订单了

#import "safelight_filament.h"

if (taskId != nil) {
    [JYNetwork createOrder:taskId successBlock:^(NSDictionary *dict) {
        if (dict[@"message"] !=nil) {
            NSString *str = dict[@"message"];
            NSLog(@"%@",str);
        }else{
            NSDictionary *order = dict[@"order"];
            NSLog(@"ID\n%@",order[@"id"]);
            NSLog(@"订单号\n%@",order[@"order_no"]);
            NSLog(@"付款时间\n%@",order[@"paid_at"]);
            NSLog(@"付款状态\n%@",order[@"state"]);
        }
    } failBlock:^(NSString *errorMessage) {
        NSLog(@"%@",errorMessage);
    }];
}  

注意事项:
创建订单时候taskId不能为空。付款状态有已创建created和已付款paid,目前只会返回paid,建议使用时候判断一下。

步骤5:任务完成后获取订单对应的证件照图片地址

#import "safelight_filament.h"

if (order_no != nil) {
    [JYNetwork getURLofOrder:order_no successBlock:^(NSDictionary *dict) {
        NSLog(@"%@",dict);
    } failBlock:^(NSString *errorMessage) {
        NSLog(@"%@",errorMessage);
    }];
}   

注意事项:
获取订单的时候order_no不能为空(order_no是在创建订单时得到的订单号)。

步骤6:附带获得证件照对照片的综合评分

#import "safelight_filament.h"

UIImage *img = [UIImage imageNamed:@"测试照片.jpg"];
NSDictionary *dict = [JYGrade getScore:img];
for (NSString *key in dict) {
    //评分项目--->分数
    NSLog(@"%@ --> %@",key,dict[key]);
}

注意事项:
若不需要该照片的综合打分,则此步骤省略。

点击下载ios接入文档