// // EZAPWiFiConfigViewController.m // EZOpenSDKDemo // // Created by linyong on 2018/6/4. // Copyright © 2018年 Ezviz. All rights reserved. // #import "EZAPWiFiConfigViewController.h" #import "GlobalKit.h" #import #import "EZHCNetDeviceSDK.h" #import "EZAPConfigResultViewController.h" #import "Toast+UIView.h" #define WIFI_PREFROOT_URL @"prefs:root=WIFI" #define WIFI_IOS10_WIFI_URL @"App-Prefs:root=WIFI" @interface EZAPWiFiConfigViewController () @property (weak, nonatomic) IBOutlet UILabel *wifiNameLabel; @property (weak, nonatomic) IBOutlet UILabel *wifiPwdLabel; @property (weak, nonatomic) IBOutlet UILabel *stepTwoLabel; @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *processingIndicator; @property (weak, nonatomic) IBOutlet UIButton *addBtn; @property (nonatomic,copy) NSString *devicWifiName; @property (nonatomic,strong) NSTimer *timer; @end @implementation EZAPWiFiConfigViewController - (void)viewDidLoad { [super viewDidLoad]; self.title = NSLocalizedString(@"wifi_mode_wifi_connect",@"连接到设备Wi-Fi"); [self initSubviews]; } - (void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self startTimer]; [self addNotifications]; } - (void) viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self stopTimer]; [self stopConfigWifi]; [self removeNotifications]; } #pragma mark - views - (void) initSubviews { self.processingIndicator.hidden = YES; self.devicWifiName = [NSString stringWithFormat:@"EZVIZ_%@",[GlobalKit shareKit].deviceSerialNo]; self.wifiNameLabel.text = self.devicWifiName; self.wifiPwdLabel.text = [NSString stringWithFormat:@"EZVIZ_%@",[GlobalKit shareKit].deviceVerifyCode]; NSString *str = [NSString stringWithFormat:NSLocalizedString(@"wifi_step_two_msg",@"进入手机系统Wi-Fi设置界面,选择名称为%@的网络,用提示的密码进行连接"),self.devicWifiName]; NSMutableAttributedString *aStr = [[NSMutableAttributedString alloc] initWithString:str]; //关键字符颜色调整 [aStr addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:[str rangeOfString:self.devicWifiName]]; //行间距调整 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle setLineSpacing:5]; [aStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [aStr length])]; self.stepTwoLabel.attributedText = aStr; } -(void) startAction { self.processingIndicator.hidden = NO; self.addBtn.hidden = YES; [self.processingIndicator startAnimating]; } - (void) stopAction { [self.processingIndicator stopAnimating]; self.processingIndicator.hidden = YES; } #pragma mark - notification - (void) applicationDidBecomeActive { [self startTimer]; } - (void) applicationWillResignActive { [self stopTimer]; } #pragma mark - actions - (IBAction)enterSettingBtnClick:(id)sender { NSString *urlStr = [[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0?WIFI_IOS10_WIFI_URL:WIFI_PREFROOT_URL; NSURL * url = [NSURL URLWithString:urlStr]; if([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } } - (IBAction)copyPwdBtnClick:(id)sender { UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.string = self.wifiPwdLabel.text; [self.view makeToast:NSLocalizedString(@"done",@"确定") duration:1.5 position:@"center"]; } - (IBAction)addBtnClick:(id)sender { [self performSegueWithIdentifier:@"go2WifiConfigResult" sender:nil]; } #pragma mark - support - (void) configWifi { [EZOPENSDK startAPConfigWifiWithSsid:self.ssid password:self.password deviceSerial:[GlobalKit shareKit].deviceSerialNo verifyCode:[GlobalKit shareKit].deviceVerifyCode result:^(BOOL ret) { if (ret) { [self configSuccess]; } else { [self configFailed]; NSLog(@"config failed"); } }]; } - (void) stopConfigWifi { [EZOPENSDK stopAPConfigWifi]; } - (void) configSuccess { [self stopAction]; self.addBtn.hidden = NO; } - (void) configFailed { [self stopAction]; [self.view makeToast:@"config wifi fail" duration:1.5 position:@"center"]; } - (void)addNotifications { [self removeNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive) name:UIApplicationWillResignActiveNotification object:nil]; } - (void)removeNotifications { [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void) startTimer { [self stopTimer]; self.timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(timerCallback) userInfo:nil repeats:YES]; } - (void) stopTimer { if (!self.timer) { return; } if ([self.timer isValid]) { [self.timer invalidate]; } self.timer = nil; } - (void) timerCallback { if (![self checkSsid]) { return; } [self stopTimer]; [self startAction]; [self configWifi]; } - (NSString *) currentSsid { NSString *currentSsid = @""; CFArrayRef myArray = CNCopySupportedInterfaces(); if (myArray != nil) { CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); if (myDict != nil) { NSDictionary *dict = (__bridge NSDictionary *)(myDict); currentSsid = [dict valueForKey:@"SSID"]; } } return currentSsid; } - (BOOL) checkSsid { NSString *ssid = [self currentSsid]; // if (ssid && [ssid isEqualToString:self.devicWifiName]) // { // return YES; // } //2021-10-19 判断条件,改为只匹配后面序列号字段 if(ssid && [ssid hasSuffix:[GlobalKit shareKit].deviceSerialNo]){//字符串末尾有序列号字符 return YES; } return NO; } #pragma mark - Navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { } @end