安信可科技
Action disabled: index

AiCloud iOS SDK 开发指导

AiCloud iOS SDK 开发指导

v1.4.0

修订历史 

版本 修订内容 修订人 审核人 修订日期
1.0.0 创建文档 赵莹 Cody 2016.8.23
1.0.1 添加智能连接,入网成功两个接口回调 赵莹 Cody 2016.8.30
1.1.0 新增批量部署方法(9.2) 赵莹 Cody 2016.9.05
1.1.1 更改了uuid 生成规则, 需用户自己生成(见注意事项4), 控制设备初始化方法变更, 增加了用户名,密码, uuid三个参数(10.1) 赵莹 Cody 2016.9.07
1.1.2 iOS与 Android 统一接口参数名称 赵莹 Cody 2016/9/07
1.2.0 添加TCP局域网控制设备功能,  在SDK配置说明中添加灯配置说明 赵莹 Cody 2016/9/21
1.2.1 更新球泡灯数据点 赵莹   2016/10/9
1.2.2 修改SDK CommConfig: 通信配置类,SDK使用前用户进行配置, 新增关闭MQTT服务接口 赵莹   2016/10/13
1.3.0 与安卓统一接口(方法名及参数改动较大), 封装了mqtt可建立多个连接功能 赵莹   2016/10/19
2016/10/28
1.3.2 新增mqtt返回原始数据接口, 新增发布设备使用NSData类型参数接口 赵莹   2016/11/2
1.4.0 1. 参数命名规范下划线改成驼峰式 2. 新增接口较多, 详情见.h头文件 赵莹   2016/11/22

1.AiCloud iOS SDK环境说明

注意事项

1. 用户登录返回值只保留15分钟,在app开发过程中需要做好判断以免产生不必要的bug

2. 使用SDK前配置: “Build Settings”中的“Other Linker Flags”选项添加“-all_load”;

3. 此SDK引用的第三方框架有MQTTClient,MKNetwork,AsyncSocket ,开发者要避免重复引用

4. uuid:uuid应当保证在应用安装后保持不变,且尽可能唯一,以便跟踪回溯。建议在app第一次启动时把unix时间戳*1000+毫秒值将其转换成十六进制字符串,然后截取前12个字节,如果不足12个字节,用随机字符串填充。(加毫秒值考虑到了同一个用户有可能在一秒内同时打开多于一个APP,使用毫秒的话就很难做到在一毫秒内同时打开多个APP,这样对于同一个用户而言就很难不唯一了)生成完毕后保存,并在APP卸载之前保证不变。

插座配置说明:

1,按住按键,绿色小灯慢闪为智能配网模式,中闪为 AP 配网模式,快闪为执行 OTA 产检, 长亮为初始化成功。2,智能连接如果失败按住按键,6 秒中之后进入 AP 配网模式(绿灯中闪),十五秒后回复 出场设置 

灯配置说明: 

灯一般不需要初始化,除非要重新连接其他WIFI,每两秒开关一次(保持开启时间为1秒),三次会进入智能连接模式,4次会进入AP模式,十次会初始化。

CommConfig.m: 通信配置类,SDK使用前用户进行配置

/**
 * 服务器路径配置 [[http://api.vcd.io:4567/v1/|http://api.vcd.io:4567/v1/]]
 * 注意:此地址不能加上 "http://"
 */
NSString * NETWORK_URL = @" 123.56.46.239:4568/v1";
 
/**
 * 合作厂商key、secret; 由AiCloud提供给合作厂商
 */
NSString * ACCESS_KEY = @"2b250d04d459ec46bed1a57dad028915 ";
NSString * ACCESS_SECRET = @" 0e8d106602f4125a16e11445645bcc18";

更新说明:

本次更新主要添加了短信验证接口,短信验证接口只有手机号码(phone)一个参数,注册接口有略微改动,增添了两个参数:1、短信验证码(messageCode,userCode),配置信息中增添厂商id(VENDOR_ID),新增了mqtt回调原始数据接口, 增加了发布参数使用NSData类型接口

2. 工作流程

   

3. API使用说明

