收藏官网首页
查看: 9950|回复: 0

iOS SDK 2.0文档 6-SDK流程之设备发现和订阅部分

562

主题

1222

帖子

8115

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8115
发表于 2016-7-7 16:42:06 | 显示全部楼层 |阅读模式
注册成为机智云开发者,手机加虚拟设备快速开发
3.4.  设备发现和订阅部分3.4.1.   设备发现和订阅流程图
3.4.2.   设备发现
APP设置好委托,启动SDK后,就可以收到SDK的设备列表推送。每次局域网设备或者用户绑定设备发生变化时,SDK都会主动上报最新的设备列表。设备断电再上电、有新设备上线等都会触发设备列表发生变化。用户登录后,SDK会主动把用户已绑定的设备列表上报给APP,绑定设备在不同的手机上登录帐号都可获取到。
如果APP想要刷新绑定设备列表,可以调用绑定设备列表接口,同时可以指定自己关心的产品类型标识,SDK会把筛选后的设备列表返回给APP。
SDK提供设备列表缓存,设备列表中的设备对象在整个APP生命周期中一直有效。缓存的设备列表会与当前最新的已发现设备同步更新。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 使用缓存的设备列表刷新UI
NSArray* devices = [GizWifiSDK sharedInstance].deviceList;

// 接收设备列表变化上报,刷新UI
- (void)wifiSDKGizWifiSDK *)wifiSDK didDiscoveredNSError *)result deviceListNSArray *)deviceList {
    // 提示错误原因
    if(result.code != GIZ_SDK_SUCCESS) {
        NSLog(@"result: %@", result.localizedDescription);            
    }
    // 显示变化后的设备列表
    NSLog(@"discovered deviceList: %@", deviceList);
    devices = deviceList;
}

// 主动刷新绑定设备列表、指定筛选的设备productKey
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] getBoundDevices"your_uid" token"your_token" specialProductKeys:[NSArray arrayWithObjects: @"your_product_key", nil]];

3.4.3.   设置设备的委托在设备列表中得到设备对象,为其设置设备委托,以便于刷新设备UI。APP根据自己的需要实现相应的回调。
3.4.4.   设备订阅和绑定APP得到设备列表后,给设备设置委托后,可以订阅设备。已订阅的设备将被自动绑定和自动登录,设备登录成功后会主动上报最新状态。
自动绑定仅限于局域网设备。对于无法在局域网内发现的设备,APP可以通过手动绑定的方式完成绑定。绑定成功的设备,需要订阅后才能使用。
无论是手动绑定还是自动绑定,设备的remark和alias信息,都需要在设备绑定成功后再设置。
解除订阅的设备,连接会被断开,不能再继续下发控制指令了。
3.4.4.1.    设备订阅所有通过SDK得到的设备,都可以订阅,订阅结果通过回调返回。订阅成功的设备,要在其网络状态变为可控时才能查询状态和下发控制指令。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 以设备列表中的第一个设备实例为例,为其设置委托
GizWifiDevice* mDevice = nil;
for (int i = 0; i < deviceList.count; i++) {
    mDevice = deviceList[0];
    mDevice.delegate = self;
    [mDevice setSubscribe:YES];
    break;
}

// 实现回调
- (void)deviceGizWifiDevice *)device didSetSubscribeNSError *)result isSubscribedBOOL)isSubscribed {
    if(result.code == GIZ_SDK_SUCCESS) {
        // 订阅或取消订阅成功
    }
}

3.4.4.2.    非局域网设备绑定APP可以通过设备的mac、productKey、productSecret完成非局域网设备的绑定,可以用上述信息生成二维码,APP通过扫码方式绑定。GPRS设备、蓝牙设备等都是无法通过Wifi局域网发现的设备,都属于非局域网设备。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] bindRemoteDevice"your_uid" token"your_token" mac"your_mac" productKey"your_product_key" productSecret"your_product_secret"];

// 实现回调
- (void)wifiSDKGizWifiSDK *)wifiSDK didBindDeviceNSError *)result didNSString *)did {
    if(result.code == GIZ_SDK_SUCCESS) {
        // 绑定成功
    } else {
        // 绑定失败
    }
}

3.4.4.3.    设置设备绑定信息不订阅设备也可以设置设备的绑定信息。在设备列表中找到要修改的设备,如果是已绑定的,就可以修改remark和alias信息。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
12
// mDevice是从设备列表中获取到的设备实体对象,为其设置委托
mDevice.delegate = self;
[mDevice setCustomInfo"your_remark" alias"your_alias"];

// 实现回调
- (void)deviceGizWifiDevice *)device didSetCustomInfo:(NSError *)result {
    if(result.code == GIZ_SDK_SUCCESS) {
        // 修改成功
    } else {
        // 修改失败
    }
}

3.4.5.   设备解绑已绑定的设备可以解绑,解绑需要APP调用接口完成操作,SDK不支持自动解绑。对于已订阅的设备,解绑成功时会被解除订阅,同时断开设备连接,设备状态也不会再主动上报了。设备解绑后,APP刷新绑定设备列表时就得不到该设备了。
【示例代码】
1
2
3
4
5
6
7
8
9
10
11
[GizWifiSDK sharedInstance].delegate = self;
[[GizWifiSDK sharedInstance] unbindDevice"your_uid" token:@"your_token" did:@"your_did"];

// 实现回调
- (void)wifiSDK:(GizWifiSDK *)wifiSDK didUnbindDevice:(NSError *)result did:(NSString *)did {
    if(result.code == GIZ_SDK_SUCCESS) {
        // 解绑成功
    } else {
        // 解绑失败
    }
}

3.4.6.   获取硬件信息不订阅设备也可以获取硬件信息。APP可以获取模块协议版本号,mcu固件版本号等硬件信息,但只有局域网设备才支持该功能。
【示例代码】
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
// mDevice是从设备列表中获取到的设备实体对象,为其设置委托
mDevice.delegate = self;
[mDevice getHardwareInfo];

// 实现回调
- (void)device:(GizWifiDevice *)device didGetHardwareInfo:(NSError *)result hardwareInfo:(NSDictionary *)hardwareInfo {
    if(result.code == GIZ_SDK_SUCCESS) {
        // 获取成功
        NSString *hardWareInfo = [NSString stringWithFormat:@"WiFi Hardware Version: %@,\
        WiFi Software Version: %@,\
        MCU Hardware Version: %@,\
        MCU Software Version: %@,\
        Firmware Id: %@,\
        Firmware Version: %@,\
        Product Key: %@“
        , [hwInfo valueForKey: @"wifiHardVersion"]
        , [hwInfo valueForKey: @"wifiSoftVersion"]
        , [hwInfo valueForKey: @"mcuHardVersion"]
        , [hwInfo valueForKey: @"mcuSoftVersion"]
        , [hwInfo valueForKey: @"wifiFirmwareId"]
        , [hwInfo valueForKey: @"wifiFirmwareVer"]
        , [hwInfo valueForKey: @"productKey"];
    } else {
        // 获取失败
    }
}


1、机智云QQ群: 287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits /   机智云智能宠物屋go-kit
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表