Eyekey 人脸识别云平台 iOS SDK 使用说明

此SDK是对 http://www.eyekey.com 接口 objective-c 的实现;适用于iOS 端的快速开发和集成。

同样开发者也可以按照 http://www.eyekey.com/devcenter/index.html 接口自己实现通信开发。

项目集成

  1. 先到开发者中心创建 app, 获取 appid 和 appkey http://www.eyekey.com/devcenter/index.html
  2. 把SDK导入到你的项目工程里面去
  3. 在Xcode 项目 AppDelegate.m 里面初始化 app_id,app_key
  4. 在需要使用的地方 #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;
}

Demo Code

可用API

  1. Check

  2. checking

  3. check_mark

  4. Match

  5. match_verify

  6. match_compare

  7. match_confirm

  8. match_search

  9. match_identify

  10. People

  11. people_create

  12. people_add

  13. people_delete

  14. people_remove

  15. people_set

  16. people_get

  17. Crowd

  18. crowd_create

  19. crowd_add

  20. crowd_delete

  21. crowd_remove

  22. crowd_get

  23. FaceGather

  24. facegather_create

  25. facegather_delete

  26. facegather_addface

  27. facegather_removeface

  28. facegather_set

  29. facegather_get

  30. get_appinfo

  31. 其他

check

/**
 *  处理指定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;

match

/**
 *  给定 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,一个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,一个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,一个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;


app_info


/**
 *  获取创建的应用的详细信息
 *
 *  @param completeBlock 回调block
 */
+ (void)getAppInfoComplete:(EKAPICompleteBlock)completeBlock;

else


/**
 *  是否开启debug模式,将打印log,默认是YES
 *
 *  @param isLog 是否开启log输出
 */
+ (void)debugLog:(BOOL)isLog;


/**
 *  获取当前SDK的发布版本号
 *
 *  @return 发布版本号
 */
+ (NSString *)SDKVersion;

/**
 *  获取当前SDK的build号
 *
 *  @return build版本号
 */
+ (NSString *)SDKBuildVersion;

Demo

Check Demo

checking url

//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);
    }
}];

ckecking base64Data

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);
    }
    
}];

check mark

//一次只能检测一个,不支持多个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);
    }
}];

Match Demo

matchVerfiy

//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);
    }
}];

MatchCompare

//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);
    }
}];

MatchConfirm

//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);
    }
}];

MatchSearch

//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);
    }
}];

MatchIdentify

//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);
    }
}];

People Demo

PeopleCreate

//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);
    }
}];

PeopleAdd

//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);
    }
}];

PeopleRemove

//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);
    }
}];

PeopleSet

    //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);
        }
    }];

PeopleGet

//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);
    }
}];

PeopleDelete


//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);
    }
}];

Crowd Demo

CrowdCreate

//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);
    }
}];

CrowdDelete

//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);
    }
}];

CrowdAdd

    //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);
        }
    }];

CrowdRemove

    //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);
        }
    }];

CrowdGet

    //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);
        }
    }];


FaceGather Demo

FaceGatherCreate

    //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);
        }
    }];

FaceGatherDelete

    //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);
        }
    }];

FaceGatherGet

    //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);
        }
    }];

FaceGatherSet

    //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);
        }
    }];

FaceGatherAddFace

    //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);
        }
    }];

FaceGatherRemove

    //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);
        }
    }];


更新说明

bug反馈

jinkeke@techshino.com