3.1 开启UDP服务 

注 : 开启UDP服务才能发现设备, 开启UDP服务才能让设备入网

3.1.1 获取DeviceManager单例

[UserManager  sharedInstance];

3.1.2 打开UDP服务

[userManager openUDPServer];

3.1.3 关闭UDP服务

[userManager openUDPServer];

3.2 用户登录

3.2.1获取UserManager单例

+ (UserManager *)sharedInstance;

3.2.2获取短信验证码

请求参数

参数 类型 必须 默认 说明
phone NSString 手机号码
templateId int 1或2(注册1, 修改密码2)

返回参数

参数 类型 说明
userCode NSString suerCode,注册/修改密码时会用到

方法调用示例

- (void)getMessage:(NSString *)phone templateId:(int)templateId completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

返回示例

{
    "success": true,
    "data": {
        "userCode": "sa4nUnfQisGTZH3EmE8JEE"
    }
}

3.2.3 用户注册

请求参数

参数 类型 必须 默认 说明
mobile NSString 手机号
password NSString 用户密码
messageCode NSString 手机收到的验证码
userCode NSString userCode(获取短信验证码时获取)

返回参数

参数 类型 说明
userId NSString 用户ID

调用方法

- (void)registerWithPassword:(NSString *)password userCode:(NSString *)userCode messageCode:(NSString *)messageCode mobile:(NSString *)mobile completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例

{
    "success": 1,
    "data": {
        "userId": "sa4nUnfQisGTZH3EmE8JEE"
    }
}

错误返回示例

{
    "success": 0,
    "errorCode": 500,
    "message": "内部错误"
}

3.2.4 找回密码

请求参数

参数 类型 必须 默认 说明
mobile NSString 手机号
password NSString 用户密码
messageCode NSString 手机收到的验证码
userCode NSString userCode(获取短信验证码时获取)

返回参数

参数 类型 说明

调用方法

//找回密码接口实现
- (void)resetPasswordWithPassword:(NSString *)password userCode:(NSString *)userCode messageCode:(NSString *)messageCode mobile:(NSString *)mobile completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例

{
    "success": 1,
    "data": {
		"success": "1"
	}
}

错误返回示例 

{
    "success": 0,
    "errorCode": 500,
    "message": "内部错误"
}

3.2.5 用户登录

请求参数

参数 类型 必须 默认 说明
username NSString 用户名/手机号(用户名长度不能超过32个字节)
password NSString 账号密码

返回参数

参数 类型 说明
userToken NSString 用户token(15分钟过期)
userId NSString 用户ID

用户登录返回值只保留15分钟,在app开发过程中需要做好判断以免产生不必要的bug

调用方法

- (void)loginUserName:(NSString *)username
			password:(NSString *)password
			completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例

{
	"success": 1,
	"data": {
		"userToken": "350cfc21-cc96-4a59-8570-d4d1e40b1ebe", 
		"userId": "sa4nUnfQisGTZH3EmE8JEE"
	}
}

错误返回示例

{
	"success": 0,  
	"errorCode": 500,
	"message": "内部错误"
}

3.2.6 修改用户名

请求参数

参数  类型 必须 默认 说明
userId  NSString 用户ID(登录时返回值)
username  NSString 将要设置的新用户名(用户名长度不能超过32个字节)

返回参数

参数 类型 说明
responseJSON id 修改设备名返回值

调用方法

//更改用户名称  UserManager调用
- (void)updateUserInfoWithUserId:(NSString *)userId username:(NSString *)username completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例

{
	data = {
		success = 1;
	};
	success = 1;
}

错误返回示例

{
	"errorCode":400,
	"message":"user already binding",
	"success":0
}

 

3.2.7 查询用户信息

请求参数

参数  类型 必须 默认 说明
userId NSString 用户id(登录时返回值)

返回参数

参数 类型 说明
responseJSON id 查询用户信息返回值

调用方法

//查询用户信息  UserManager调用
-(void)getUserInfoWithUserId:(NSString *)userId completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例 

{
	data = {
		userMobile = 18500272824;
		username = hh;
	};
	success = 1;
}

