此SDK是对 http://www.eyekey.com 接口 objective-c
的实现;适用于iOS 端的快速开发和集成。
同样开发者也可以按照 http://www.eyekey.com/devcenter/index.html 接口自己实现通信开发。
appid 和 appkey
http://www.eyekey.com/devcenter/index.htmlAppDelegate.m
里面初始化 app_id
,app_key
#import "EKFaceAPI.h"
objective-c
#import "EKFaceAPI.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
//初始化SDK
[EKFaceAPI initSDKWithAppID:kEKFace_APP_ID appKey:kEKFace_APP_KEY];
//是否开启Debug模式
[EKFaceAPI debugLog:YES];
return YES;
}
checking
check_mark
match_verify
match_compare
match_confirm
match_search
match_identify
people_create
people_add
people_delete
people_remove
people_set
people_get
crowd_create
crowd_add
crowd_delete
crowd_remove
crowd_get
facegather_create
facegather_delete
facegather_addface
facegather_removeface
facegather_set
facegather_get
/**
* 处理指定url图片的人脸信息
*
* @param imgUrl 人脸图片url
* @param completeBlock 回调block
*/
+ (void)checkingFaceInfoWithImgUrl:(NSString *)imgUrl complete:(EKAPICompleteBlock)completeBlock;
/**
* 处理指定 人脸图像数据 的人脸信息
*
* @param base64Data 人脸图像的base64编码数据
* @param completeBlock 回调block
*/
+ (void)checkingFaceInfoWithImageData:(NSString *)base64Data complete:(EKAPICompleteBlock)completeBlock;
/**
* 检测人脸的五官信息 49点模式
*
* @param parms 参数为字典,应包含如下参数
* 1. face_id
* @param completeBlock 回调block
*/
+ (void)checkMarkWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 给定 Face 和 people 来判断是否为同一个人
*
* @param parms 参数为字典,应包括如下参数
* 1. face_id;
* 2. poeple_id 或 people_name;
* @param completeBlock 回调block
*/
+ (void)matchVerifyWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 计算两个Face的相似性以及五官可信度
*
* @param parms 参数为字典,应包含如下参数
* 1. face_id1
* 2. face_id2
* @param completeBlock 回调block
*/
+ (void)matchCompareWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 向EYEKEY平台确认应用客户端获取的动态是否有效
*
* @param parms 参数为字典,应包含如下参数
* 1. dynamicode ,第三方应用获取的动态码
* 2. people_id 或 people_name
* @param completeBlock 回调block
*/
+ (void)matchConfirmWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 给定一个Face和一个Facegather,在Facegather内搜索最相似的Face
*
* @param parms 参数为字典,应包含如下参数
* 1. key_face_id ,待搜索的face
* 2. facegather_id 或 facegather_name
* 3. count 可选,表示获取的结果数量,默认为3个
* @param completeBlock 回调block
*/
+ (void)matchSearchWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 一个或多个faceid 在 Crowd中查询最相似的people
*
* @param parms 参数为字典,应包含如下参数
* 1. crowd_id 或 crowd_name
* 2. face_id ,如果有多个,请用 逗号隔开
* @param completeBlock 回调block
*/
+ (void)matchIdentifyWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 创建一个People,一个People 最多允许包含50个Face,开发版最多允许创建100个people
*
* @param parms 参数为字典,应包括如下参数
* 1. people_name , (可选) 必须在全局App中唯一,建议以com.xxx.xx标识
* 2. face_id, 如果有多个 face_id, 请用 逗号 隔开组成字符串
* 3. corwd_id 或 crowd_name; 如果有多个请用 逗号隔开
* 4. tip 简单说明
* @param completeBlock 回调block
*/
+ (void)peopleCreateWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 将一组Face 添加到 一个 people中,注意 一个 Face 只能被加入到一个People中
*
* @param parms 参数为字典,应包括如下参数
* 1. people_name 或 people_id
* 2. face_id , 如果有多个,请用 逗号 隔开
* @param completeBlock 回调block
*/
+ (void)peopleAddWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 删除一个或一组 people
*
* @param parms 参数为字典,应包括如下参数
* 1. people_name 或 people_id,如果有多个,请用逗号隔开
* @param completeBlock 回调block
*/
+ (void)peopleDeleteWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 删除people中的一个或多个Face
*
* @param parms 参数为字典,应包括如下参数
* 1. people_name 或 people_id
* 2. face_id ,如果有多个,请用逗号隔开 ,可指定all
* @param completeBlock 回调block
*/
+ (void)peopleRemoveWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 设置People在 name 和 tip
*
* @param parms 参数为字典,应包括如下参数
* 1. people_id 或 people_name
* 2. name 可选 ,新的name
* 3. tip 新的tip
* @param completeBlock 回调block
*/
+ (void)peopleSetWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 获取指定 people的所有信息
*
* @param parms 参数为字典,应包括如下参数
* 1. people_id 或 people_name
* @param completeBlock 回调block
*/
+ (void)peopleGetWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 创建一个 Crowd,一个Crowd 最多允许包含 1000个people;开发版本最多允许创建5个 crowd
*
* @param parms 参数为字典,应包含如下参数
* 1. crowd_name (可选),必须在全局App中唯一,建议以 com.xxx.xx标识
* 2. people_id 或 people_name; 如果有多个,请用逗号隔开组合
* 3. tip ,简单的说明
* @param completeBlock 回调block
*/
+ (void)crowdCreateWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 将一组people 加入到一个crowd中
*
* @param parms 参数为字典,应包含如下参数
* 1. crowd_id 或 crowd_name
* 2. people_id 或 people_name ,如果有多个,请使用逗号隔开
* @param completeBlock 回调block
*/
+ (void)crowdAddWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 删除一个或一组 crowd
*
* @param parms 参数为字典,应包含如下参数
* 1. crowd_name 或 crowd_id ,如果有多个请用 逗号隔开
* @param completeBlock 回调block
*/
+ (void)crowdDeleteWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 从crowd删除一个或多个people
*
* @param parms 参数为字典,应包含如下参数
* 1. crowd_id 或 crowd_name
* 2. people_id 或 people_name ,要删除的一个或多个people,请用 逗号隔开表示多个,可指定all
* @param completeBlock 回调block
*/
+ (void)crowdRemoveWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 获取一个 crowd 的详细信息
*
* @param parms 参数为字典,应包含如下参数
* 1. crowd_id 或 crowd_name
* @param completeBlock 回调block
*/
+ (void)crowdGetWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 创建一个faceGather,一个facegather可创建10000个face,开发版本最多允许创建5个facegather
*
* @param parms 参数为字典,应该包含如下参数
* 1. facegather_name 可选,建议为 com.xxx.xxx 标识,必须全局唯一
* 2. face_id ,如果有多个,请用逗号隔开
* 3. tip ,简单描述
* @param completeBlock 回调block
*/
+ (void)faceGatherCreateWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 删除一个 faceGather
*
* @param parms 参数为字典,应该包含如下参数
* 1. facegather_name 或 facegather_id, 如果有多个,请用逗号隔开
* @param completeBlock 回调block
*/
+ (void)faceGatherDeleteWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 将一组face添加到 facegather中,一个face只能被添加到一个facegather中
*
* @param parms 参数为字典,应该包含如下参数
* 1. facegather_name 或 facegather_id
* 2. face_id,如果有多个,请用逗号隔开
* @param completeBlock 回调block
*/
+ (void)faceGatherAddFaceWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 删除facegather中的一个或多个face
*
* @param parms 参数为字典,应该包含如下参数
* 1. facegather_name 或 facegather_id
* 2. face_id,如果有多个,请用逗号隔开
* @param completeBlock 回调block
*/
+ (void)faceGatherRemoveWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 设置facegather 在 name 或 tip
*
* @param parms 参数为字典,应该包含如下参数
* 1. facegather_id 或 facegather_name
* 2. name ,新的name 可选
* 3. tip 新的tip
* @param completeBlock 回调block
*/
+ (void)faceGatherSetWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 获取facegather 的相关详细信息
*
* @param parms 参数为字典,应该包含如下参数
* 1. facegather_id 或 facegather_name
* @param completeBlock 回调block
*/
+ (void)faceGatherGetWithParms:(NSDictionary *)parms complete:(EKAPICompleteBlock)completeBlock;
/**
* 获取创建的应用的详细信息
*
* @param completeBlock 回调block
*/
+ (void)getAppInfoComplete:(EKAPICompleteBlock)completeBlock;
/**
* 是否开启debug模式,将打印log,默认是YES
*
* @param isLog 是否开启log输出
*/
+ (void)debugLog:(BOOL)isLog;
/**
* 获取当前SDK的发布版本号
*
* @return 发布版本号
*/
+ (NSString *)SDKVersion;
/**
* 获取当前SDK的build号
*
* @return build版本号
*/
+ (NSString *)SDKBuildVersion;
//checking url
NSString *imgUrl = @"http://www.eyekey.com/images/demo/3.jpg";
[EKFaceAPI checkingFaceInfoWithImgUrl:imgUrl complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}
else
{
NSLog(@"%@",JSON);
}
}];
UIImage *tImage = [UIImage imageNamed:@"Test5.jpg"];
NSData *imgData = UIImagePNGRepresentation(tImage);
[EKFaceAPI checkingFaceInfoWithImageData:[imgData base64EncodedString] complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}
else
{
NSLog(@"%@",JSON);
}
}];
//一次只能检测一个,不支持多个face_id
NSString *faceID1 = @"b14f2365626d4d8baff6fdf4fc8aca7a";
NSDictionary *parms = @{@"face_id": faceID1};
[EKFaceAPI checkMarkWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test MatchVerify
//一次只能检测一个faceid ,不支持多个同时
NSString *faceID = @"b14f2365626d4d8baff6fdf4fc8aca7a";
NSString *peopleName = @"iOS.SDK.TestPerson";
NSDictionary *parms = @{@"face_id": faceID,@"people_name":peopleName};
[EKFaceAPI matchVerifyWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test MatchCompare
NSString *faceID1 = @"b14f2365626d4d8baff6fdf4fc8aca7a";
NSString *faceID2 = @"5ce88602669345f4aec985a5e6632979";
NSDictionary *parms = @{@"face_id1": faceID1,@"face_id2": faceID2};
[EKFaceAPI matchCompareWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test MatchConfirm
NSString *peopleName = @"iOS.SDK.TestPerson";
NSString *dyCode = @"123456";
NSDictionary *parms = @{@"people_name":peopleName,@"dynamicode":dyCode};
[EKFaceAPI matchConfirmWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test MatchSearch
NSString *keyFaceId = @"b14f2365626d4d8baff6fdf4fc8aca7a";
NSString *faceGatherName = @"iOS.SDK.TestFaceGather";
NSString *counts = @"5";
NSDictionary *parms = @{@"key_face_id": keyFaceId,@"facegather_name":faceGatherName,@"":counts};
[EKFaceAPI matchSearchWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test MatchIdentify
//多个faceID,使用 逗号隔开
NSString *faceIDs = @"b14f2365626d4d8baff6fdf4fc8aca7a,73d37402a648427f98f985fe422c2181";
NSString *crowdName = @"iOS.SDK.TestCrowd";
NSDictionary *parms = @{@"face_id": faceIDs,@"crowd_name":crowdName};
[EKFaceAPI matchIdentifyWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test peopleCreate
//可关联多个face_id ,请用逗号隔开
NSString *faceIDs = @"b14f2365626d4d8baff6fdf4fc8aca7a,5ce88602669345f4aec985a5e6632979";
NSString *poeple_name = @"iOS.SDK.DemoPerson";
NSDictionary *parms = @{@"face_id": faceIDs,@"people_name": poeple_name,@"tip":@"iOS SDK DemoPerson"};
[EKFaceAPI peopleCreateWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test PeopleAdd
//可同时添加多个face_id,请用逗号隔开,一个face只能被加入到一个people中
NSString *faceID = @"b14f2365626d4d8baff6fdf4fc8aca7a,5ce88602669345f4aec985a5e6632979";
NSString *peopleName = @"iOS.SDK.DemoPerson";
NSDictionary *parms = @{@"face_id":faceID,@"people_name":peopleName};
[EKFaceAPI peopleAddWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test PeopleRemove
//可同时删除多个face_id,请用逗号隔开
NSString *faceID = @"b14f2365626d4d8baff6fdf4fc8aca7a";
NSString *peopleName = @"iOS.SDK.DemoPerson";
NSDictionary *parms = @{@"face_id":faceID,@"people_name":peopleName};
[EKFaceAPI peopleRemoveWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test PeopleSet
NSString *peopleName = @"iOS.SDK.DemoPerson";
NSDictionary *parms = @{@"tip":@"iOS.SDK.DemoPerson New Tips",@"people_name":peopleName};
[EKFaceAPI peopleSetWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test PeopleGet
NSString *peopleName = @"iOS.SDK.DemoPerson";
NSDictionary *parms = @{@"people_name":peopleName};
[EKFaceAPI peopleGetWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test PeopleDelete
NSString *peopleName = @"iOS.SDK.DemoPerson";
NSDictionary *parms = @{@"people_name":peopleName};
[EKFaceAPI peopleDeleteWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test CrowdCreate
//可同时关联多个people,请用逗号隔开
NSString *peopleName = @"iOS.SDK.TestPerson,iOS.SDK.DemoPerson";
NSString *crowdName = @"iOS.SDK.DemoCrowd";
NSDictionary *parms = @{@"crowd_name":crowdName,@"tip":@"ios sdk demo crowd tip",@"people_name":peopleName};
[EKFaceAPI crowdCreateWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test CrowdDelete
//可同时删除多个crowd,请用逗号隔开
NSString *crowdName = @"iOS.SDK.DemoCrowd";
NSDictionary *parms = @{@"crowd_name":crowdName};
[EKFaceAPI crowdDeleteWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test CrowdAdd
//可同时添加多个people,请用逗号隔开
NSString *peopleNames = @"iOS.SDK.TestPerson,iOS.SDK.TestPerson2";
NSString *crowdName = @"iOS.SDK.TestCrowd";
NSDictionary *parms = @{@"crowd_name":crowdName,@"people_name":peopleNames};
[EKFaceAPI crowdAddWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test CrowdRemove
//可同时删除多个people,请用逗号隔开
NSString *peopleNames = @"iOS.SDK.TestPerson,iOS.SDK.TestPerson2";
NSString *crowdName = @"iOS.SDK.TestCrowd";
NSDictionary *parms = @{@"crowd_name":crowdName,@"people_name":peopleNames};
[EKFaceAPI crowdRemoveWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test CrowdGet
NSString *crowdName = @"iOS.SDK.TestCrowd";
NSDictionary *parms = @{@"crowd_name":crowdName};
[EKFaceAPI crowdGetWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test FaceGatherCreate
//创建时可同时关联一组face_id
NSString *fgName = @"iOS.SDK.DemoFaceGather";
//NSString *face_ids = @"id1,id2";
NSDictionary *parms = @{@"facegather_name":fgName,@"tip":@"iOS.SDK.Demo.FaceGather"};
[EKFaceAPI faceGatherCreateWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test FaceGatherCreate
//创建时可同时删除多个
NSString *fgName = @"iOS.SDK.DemoFaceGather";
NSDictionary *parms = @{@"facegather_name":fgName};
[EKFaceAPI faceGatherDeleteWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test FaceGatherGet
NSString *fgName = @"iOS.SDK.DemoFaceGather";
NSDictionary *parms = @{@"facegather_name":fgName};
[EKFaceAPI faceGatherGetWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test FaceGatherSet
NSString *fgName = @"iOS.SDK.DemoFaceGather";
NSDictionary *parms = @{@"facegather_name":fgName,@"tip":@"ios.sdk new facegather tip"};
[EKFaceAPI faceGatherSetWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test FaceGatherAddFace
//可同时添加多个faceid,用逗号隔开
NSString *fgName = @"iOS.SDK.DemoFaceGather";
NSString *faceIds = @"id1,id2";
NSDictionary *parms = @{@"facegather_name":fgName,@"face_id":faceIds};
[EKFaceAPI faceGatherAddFaceWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
//Test FaceGatherRemove
//可同时删除多个faceid,用逗号隔开
NSString *fgName = @"iOS.SDK.DemoFaceGather";
NSString *faceIds = @"id1,id2";
NSDictionary *parms = @{@"facegather_name":fgName,@"face_id":faceIds};
[EKFaceAPI faceGatherRemoveWithParms:parms complete:^(id JSON, NSError *error) {
if (error) {
NSLog(@"%@",error);
}else{
NSLog(@"%@",JSON);
}
}];
v1.1
2015.07.25
jinkeke@techshino.com