网关管理
## 网关管理
### 一、网关列表
获取当前用户下已绑定的网关列表
* 导入头文件`<H3CMagicKit/H3CGatewayObject.h>`
* 调用绑定设备列表接口
```
[H3CGatewayObject getBindGatewayListWithSuccess:^(NSArray<H3CBindListModel *> * _Nonnull bindList) {
[MHToast hiddenProgressHUD];
self.bindList = bindList;
[self.tableView reloadData];
} failure:^(H3CError *error) {
[MHToast hiddenProgressHUD];
}];
```
>w 1、接口拿到的设备列表包括支持、不支持控制的网关;包括主路由、子路由。
2、若需要过滤不支持的设备或者Mesh子路由,可以导入头文件`#import <H3CMagicKit/DeviceUtil.h>`使用工具类`DeviceUtil`过滤设备。
3、只有绑定成功的网关,才能从该列表获。若需要控制绑定失败的设备,则要对绑定失败的设备做本地持久化,加入列表展示。
### 二、管理网关
导入头文件`#import <H3CMagicKit/H3CGatewayObject.h>`
>w 1、对网关进行控制(配置SSID、宽带设置、游戏加速等),首先要切换到指定的网关。
2、控制网关需用户输入网关的管理密码。
3、SDK在同一时间只能控制一个网关。
#### 2.1 切换当前控制的网关
调用切网关接口,SDK内部会对网关密码持久化,输入密码为空则会从SDK内部获取,若从未输入密码,则会提示密码错误。
```
[H3CGatewayObject switchGatewayWithTargetGwSn:gwSn gwName:model.gwName adminPw:nil completeHandler:^(H3CGatewayModel * _Nullable gatewayModel, MKChangeGatewayState state, H3CError * _Nullable error) {
[MHToast hiddenProgressHUD];
if (state == MKChangeGatewayStateFailure) {
[MHToast showToastHUD:error.errorDesc];
return;
}
if (state == MKChangeGatewayStateSuccessConfig) {
[self configRouter:model];
return ;
}
if (state == MKChangeGatewayStateFailurePasswordError) {
// 密码错误,
return ;
}
[self pushToRouterHomeViewController:gatewayModel gateway:model password:nil ];
}];
```
#### 2.2 管理密码提示
若需要获取弯网关的管理密码提示, 调用管理密码提示接口
```
[H3CGatewayObject getInfoBeforeLoginWithGwSn:gatewayModel.gwSn ip:gatewayModel.ip success:^(H3CPasswordFlagModel * _Nonnull flagModel) {
[MHToast hiddenProgressHUD];
[self showAdminPasswordAlertView:flagModel gwModel:gatewayModel];
} failure:^(H3CError *error) {
[MHToast hiddenProgressHUD];
// 出厂配置
if (error.retCode == 38 || error.retCode == 40) {
[self configRouter:gatewayModel];
}
else {
[MHToast showToastHUD:error.errorDesc];
}
}];
```
>w 切换当前管理的网关时,若出现网关已经出厂配置,则需要走配置网关流程。
### 三、手动获取网关信息(路由器需连接互联网)
切换到指定的网关,进入当当前管理的设备页面后,可以手动获取网关信息,更新能力集。通过类`MHCapabilityManager`更新网关最新信息。
```
[H3CGatewayObject getGatewayInfoWithGwSn:_gwSn success:^(H3CGatewayModel * _Nonnull gatewayModel) {
H3CGatewayManager.gwName = gatewayModel.gwName;
NSDictionary *resultData = [gatewayModel toDictionary];
[[MHCapabilityManager shareManager]
updateCapabilityWithCapabilityDic:resultData];
} failure:^(H3CError *error) {
```
该接口是通过远程转发获取的,若路由器未连接互联网则会获取失败。