网关管理

## 网关管理 ### 一、网关列表 获取当前用户下已绑定的网关列表 * 导入头文件`<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) { ``` 该接口是通过远程转发获取的,若路由器未连接互联网则会获取失败。