iOS-SDK接入流程
- 本流程默认开发者已经按《ZGMClientSDK文档-iOS》第三步将SDK集成完毕。
- 更新日期:2018.07.12
一、初始化
1.初始化鉴权
- 使用
ZGMClientManager registerServiceByAppSecret: appId: callback:函数进行SDK注册
//SDK鉴权注册
[ZGMClientManager.shareInstance registerServiceByAppSecret:"申请的AppSecret" appId:"申请的AppID" callback:^(BOOL flag, NSString *errorMsg) {
if( flag ){
NSLog(@"注册成功,调起登录");
}else{
NSLog( @"注册失败 %@",errorMsg);
}
}];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- SDK的所有接口都依赖该注册,请在注册成功后走正常逻辑
2.登录
- 登录前需要经过初始化鉴权
- 登录使用
ZGAccountApi loginWithPhone:callback方法,参数为用户手机号码
注意
登录成功后需要启动SDK服务,使用ZGMClientManager startService方法
登录成功后需要,使用ZGDataApi freshDataWithCallback:刷新最新数据
[ZGAccountApi loginWithPhone:"手机号码" callback:^(BOOL isSuccess, ZGResponseObject *response){
if (isSuccess == YES){
[ZGMClientManager.shareInstance startService]; //启动SDK服务
//ZGDataApi freshDataWithCallback 调用freshData接口获取最新数据
return ;
}
//错误处理
}];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 用户完成登录后,其部分的基础信息会由SDK负责维护和自行调用
- 也可以使用
ZGMClientManager isLogined来判断用户是否处于登录状态
3.登出
- 登出使用
ZGAccountApi loginOut:方法 - 登出成功后需要停止SDK服务,使用
ZGMClientManager stopService方法。
[ZGAccountApi loginOut:^(BOOL isSuccess, ZGResponseObject *response) {
if (isSuccess == YES){
[ZGMClientManager.shareInstance stopService]; //停止SDK服务
//做其他事情
return;
}
//错误处理
}];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
4.刷新数据
- 此接口需要在用户登录成功后调用,SDK依赖它做一些数据维护
- 如果修改了(用户默认房间/常用钥匙/人脸)等信息后,按自己的需求可以调用此接口刷新最新的数据
[ZGDataApi freshDataWithCallback:^(BOOL isSuccess, ZGResponseObject *response){
if (isSuccess){
//将数据map为Model,可以使用Demo中的ZGFreshDataResult对象,也可以自定义对象
//ZGFreshDataResult *freshResult = [ZGFreshDataResult mj_objectWithKeyValues:response.data];
}
}];
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
@interface ZGFreshDataResult : NSObject
@property (nonatomic,strong) NSArray *normal; //默认钥匙
@property (nonatomic,strong) NSArray *all; //常用钥匙
@property (nonatomic,assign) BOOL set_face; //是否完成了人脸注册
@end
1
2
3
4
5
2
3
4
5
二、主要Api
1.申请钥匙
注意
申请钥匙也就是申请一个房间,当用户申请成功后,会获得这个房间对应的几把钥匙,这几把钥匙可能包含了用户自己的门,小区大门,小区后门等等
申请钥匙后需要等待PC端后台进行审核,当审核通过后ZGMClientManagerDelegate managerNeedFresh:会响应,这个时候需要手动调用刷新接口去刷新数据
- 申请钥匙使用
ZGOtherApi commitHouseApplyWithRoomId...接口,具体使用方式请参见Demo - 申请的钥匙是有使用期限,过期后可以再申请一次进行续期
2.开门
- 扫码开门:
ZGMClientManager processingScanResults: needNetworkvalidation: result:方法 - 按键开门: 按下按钮后调用
ZGAccessControlApi openDoorWithGuid: callback:方法,当开门成功后SDK会发送ZGOpenDoorSuccessNotification通知 - 视频通话开门: 门禁机拨打手机号码后,
ZGMClientManagerDelegate managerHangUp:会响应 - 密码开门: 通过
ZGMClientManager openDoorPassword方法获取开门密码,然后在门禁机上输入密码进行开门 - 访客密码开门: 用户可以分享一个具有有效期的密码给其他人使用,调用
ZGDataApi getTempPass方法 - 人脸识别开门: 注册人脸识别后,可以在门禁机上进行刷脸开门
- 电话开门: 服务电话拨打过来后,可以按 # 号键进行开门
3.钥匙获取
注意
除了刷新数据接口,以下接口也可以获取到全部钥匙和常用钥匙
- 获取全部钥匙 :
ZGKeyApi getAllKeyWithCallback: - 获取常用钥匙 :
ZGKeyApi getUsergateNormalWithCallback : - 删除钥匙 :
ZGKeyApi deleteGateKeyWithRoomId: callBack: - 设置常用钥匙 :
ZGKeyApi updateKeyWithOld: newId: callBack:
4.获取城市小区楼栋房号列表
注意
以下接口可以得到门禁机所支持的地区
获取小区楼栋房号接口,需要传入依赖的id号,该id号均来自上一级接口,如(获取小区需要传入城市id,该id自"获取城市"接口返回代表城市的region_id)
- 获取城市 :
ZGDataApi cityListWithCallback: - 获取小区 :
ZGDataApi communityListWithCity: callback: - 获取楼栋 :
ZGDataApi buildingListWithProject: callback: - 获取房号 :
ZGDataApi roomListWithBuilding: callback:
5.数据查询
- SDK提供了一系列Api可以查询用户房间相关信息
- 其中部分Api(如访客密码,开门记录,修改呼叫转接,免费短信分享等)需要先设置默认房间,设置默认房间调用
ZGSettingApi setDefaultRoom: callBack:方法
注意
如果没有设置默认房间调用这些接口时会返回code = -1 的错误码
- 以默认房间为参照物的Api(如访客密码,开门记录,修改呼叫转接,免费短信分享等)也提供了可查询其他房间(非默认房间)的版本,方法名和默认房间的一样,只多了一个uid的参数,传入房间的uid即可
- 具体Api请参照Api文件
三、SDK服务
注意
启动服务[ZGMClientManager.shareInstance startService]
停止服务[ZGMClientManager.shareInstance stopService]
该代理具体使用方式请参加Demo
- 服务启动后会通过
ZGMClientManagerDelegate进行回调
@protocol ZGMClientManagerDelegate <NSObject>
/**
需要重新登录,如token失效,账号被挤掉
@param manager 客户端管理
*/
-(void)managerNeedLoginAgain:(ZGMClientManager *)manager;
/**
有视频电话被唤起
推送和接口的电话都是从这个代理响应
@param videoManager 视频会话管理
*/
-(void)managerCallUp:(ZGVideoTelephoneManager *)videoManager;
/**
有视频会话挂断
@param videoManager 视频会话管理
*/
-(void)managerHangUp:(ZGVideoTelephoneManager *)videoManager;
/**
需要刷新用户数据
用户申请钥匙后,会有一个漫长的等待过程,如何审核通过在次代理响应
@param manager 客户端管理
*/
-(void)managerNeedFresh:(ZGMClientManager *)manager;
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
- ZGMClientManagerDelegate,该代理方法由ZGMClientManager对象发出,它会在整个APP工作周期持续响应,建议将代理的实现放在单例对象,AppDelegate,Tabbar或单利对象进行维护
四、人脸识别
注意
人脸识别为SDK1.1版本新增模块
需要集成ZGFaceDetection.Framework
1.注册人脸
- 开发者自行实现拍摄,SDK只需要UIImage即可
- 获取到拍摄图片后,需要进行人脸数量检测
- 使用
ZGFaceDetection detectionFaceNumber方法
注意
超过2M图片会是UIImageOrientationRight的属性,建议先调用ZGFaceDetection的fixOrientation去修正
- 检测后的人脸数量为1时,可以调用
ZGOtherApi faceRegister: callback:方法进行注册,参数为被检测的UIImage
2.人脸信息获取
- 是否注册人脸:
ZGDataApi freshDataWithCallback:刷新接口返回的"set_face"字段表示该账户是否已经注册了人脸 - 获取人脸详细信息:
ZGOtherApi getFaceInfo: - 删除人脸信息 :
ZGOtherApi deleteFace: callback:
五、常用数据
1.通知
ZGOpenDoorSuccessNotification开门成功事件会是以通知的形式发出,该通知所携带的参数为“guid ”,它标识着设备的ID号用于匹配当前开门设备的一致性,具体使用方法请参加DemoZGGoToLoginNotification需要重新登录,原因是由于Token失效或者账号被挤掉