网关搜索/添加

## 设备添加 ### 一、 发现设备 添加路由器/绑定路由器前,需要先连接路由器Wi-Fi搜索设备。 * 引入头文件`#import <H3CMagicKit/H3CGatewaySearcher.h>` #### 1.1 发起搜索 使用单例`H3CGatewaySearcher`监听本地局域网内H3C网关,需要先添加监听者,后发起网关搜索。 ``` [MHToast showProgressHUD]; [[H3CGatewaySearcher shareSearcher] addGatewayListCompleteObserverWithKey:NSStringFromClass([self class]) complete:^(NSMutableArray * _Nonnull gatewayList) { [MHToast hiddenProgressHUD]; self.gatewayList = gatewayList; [self.tableView reloadData]; }]; [[H3CGatewaySearcher shareSearcher] updateLocalGatewayListWithMaxTime:2 isNeedRefresh:YES]; ``` #### 1.2 移除监听对象 不需要监听本地网关后,移除监听对象 ``` - (void)dealloc { [[H3CGatewaySearcher shareSearcher] removeGatewayListCompleteObserverWithKey:NSStringFromClass([self class])]; } ``` ### 二、 绑定网关 绑定网关,建用户与网关的关系,以便远程控制网关。 2.1 检测设备是否支持魔术家SDK控制 * 导入`#import <H3CMagicKit/DeviceUtil.h>` * 使用工具类`DeviceUtil`过滤不支持的设备 2.2 调用绑定接口 * 导入`#import <H3CMagicKit/H3CGatewayObject.h>` ``` [MHToast showProgressHUD]; [H3CGatewayObject bindGatewayWithGatewayIp:gatewayModel.gwLanIp adminPassword:password gwSn:gatewayModel.gwSn gwName:gatewayModel.gwName gwVersion:gatewayModel.gwVersion gwModel:gatewayModel completeHandler:^(H3CGatewayModel * _Nullable bindGatewayModel, MKManageGatewayState bindState, H3CError * _Nullable bindError) { [MHToast hiddenProgressHUD]; if (bindState == MKManageGatewayStateSuccess || bindState == MKManageGatewayBindFailure) { if (bindState == MKManageGatewayStateSuccess) { [MHToast showToastHUD:@"绑定成功"]; } else { [MHToast showToastHUD:[NSString stringWithFormat:@"%@", bindError.errorDesc]]; } [self.navigationController popToRootViewControllerAnimated:YES]; [self dismissViewControllerAnimated:YES completion:nil]; } else if (bindState == MKManageGatewayStateFailure) { [MHToast showToastHUD:[NSString stringWithFormat:@"%@", bindError.errorDesc]]; } else if (bindState == MKManageGatewayStateConfig) { [self configRouter:gatewayModel]; } }]; ``` * 若绑定设备需要从网关获取管理密码的提示语,可以调用下面接口 ``` [MHToast showProgressHUD]; [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 1、绑定过程中,若发现设备还未配置,则需要去配置; 2、调用接口返回错误码38,40,表示设备也是出厂配置中。