错误返回示例

{
	"errorCode":400,
	"message":"user already binding",
	"success":0
}

3.3分支一

3.3.1 获取绑定设备

请求参数

参数 类型 必须 默认 说明
userToken NSString 用户token 

返回参数 : 返回值时json字符串,解析后才能得到下列参数

参数 类型 说明
deviceId NSString 设备ID
devicePassword NSString 设备密码
status BOOL 设备状态
productId NSString 产品ID
productName NSString 产品名称
server NSString 设备建立MQTT连接所在服务器地址 (注: 如果server为空,先 解绑, 再重新绑定)

调用方法  :使用UserManager对象调用

- (void)getDeviceListForUser:(NSString *)userToken
        completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例 

{
	"success": 1,
	"data":[
		{
			"productId": "pnTSD3ZsRNVgvNn6YRC2Z5",
			"deviceId": "sa4nUnfQisGTZH3EmE8JEE",
			"devicePassword": "0a1704dee5ed7200fcea5f627f6d1fd1",
			"server": "mqtt://s1.vcd.io:1883",
			"status": 1,
			"productName": "球泡灯"
		}
	]
}

错误返回示例

{
    "success": 0,
    "errorCode": 500,
    "message":"内部错误"
}

3.3.2 解绑设备

请求参数

参数 类型 必须 默认 说明
userToken NSString 用户token
deviceId NSString 设备id(从绑定设备列表获取)
devicePassword NSString 设备密码(从绑定设备列表获取)

返回参数

参数 类型 说明
responseJSON id 绑定设备反馈信息

调用方法  

- (void)unbindDeviceForUser:(NSString *)userToken
					deviceId:(NSString *)deviceId devicePassword: (NSString *)devicePassword
			completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回信息

responseJSON ---> {
    "data":{
		"result":"SUCCESS"
	},
	"success":1
}

错误返回信息

3.3.3 控制设备

3.3.3.1 广义网控制设备

3.3.3.1.1 广义网控制设备  (既可以用于读取设备状态,也可以用于控制设备)

请求参数

参数 类型 必须 默认 说明
deviceId String 设备的deviceId查询已绑定列表时可以获得
params NSDictionary  需要发布参数的Json字符串
serverUrl NSString 获取绑定设备列表获取 (绑定设备也可获取)

返回参数

参数 类型 说明

调用方法

- (void)publishMessage:(NSString *)deviceId serverUrl:(NSString *)serverUrl params:(NSDictionary *)params;

读取设备状态params示例

{
"i" : 序列id,  (谁发送,谁生成)
"d":{["key1","key2",,"keyn"]}   为空则设备不需上报数据
"t": 时间戳
}

控制设备params示例

{
	"i":序列id,(谁发送,谁生成)
	"d":{
		"key1":"value1",
		"key2":"value2","keyn":"valuen"
	}
	"t" : unix时间戳
}

返回示例

3.3.3.1.2 广义网控制设备  (接口2  参数同上, 只是params参数类型 转换成 NSData)

调用方法: 

- (void)publishMessage:(NSString *)deviceId serverUrl:(NSString *)serverUrl data:(NSData *)data;

3.3.3.2 局域网控制设备

注意: TCP控制优先级高于MQTT控制, 先判断设备是否可以TCP控制, 可以即执行TCP控制, 不可以则使用MQTT控制

打开TCP服务

请求参数

参数 类型 必须 默认 说明
delegate id TCPHelperd代理对象
deviceId NSString 设备ID(从获取设备列表方法获取)
deviceIp NSString 设备IP(从获取设备列表方法获取)
devicePassword NSString 设备password(从获取设备列表方法获取)

返回参数

参数 类型 说明

调用方法

- (id)openTCPServerWithDelegate:(id)delegate deviceIp:(NSString *)deviceIp devicePassword:(NSString *)devicePassword deviceId:(NSString *)deviceId;

tcp方式控制设备

请求参数

参数 类型 必须 默认 说明
commandDict NSDictionary  被TCP控制的设备信息

