wifi绑定的逻辑
This commit is contained in:
parent
e103d0e5ed
commit
6131f5ad5e
|
|
@ -32,16 +32,24 @@
|
||||||
#import "ConnectHotpotViewController.h"
|
#import "ConnectHotpotViewController.h"
|
||||||
#import "ConAquarNowWiFiPwdVC.h"
|
#import "ConAquarNowWiFiPwdVC.h"
|
||||||
#import "InfoByImageViewController.h"
|
#import "InfoByImageViewController.h"
|
||||||
|
#import "YooseeNextConnectViewController.h"
|
||||||
|
|
||||||
|
#import "HKPieChartView.h"
|
||||||
|
#import "dataContorl.h"
|
||||||
|
#import<SystemConfiguration/CaptiveNetwork.h>
|
||||||
|
#import "IFishHotpotUDPHelper.h"
|
||||||
|
#import "ESPTouchResult.h"
|
||||||
|
#import "ESPTouchTask.h"
|
||||||
|
#import "IfishDataUnity.h"
|
||||||
|
#import "MyMD5.h"
|
||||||
|
#import <GWP2P/GWP2P.h>
|
||||||
typedef NS_ENUM(NSInteger,lodingViewdissMissStyle) {
|
typedef NS_ENUM(NSInteger,lodingViewdissMissStyle) {
|
||||||
lodingViewdissMissSuccsess=0,// default is 0
|
lodingViewdissMissSuccsess=0,// default is 0
|
||||||
lodingViewdissMissfail,
|
lodingViewdissMissfail,
|
||||||
lodingViewdissMissAlreadyBinded
|
lodingViewdissMissAlreadyBinded
|
||||||
};
|
};
|
||||||
|
|
||||||
@interface ConfigWifiViewController ()<UITextFieldDelegate>
|
@interface ConfigWifiViewController ()<IFishHotpotUDPHelperDelegate,UITextFieldDelegate>
|
||||||
@property (nonatomic, strong) NSCondition *_condition;
|
@property (nonatomic, strong) NSCondition *_condition;
|
||||||
@property (atomic, strong) ESPTouchTask *_esptouchTask;
|
@property (atomic, strong) ESPTouchTask *_esptouchTask;
|
||||||
@property (nonatomic, strong) EspTouchDelegateImpl *_esptouchDelegate;
|
@property (nonatomic, strong) EspTouchDelegateImpl *_esptouchDelegate;
|
||||||
|
|
@ -56,11 +64,27 @@ typedef NS_ENUM(NSInteger,lodingViewdissMissStyle) {
|
||||||
|
|
||||||
@property(nonatomic,strong) UILabel *maclabel;
|
@property(nonatomic,strong) UILabel *maclabel;
|
||||||
|
|
||||||
@property(nonatomic,strong)IfishConnectingView *connectingView;
|
@property (nonatomic, assign) BOOL isGoChangeWiFi;
|
||||||
@property (nonatomic, strong) JMAirKissConnection *airKissConnection; ;
|
@property (nonatomic, strong) JMAirKissConnection *airKissConnection; ;
|
||||||
|
|
||||||
Strong CLLocationManager *locationManager;//iOS13,获取WiFi名称必须开启定位权限
|
Strong CLLocationManager *locationManager;//iOS13,获取WiFi名称必须开启定位权限
|
||||||
|
|
||||||
|
Strong NSMutableString *trackString;
|
||||||
|
Strong MBProgressHUD *HUD;
|
||||||
|
Strong NSTimer *timer;
|
||||||
|
Strong UITapGestureRecognizer*tap;
|
||||||
|
/**
|
||||||
|
设备返回的mac地址
|
||||||
|
*/
|
||||||
|
Copy NSString *macAddress;
|
||||||
|
/**
|
||||||
|
是否正在绑定设备
|
||||||
|
*/
|
||||||
|
Assign BOOL isBindingDevice;
|
||||||
|
Strong NSTimer *bindTimer;
|
||||||
|
Assign NSInteger retryTimes;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
//extern BOOL formLogIn;//连接页面是否来自登录界面
|
//extern BOOL formLogIn;//连接页面是否来自登录界面
|
||||||
extern BOOL isfromCameraView;
|
extern BOOL isfromCameraView;
|
||||||
|
|
@ -189,6 +213,21 @@ extern BOOL isfromCameraView;
|
||||||
[self.navigationController pushViewController:info animated:YES];
|
[self.navigationController pushViewController:info animated:YES];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
//ap模式
|
||||||
|
-(void)goSettingClick:(UIButton*)button
|
||||||
|
{
|
||||||
|
|
||||||
|
NSURL * url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
|
||||||
|
|
||||||
|
if([[UIApplication sharedApplication] canOpenURL:url]) {
|
||||||
|
if (@available(iOS 10.0, *)) {
|
||||||
|
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
|
||||||
|
}else {
|
||||||
|
[[UIApplication sharedApplication] openURL:url];
|
||||||
|
}
|
||||||
|
self.isGoChangeWiFi = YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
-(void)creatConnectStateUI{
|
-(void)creatConnectStateUI{
|
||||||
|
|
||||||
|
|
@ -199,75 +238,17 @@ extern BOOL isfromCameraView;
|
||||||
|
|
||||||
-(void)connectNormalView
|
-(void)connectNormalView
|
||||||
{
|
{
|
||||||
|
self.connectingView.hidden=YES;
|
||||||
if (!self.connectingView) {
|
self.connectBtn.hidden = NO;
|
||||||
CGFloat yOffset = 0;
|
[self.indicator stopAnimating];
|
||||||
if (is_iPhone_X) {
|
|
||||||
yOffset = 88;
|
|
||||||
} else {
|
|
||||||
yOffset = 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
IfishConnectingView *connectingView=[[IfishConnectingView alloc] initWithFrame:self.connectTipLbl.frame];
|
|
||||||
|
|
||||||
self.connectingView =connectingView;
|
|
||||||
|
|
||||||
[self.connectingView.textChangeView animationWithTexts:[NSArray arrayWithObjects:@"正在拼命连接中...",@"请将水族箱放在wifi信号良好的位置",@"连接成功后过几秒才能看到温度哟",@"连接不上,请点击下方说明书",nil]];
|
|
||||||
//self.connectingView.backgroundColor = [UIColor redColor];
|
|
||||||
self.connectingView.alpha = 0;
|
|
||||||
[self.view addSubview:connectingView];
|
|
||||||
self.wifiNamelabel.hidden = NO;
|
|
||||||
self.wifiTextFiled.hidden = NO;
|
|
||||||
self.connectTipLbl.hidden = NO;
|
|
||||||
self.connectBtn.hidden = NO;
|
|
||||||
self.connectTypeBtn.hidden = NO;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
[UIView animateWithDuration:2.0 animations:^{
|
|
||||||
|
|
||||||
self.connectingView.alpha = 0;
|
|
||||||
//self.connectingView.hidden = YES;
|
|
||||||
|
|
||||||
} completion:^(BOOL finished) {
|
|
||||||
|
|
||||||
[self.connectingView.textChangeView stopAnimation];
|
|
||||||
self.wifiNamelabel.hidden = NO;
|
|
||||||
self.wifiTextFiled.hidden = NO;
|
|
||||||
self.connectTipLbl.hidden = NO;
|
|
||||||
self.connectBtn.hidden = NO;
|
|
||||||
self.connectTypeBtn.hidden = NO;
|
|
||||||
|
|
||||||
|
|
||||||
}];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)connectNotNormalView{
|
-(void)connectNotNormalView
|
||||||
|
{
|
||||||
|
self.connectingView.hidden=NO;
|
||||||
[UIView animateWithDuration:2.0 animations:^{
|
[self.indicator startAnimating];
|
||||||
|
|
||||||
self.connectingView.alpha = 1;
|
|
||||||
//self.connectingView.hidden = NO;
|
|
||||||
} completion:^(BOOL finished) {
|
|
||||||
|
|
||||||
[self.connectingView.textChangeView startTextAnimation];
|
|
||||||
|
|
||||||
|
|
||||||
}];
|
|
||||||
|
|
||||||
// self.wifiNamelabel.hidden = YES;
|
|
||||||
// self.wifiTextFiled.hidden = YES;
|
|
||||||
self.connectTipLbl.hidden = YES;
|
|
||||||
self.connectBtn.hidden = YES;
|
self.connectBtn.hidden = YES;
|
||||||
self.connectTypeBtn.hidden = YES;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)initMacIdString:(NSString *)ssid{
|
-(void)initMacIdString:(NSString *)ssid{
|
||||||
|
|
@ -692,6 +673,127 @@ extern BOOL isfromCameraView;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#pragma mark ap开始
|
||||||
|
-(void)viewWillEnterForeground:(NSNotification *)noti{
|
||||||
|
if (self.isGoChangeWiFi) {
|
||||||
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.35 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||||
|
[self checkWiFi];
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-(void)checkWiFi{
|
||||||
|
[CommonUtils getNetworkTypeComplete:^(NSString *netconnType, NSString *BSSID, NSString *SSID) {
|
||||||
|
|
||||||
|
NSString *wifiName = SSID;
|
||||||
|
//先判断之前的wifi名称是否和热点的wifi名称重复,如果冲突,则提示wifi名称错误
|
||||||
|
if ([wifiName isEqualToString:self.wifiNamelabel.text]) {
|
||||||
|
[self.view makeToast:@"请先连接设备热点"];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
[self.timer invalidate];
|
||||||
|
self.timer = nil;
|
||||||
|
[self sendToDeviceWithSSIDName:self.ssid andSSIDPWD:self.wifiPass];
|
||||||
|
// // Do any additional setup after loading the view.
|
||||||
|
self.timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
|
||||||
|
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
|
||||||
|
|
||||||
|
}];
|
||||||
|
|
||||||
|
}
|
||||||
|
- (void)sendToDeviceWithSSIDName:(NSString *)name andSSIDPWD:(NSString *)pwd {
|
||||||
|
[IFishHotpotUDPHelper sharedInstance].delegate = self;
|
||||||
|
[[IFishHotpotUDPHelper sharedInstance] broadCastHotspotConnectCommandWith:name pwd:pwd];
|
||||||
|
}
|
||||||
|
#pragma mark - IFishHotpotUDPHelperDelegate
|
||||||
|
//这里是连接到设备的路由器之后的回调方法
|
||||||
|
- (void)udpHelperCommandExecutedSuccess:(IFishUDPHelperBackMsgModel *)backModel {
|
||||||
|
self.ssid = backModel.senderMacAddress;
|
||||||
|
[self.view resignFirstResponder];
|
||||||
|
self.HUD.labelText = @"请稍后";
|
||||||
|
self.trackString = [NSMutableString string];
|
||||||
|
[self appendTrakContent:@"=================收到设备答复==================="];
|
||||||
|
[self appendTrakContent:[NSString stringWithFormat:@"答复状态码:%@", backModel.result]];
|
||||||
|
[self appendTrakContent:[NSString stringWithFormat:@"答复Mac地址:%@", backModel.senderMacAddress]];
|
||||||
|
self.macAddress = backModel.senderMacAddress;
|
||||||
|
|
||||||
|
[IFishHotpotUDPHelper sharedInstance].delegate = nil;
|
||||||
|
[[IFishHotpotUDPHelper sharedInstance] broadCastRestartCommand];
|
||||||
|
//这里需要连接到之前的路由器,才能绑定设备到
|
||||||
|
self.bindTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(startBinding) userInfo:nil repeats:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)startBinding {
|
||||||
|
|
||||||
|
[CommonUtils getNetworkTypeComplete:^(NSString *netconnType, NSString *BSSID, NSString *SSID) {
|
||||||
|
if ([netconnType isEqualToString:@"no network"]||([netconnType isEqualToString:@"Wifi"]&&[SSID.lowercaseString hasPrefix:@"ifish"]))
|
||||||
|
{
|
||||||
|
|
||||||
|
//无网络 或者连接的还是设备的热点
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (self.isBindingDevice||self.storeNameView) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (self.macAddress.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self.retryTimes = 0;
|
||||||
|
if (self.deviceType==DEVICEPETS)
|
||||||
|
{
|
||||||
|
[self showStoreNameView];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[self bindDeviceWithSsid:self.macAddress];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- (void)udpHelperMessage:(NSString *)msg {
|
||||||
|
if (!self.timer)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
[MBProgressHUD hideHUDForView:self.view animated:YES];
|
||||||
|
self.HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
|
||||||
|
self.HUD.mode = MBProgressHUDModeIndeterminate;
|
||||||
|
self.HUD.labelText = msg;
|
||||||
|
if ([msg containsString:@"Socket连接失败"])
|
||||||
|
{
|
||||||
|
[self.HUD hide:YES afterDelay:3];
|
||||||
|
|
||||||
|
if (self.retryTimes<10)
|
||||||
|
{
|
||||||
|
self.retryTimes++;
|
||||||
|
|
||||||
|
WEAK_SELF;
|
||||||
|
[[IFishHotpotUDPHelper sharedInstance] closeComplete:^{
|
||||||
|
[weakSelf sendToDeviceWithSSIDName:weakSelf.ssid andSSIDPWD:weakSelf.wifiPass];
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)appendTrakContent:(NSString *)msg
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
#pragma mark Ap结束
|
||||||
- (NSArray *) executeForResults
|
- (NSArray *) executeForResults
|
||||||
{
|
{
|
||||||
[self._condition lock];
|
[self._condition lock];
|
||||||
|
|
@ -768,12 +870,21 @@ extern BOOL isfromCameraView;
|
||||||
#pragma mark 绑定设备
|
#pragma mark 绑定设备
|
||||||
-(void)bindDeviceWithSsid:(NSString*)bssid{
|
-(void)bindDeviceWithSsid:(NSString*)bssid{
|
||||||
NSLog(@"设备bssid_%@",bssid);
|
NSLog(@"设备bssid_%@",bssid);
|
||||||
|
NSLog(@"设备bssid_%@",bssid);
|
||||||
|
if (self.isBindingDevice) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
self.isBindingDevice = YES;
|
||||||
|
if (self.bindTimer) {
|
||||||
|
[self.bindTimer invalidate];
|
||||||
|
self.bindTimer = nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.HUD.labelText = @"正在绑定设备";
|
||||||
NSString *userId = [dataContorl dataControlGetUserIdInfo];
|
NSString *userId = [dataContorl dataControlGetUserIdInfo];
|
||||||
[AFHttpTool requestWihtMethod:RequestMethodTypePost url:@"" params:@{} success:^(id response) {
|
|
||||||
|
|
||||||
} failure:^(NSError *err) {
|
|
||||||
|
|
||||||
}];
|
|
||||||
NSString*url=[NSString stringWithFormat:@"%@%@",kBindDevice,userId];
|
NSString*url=[NSString stringWithFormat:@"%@%@",kBindDevice,userId];
|
||||||
NSMutableDictionary*bind=[[NSMutableDictionary alloc]initWithDictionary:@{@"macAddress":bssid}];
|
NSMutableDictionary*bind=[[NSMutableDictionary alloc]initWithDictionary:@{@"macAddress":bssid}];
|
||||||
NSString* timestamp=[NSString stringWithFormat:@"%lld",[[NSDate date] timeIntervalSince1970]*1000];
|
NSString* timestamp=[NSString stringWithFormat:@"%lld",[[NSDate date] timeIntervalSince1970]*1000];
|
||||||
|
|
@ -790,6 +901,8 @@ extern BOOL isfromCameraView;
|
||||||
[AFHttpTool requestWihtMethod:RequestMethodTypePost url:url params:bind success:^(id response) {
|
[AFHttpTool requestWihtMethod:RequestMethodTypePost url:url params:bind success:^(id response) {
|
||||||
NSDictionary*resultDic=[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil];
|
NSDictionary*resultDic=[NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:nil];
|
||||||
NSLog(@"data:%@",resultDic[@"data"]);
|
NSLog(@"data:%@",resultDic[@"data"]);
|
||||||
|
self.isBindingDevice = NO;
|
||||||
|
self.macAddress = nil;
|
||||||
if ([resultDic[@"result"] isEqualToString:@"100"]) {
|
if ([resultDic[@"result"] isEqualToString:@"100"]) {
|
||||||
|
|
||||||
// 保存设备信息
|
// 保存设备信息
|
||||||
|
|
@ -888,10 +1001,24 @@ extern BOOL isfromCameraView;
|
||||||
|
|
||||||
|
|
||||||
} failure:^(NSError *err) {
|
} failure:^(NSError *err) {
|
||||||
//[self showTitle:@"" messsage:@"网络异常"];
|
self.isBindingDevice=NO;
|
||||||
[self.view makeToast:@"网络异常"];
|
if (self.retryTimes < 10) {
|
||||||
self.bakbutton.userInteractionEnabled=YES;
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||||
|
self.HUD.labelText = @"自动重连...";
|
||||||
|
[self bindDeviceWithSsid:self.macAddress];
|
||||||
|
|
||||||
|
self.retryTimes += 1;
|
||||||
|
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
|
||||||
|
self.tap.enabled=YES;
|
||||||
|
self.isBindingDevice = NO;
|
||||||
|
self.HUD.labelText = err.localizedDescription;
|
||||||
|
[self.HUD hide:YES afterDelay:2];
|
||||||
|
[self appendTrakContent:[NSString stringWithFormat:@"绑定网络请求错误:%@", err.localizedDescription]];
|
||||||
|
self.bakbutton.userInteractionEnabled=YES;
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue