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. 用户登录返回值只保留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类型接口
注 : 开启UDP服务才能发现设备, 开启UDP服务才能让设备入网
[UserManager sharedInstance];
[userManager openUDPServer];
[userManager openUDPServer];
+ (UserManager *)sharedInstance;
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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" } }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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": "内部错误" }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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": "内部错误" }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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": "内部错误" }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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 }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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 }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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":"内部错误" }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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 }
错误返回信息
无
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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时间戳 }
返回示例
无
调用方法:
- (void)publishMessage:(NSString *)deviceId serverUrl:(NSString *)serverUrl data:(NSData *)data;
注意: 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;
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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":"内部错误" }
注: 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"
注 : 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;
参数 | 类型 | 必须 | 默认 | 说明 |
serverUrl | NSString | 是 | 无 | 从获取绑定设备返回值获取(绑定设备也返回serverUrl) |
返回参数
参数 | 类型 | 说明 |
无 | 无 | 无 |
调用方法
- (void)reconnetMQTTserver:(NSString *)serverUrl;
创建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"; }
创建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"; }
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
无 | 无 | 无 | 无 | 无 |
返回参数
参数 | 类型 | 说明 |
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”; } )
错误返回示例
无
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
无 | 无 | 无 | 无 | 无 |
返回参数
参数 | 类型 | 说明 |
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}
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
productId | NSString | 是 | 无 | 产品ID |
返回参数
参数 | 类型 | 说明 |
productName | NSString | 产品名称 |
注 : 返回值为空的 不是本厂商设备, 可以不发现此设备
调用方法:
//新增获取设备productName接口, 为nil代表不是厂商productId, 可忽略设备 - (NSString *)getProductNameJudgeVendorDeviceWithProductId:(NSString *)productId;
正确返回示例
"球泡灯"或nil
- (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 }
调用方法: (使用DeviceManager单例调用)
- (BOOL)isMQTTConnected:(NSString *)serverUrl
注: 返回YES 代表MQTT处于连接状态, NO代表MQTT 连接已断开 或者 此serverUrl没有建立过MQTT服务
调用方法: (同2.4.2)
请求参数
参数 | 类型 | 必须 | 默认 | 说明 |
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 联盟所有。本中提到的所有商标名称、商标和注册商标均属其各⾃所有者的财产,特此声明。