注意: 此方法可用于读取设备 与 发布设备, CGFloat类型参数保留2位小数, 传值示例如下 

返回参数

参数 类型 说明
          无                    无

调用方法

(void)tcpSendData:(NSDictionary *)params;

写球泡灯json示例(发送时不必发送所有数据点,可以根据需求发送相应的数据点)

{
    "i":4,
    "d": {
          "s":0,
          "m":1,
          "hue":0.5,
          "lit":0.5,
          "sat":0.5,
          "lum":0.5,
          "tem":0.5
         },
   "t":1464714257
   "deviceId":"PGiHMkrgyxrUCuLgEfubUU"
}

读球泡灯示例(发送时不必发送所有数据点,可以根据需求发送相应的数据点)

{
	"i":4,
	"d":{
	[
		"s":0,
		"m":1,
		"hue":0.5,
		"lit":0.5,
		"sat":0.5,
		"lum":0.5,
		"tem":0.5
	]
	},
    "t":1464714257
    "deviceId":"PGiHMkrgyxrUCuLgEfubUU"
}

判断TCP是否连接

调用方法: 通过该代理方法参数isTCPConnected  判断是否连接

(void)isTCPConnected:(BOOL)isTCPConnected;

TCP服务反馈信息

请求参数

参数 类型 必须 默认 说明

返回参数

参数 类型 说明
receiveDict NSDictionary TCP连接返回信息 

调用方法: 代理方法,返回值通过receiveDict 返回

- (void)tcpReceiveData:(NSDictionary *)receiveDict;

返回json示例(写,返回数据点根据发送数据点返回,发送哪个数据点返回哪个,没有发送的不返回)

{	
	"d":{
		"s":0,
		"m":1,
		"hue":0.5,
		"lit":0.5,
		"sat":0.5,
		"lum":0.5,
		"tem":0.5
	},
	"t":1464714257,
	"i":234
}

返回json示例(读,返回数据点根据发送数据点返回,发送哪个数据点返回哪个,没有发送的不返回)

{
	"d":{
		"s":0,
		"m":1,
		"hue":0.5,
		"lit":0.5,
		"sat":0.5,
		"lum":0.5,
		"tem":0.5
	},
	"t":1464714257,
	"i": 234
}

断开TCP连接

注意 : 控制器销毁时断开TCP服务

调用方法

- (void)closeTCPServer;

3.4分支二

3.4.1设备部署

请求参数

参数 类型 必须 默认 说明
userToken  NSString 用户token, 有过期时间

返回参数

参数 类型 说明
responseJSON NSDictionary 接口回调返回字符串,详见返回示例

调用方法

- (void)deployForUser:(NSString *)userToken  completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler

正确返回示例

{
	"success": 1,
	"data": {
		"serverList": [
		{
			"server": "mqtt://s1.vcd.io:1883",
			"username": "tNb3ZgG9HLNiCEfNnushp6",
			"password": "dmUxHriiFrsAxJNTNd9Pz3",
			"pubkey": "",
			"pkVersion": ""
		},],
		"signature": "8e0bb23839955bde1346b6e9395347ff"
	}
}

注意: 请求返回值serverList count>=1时必须全部建立MQTT链接(有几个server就建立几个MQTT连接)

错误返回示例

{
    "success": 0,
    "errorCode":500,
    "message":"内部错误"
}

3.4.2 建立MQTT连接

3.4.2.1 获取DeviceManger单例(建立连接之前, 必须先确保获取DeviceManager单例)

3.4.2.2 建立MQTT连接

注: MQTT连接时 苹果设备从锁屏、后台状态进入前台时, 会自动重连, 只有网络切换时, 需要手动调用重连接口

请求参数

参数 类型 必须 默认 说明
userId NSString 用户ID
serverHost NSString MQTT服务器IP地址
serverPort int32_t MQTT端口
username NSString 登录MQTT时的用户名,从部署设备后返回的信息里获取
password NSString 登录MQTT时的密码,从部署设备后返回的信息里获取
uuid NSString 用户第一次登录设备时生成,参照uuid规则自己生成

返回参数

参数 类型 说明
devInfo NSDictionary 返回json字符串不是建立连接成功返回值,是发布消息成功后设备的反馈数据
deviceId   NSString 设备ID

调用方法

- (void)openMQTTServerWithUserId:(NSString *)userId
                       serverUrl:(NSString *)serverUrl
                        userName:(NSString *)username
                        password:(NSString *)password
                            uuid:(NSString *)uuid
               completionHandler:(void (^)(NSString *deviceId, NSDictionary *devInfo, NSError *error))completionHandler;

注意:设备接收控制指令后, 此回调里获取设备返回信息

正确返回示例

插座读设备状态 返回示例

devInfo = {
    "i":3,
    "d":{
        "s" : 1
    },
   "deviceId":"ssxggsjsfks",
    "t":"1464714257"
}
deviceId="sdgjshghklgjsgdshgjsdhk"

插座控制返回示例

devInfo={
    "i":3,
    "d":{
        "s":1
    },
    "t":"1464714257"
}
deviceId = "ssxggsjsfks"

灯泡读设备状态返回示例(读取设备状态返回json字符串的参数个数由发布时传入的参数决定,传入哪个参数就返回哪个参数,没有传入的参数则不返回,

s : 开关,整数, 0是关, 1是开

m: 模式,整数,1为彩光模式,2为白光模式,0为RAW模式(RGB原始数据点模式)

hue:色环的角度,0到360度,浮点(保留2位小数)

lit:亮度,用于彩色模式的暗亮调节,0到1,默认值0.5,浮点(保留2位小数)

sat:对比度,用于彩色模式素艳调节,0到1,默认值改为0.6,浮点(保留2位小数)

lum:亮度,用于白光模式的暗亮调节,0到1,默认值改为0.5,浮点(保留2位小数)

tem:色温,用于白光模式的冷暖调节,0到1,默认值改为0.6,浮点(保留2位小数)

devInfo = {
   "i":4,
   "d": {
        "s":0,
        "m":1,
        "hue":0.5,
        "lit":0.5,
        "sat":0.5,
        "lum":0.5,
        "tem":0.5
    },
    "t":1464714257
}
deviceId="PGiHMkrgyxrUCuLgEfubUU"

灯泡控制(开关) 返回示例

devInfo={
    "i":4,
    "d":{
        "s":0
    },
    "t":1464714257
}
deviceId="ssxggsjsfks"

灯泡控制(彩光) 返回示例

devInfo={
    "i":4,
    "d":{
        "m":1,
        "hum":0.5
    },
    "t":1464714257
}
deviceId = "sssjhkjhs"

3.4.2.3 MQTT反馈信息透传接口

注 : mqtt反馈NSData类型数据接口,  比前一个接口多了一个返回NSData类型数据回调

调用方法:

- (void)openMQTTServerWithUserId:(NSString *)userId
                       serverUrl:(NSString *)serverUrl
                        userName:(NSString *)username
                        password:(NSString *)password
                            uuid:(NSString *)uuid
               completionHandler:(void (^)(NSString *deviceId, NSDictionary *devInfo, NSError *error))completionHandler
        rawDataCompletionHandler:(void (^)(NSString *deviceId, NSData *data, NSError *error))rawDataCompletionHandler;		

3.4.2.4 MQTT重连

参数 类型 必须 默认 说明
serverUrl NSString 从获取绑定设备返回值获取(绑定设备也返回serverUrl)

返回参数

参数 类型 说明

调用方法

- (void)reconnetMQTTserver:(NSString *)serverUrl;

3.5分支三

3.5.1 添加设备

3.5.1.1 智能连接

创建WiFiTouch类单例对象

+ (WiFiTouch *)sharedTouch;

智能连接

智能入网,为设备提供上网的WIFI账号和密码,确保在WIFI环境中使用此方法

请求参数

参数 类型 必须 默认 说明
ssid NSString WIFI账号名称
password NSString WIFI账号密码
timeout int 连接超时时间

返回参数

参数 类型 说明

调用方法

- (void)smartLink :(NSString*)ssid password:(NSString*) password timeout:(int)timeout;

停止智能连接

方法调用示例 : 使用WiFiTouch单例调用

- (void)stop;

判断智能连接是否正在进行

请求参数

参数 类型 必须 默认 说明
无 

返回参数

参数 类型 说明
YES(NO) BOOL 智能连接正在连接时返回YES, 否返回NO

方法调用示例 : 使用WiFiTouch单例调用

- (BOOL)isRunning;

返回示例

Return YES;

智能链接的反馈

请求参数

参数 类型 必须 默认 说明
无 

返回参数

参数 类型 说明
devInfo NSDictionary 设备信息

调用方法

- (void)receiveSmartLinkCompletionHandler:(void (^)(NSDictionary *devInfo, NSError *error))completionHandler;

正确返回示例 

{
    "deviceId":"PGiHMkrgyxrUCuLgEfubUU";
    "deviceIp":"192.168.1.116";
    "devicePort":12476;
    "mac":"5ccf7f026cea";
    "productId":"pnTSD3ZsRNVgvNn6YRC2Z5";
}

3.5.1.2 AP连接

创建DeviceManager类单例

+ (DeviceManager *)sharedInstance;

AP模式连接

AP模式连接 : 用户连接设备释放的Wi-Fi,将配置信息直接发送至设备  

请求参数

参数 类型 必须 默认 说明
ssid NSString WIFI账号名称
password NSString WIFI账号密码

返回参数

参数 类型 说明
devInfo NSDictionary 设备信息

调用方法

- (void)APLink:(NSString *)ssid
                password:(NSString *)passwd
       completionHandler:(void (^)(NSDictionary *devInfo, NSError * error))completionHandler;

正确返回示例 

{
    "productId":"pnTSD3ZsRNVgvNn6YRC2Z5",
    "deviceId":"PGiHMkrgyxrUCuLgEfubUU",
    "mac":"5ccf7f026cea",
    "deviceHost":"10.10.3.24",
    "devicePort" : 12476
}

错误返回示例 

设备入网成功的反馈

请求参数

参数 类型 必须 默认 说明
无 

返回参数

参数 类型 说明
devInfo NSDictionary 设备信息

调用接口

- (void)networkSuccessCompletionHandler:(void (^)(NSDictionary *devInfo, NSError *error))completionHandler;

正确返回示例

{
   "deviceId" :  "PGiHMkrgyxrUCuLgEfubUU";
   "deviceIp" :  "192.168.1.116";
   "devicePort" :  12476;
   "mac": "5ccf7f026cea";
   "productId":  "pnTSD3ZsRNVgvNn6YRC2Z5";
}

3.5.2 发现设备

3.5.2.1 发现设备

请求参数

参数 类型 必须 默认 说明
无 

返回参数

参数 类型 说明
deviceIp NSString 设备IP
devicePort UInt16 设备端口
deviceId NSString 设备ID
mac NSString 设备MAC地址
productId NSString 产品ID

注意 : 调用发现设备接口一次返回所有设备信息, 但是每次只返回一台设备信息, 会自动返回多次

注意 :发现设备需要去重(去掉从服务器请求得到的已经绑定设备列表中的设备)

调用接口

- (void)discoverDeviceCompletionHandler:(void (^)(NSArray *deviceList, NSError *error))completionHandler;

正确返回示例 

deviceList---> (
         {
           "deviceId”:  “BuZR4ohMzRqUokEKYwMrqZ”;
           "deviceIp” :  "192.168.1.141";
           "devicePort” :  12476;
           "mac” :  “5ccf7f035332”;
           "productId” :  “pnTSD3ZsRNVgvNn6YRC2Z5”;
         }
)

错误返回示例

3.5.2.2查询产品信息接口

请求参数

参数  类型 必须 默认 说明

返回参数

参数 类型 说明
responseJSON NSDictionary 绑定设备反馈信息

调用方法:

- (void)getVendorInfoCompletionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例

{
	data={
		productVoList=(
			{
				productId = 3G8pAXs2kppdLwHZHqTeWH;
				productName = AiBox;
			},
			{
				productId = kc9dRAXr35PEA7PCZcR4z9;
				productName = "ESP\U7cfb\U5217\U6a21\U7ec4";
			},
			{
				productId = R6of6RqqYzKphvEqZApfNV;
				productName = "\U667a\U80fd\U63d2\U5ea7";
			},
			{
				productId = TDo7PY6XPjv3Fwru6zSnoK;
				productName = "\U667a\U80fd\U706f";
			}
		);
	};
	success = 1;
}

错误返回示例

responseJSON ---> {
	"errorCode":400,
    "message":"user already binding",
    "success":0}

 

3.5.2.3 获取productName

请求参数

参数  类型 必须 默认 说明
productId NSString 产品ID

返回参数

参数 类型 说明
productName   NSString 产品名称

注 : 返回值为空的 不是本厂商设备, 可以不发现此设备

调用方法:

//新增获取设备productName接口, 为nil代表不是厂商productId, 可忽略设备
- (NSString *)getProductNameJudgeVendorDeviceWithProductId:(NSString *)productId;

正确返回示例 

	"球泡灯"或nil  

3.5.2.3 绑定设备

- (void)bindingDeviceForUser:(NSString *)userToken Host:(NSString *)deviceHost devicePort:(UInt16)devicePort completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler

请求参数

参数  类型 必须 默认 说明
useToken NSString 用户token
deviceHost  NSString 设备IP地址 
devicePort UInt16 设备端口号

返回参数

参数 类型 说明
responseJSON id 绑定设备反馈信息

调用方法 

- (void)bindingDeviceForUser:(NSString *)userToken Host:(NSString *)deviceHost devicePort:(UInt16)devicePort completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler

注: 每次新绑定设备, 都要根据返回信息server, 判断此server是否建立过MQTT连接, 建立过连接的才能进行MQTT控制, 没建立过的 需要重新建立连接

正确返回示例 

{
	"success": true,
	"data":{
		"server": "mqtt://s1.vcd.io:1883",
		"username": "tNb3ZgG9HLNiCEfNnushp6",
		"password": "dmUxHriiFrsAxJNTNd9Pz3",
		"pubkey": "",
		"pkVersion": ""
	}
}

错误返回示例

responseJSON ---> {
	"errorCode" :  400,
	"message":"user already binding",
	"success":0
}

3.5.2.3  判断MQTT是否处于连接状态

调用方法: (使用DeviceManager单例调用)

- (BOOL)isMQTTConnected:(NSString *)serverUrl

注: 返回YES 代表MQTT处于连接状态, NO代表MQTT 连接已断开 或者 此serverUrl没有建立过MQTT服务

3.5.2.4 没建立过连接的, 建立MQTT连接, 断开连接的 重连

调用方法: (同2.4.2)

3.5.2.5 修改设备名称

请求参数

参数  类型 必须 默认 说明
deviceName NSString 将要使用的新设备名称
deviceId  NSString 设备id 

返回参数

参数 类型 说明
responseJSON id 修改设备名称返回值

调用方法

//新增用户更改设备名称 UserManager调用
- (void)updateDeviceInfoWithDviceName:(NSString *)deviceName deviceId:(NSString *)deviceId completionHandler:(void (^)(id responseJSON, NSError *error))completionHandler;

正确返回示例

{
	data={
		success = 1;
	};
	success = 1;
}

错误返回示例

{
	"errorCode":400,
    "message":"user already binding",
	"success":0
}

免责声明和版权公告

本文中的信息,包括供参考的URL地址,如有变更,恕不另行通知。

文档“按现状”提供,不负任何担保责任,包括对适销性、适用于特定用途或非侵权性的任何担保,和任何提案、规格或样品在他处提到的任何担保。本文档不负任何责任,包括使用本文档内信息产生的侵犯任何专利权行为的责任。本文档在此未以禁止反言或其他方式授予任何知识产权使用许可,不管是明示许可还是暗示许可。

Wi-Fi 联盟成员标志归 Wi-Fi 联盟所有。本中提到的所有商标名称、商标和注册商标均属其各⾃所有者的财产,特此声明。