//
|
// ViewController.m
|
// LCOpenSDKDemo
|
//
|
// Created by chenjian on 16/7/11.
|
// Copyright (c) 2016年 lechange. All rights reserved.
|
//
|
|
#import "LCOpenSDK_Prefix.h"
|
#import "HintViewController.h"
|
#import "StartViewController.h"
|
#import "LCOpenSDK_Prefix.h"
|
#import "DeviceViewController.h"
|
#import "openApiService.h"
|
#import "UserModeViewController.h"
|
|
#define Y_BTN_APPSECRET 40
|
#define X_BTN_BOUND 35
|
#define BTN_LENGTH 50
|
|
@interface StartViewController ()
|
{
|
UIActivityIndicatorView* _progressInd;
|
}
|
|
@end
|
|
@implementation StartViewController
|
|
- (void)viewDidLoad
|
{
|
[super viewDidLoad];
|
[self.m_imgBG setImage:[UIImage leChangeImageNamed:Start_Png]];
|
// Do any additional setup after loading the view, typically from a nib.
|
[self.navigationController setNavigationBarHidden:YES animated:YES];
|
[self.m_btnMan setImage:[UIImage leChangeImageNamed:Admin_Png] forState:UIControlStateNormal];
|
|
UISwitch *switchBtn = [[UISwitch alloc] init];
|
switchBtn.frame = CGRectMake([UIScreen mainScreen].bounds.size.width - 60,[UIScreen mainScreen].bounds.size.height - 40 , 50, 35);
|
switchBtn.on = NO;
|
[switchBtn addTarget:self action:@selector(switchBtnDidTapped:) forControlEvents:UIControlEventTouchUpInside];
|
[self.view addSubview:switchBtn];
|
|
NSString *curLanguage = NSLocalizedString(LANGUAGE_TXT, nil);
|
if ([curLanguage isEqualToString:@"zh"]) {
|
[self.m_btnUser setImage:[UIImage leChangeImageNamed:User_Png] forState:UIControlStateNormal];
|
}else if ([curLanguage isEqualToString:@"en"]){
|
[self.m_btnUser setImage:[UIImage leChangeImageNamed:User_Png] forState:UIControlStateNormal];
|
[self.m_btnUser setTitle:@"" forState:UIControlStateNormal];
|
//self.m_btnUser.hidden = YES;
|
//self.m_btnUser.enabled = NO;
|
}
|
[self.m_textAppId setDelegate:self];
|
[self.m_textAppSecret setDelegate:self];
|
|
self.m_textServerInfo.delegate = self;
|
_progressInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
|
_progressInd.transform = CGAffineTransformMakeScale(2.0, 2.0);
|
_progressInd.center = CGPointMake(self.view.center.x, self.view.center.y);
|
[self.view addSubview:_progressInd];
|
[self.view bringSubviewToFront:_progressInd];
|
|
//get info
|
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
|
NSString* libraryDirectory = [paths objectAtIndex:0];
|
|
NSString* myDirectory = [libraryDirectory stringByAppendingPathComponent:@"lechange"];
|
NSString* davDirectory = [myDirectory stringByAppendingPathComponent:@"openSDK"];
|
|
NSString* infoPath = [davDirectory stringByAppendingPathComponent:@"info"];
|
NSString* realPath = [infoPath stringByAppendingString:@".txt"];
|
NSFileManager* fileManage = [NSFileManager defaultManager];
|
NSError* pErr;
|
BOOL isDir;
|
if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) {
|
[fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
|
}
|
if (NO == [fileManage fileExistsAtPath:davDirectory isDirectory:&isDir]) {
|
[fileManage createDirectoryAtPath:davDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
|
}
|
if (YES == [fileManage fileExistsAtPath:realPath isDirectory:&isDir]) {
|
NSLog(@"%@ exists,isdir[%d]", realPath, isDir);
|
NSString* content = [NSString stringWithContentsOfFile:realPath encoding:NSUTF8StringEncoding error:nil];
|
char appId[500] = { 0 };
|
char appSecret[500] = { 0 };
|
char svrInfo[500] = { 0 };
|
char appAccount[500] = { 0 };
|
NSLog(@"content %s", [content UTF8String]);
|
sscanf([content UTF8String], "[%[^]]][%[^]]][%[^]]]%*s", appId, appSecret, svrInfo);
|
self.m_textAppId.text = @"lc2ea929282d5f4636";
|
self.m_textAppSecret.text = @"f869433de68a4a06bb8f9bb89118fc";
|
self.m_textServerInfo.text = [NSString stringWithUTF8String:svrInfo];
|
|
NSLog(@"appid[%@],appsecret[%@],account[%s],svrInfo[%s]", self.m_textAppId.text, self.m_textAppSecret.text, appAccount, svrInfo);
|
}
|
//end
|
|
/*
|
Ch:ios13获取SSID需要用户授权地理位置信息
|
En:Ios13 requires the user to authorize the geographic location information to obtain the SSID.
|
*/
|
NSString* phoneVersion = [[UIDevice currentDevice] systemVersion];
|
CGFloat version = [phoneVersion floatValue];
|
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined && version >= 13) {
|
self.locationManager = [[CLLocationManager alloc] init];
|
if ([ self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
|
[ self.locationManager requestWhenInUseAuthorization];
|
}
|
[self.locationManager startUpdatingLocation];
|
}
|
}
|
|
- (void)viewWillAppear:(BOOL)animated {
|
[super viewWillAppear:animated];
|
NSString *curLanguage = NSLocalizedString(LANGUAGE_TXT, nil);
|
if ([curLanguage isEqualToString:@"zh"]) {
|
|
}
|
else if ([curLanguage isEqualToString:@"en"]) {
|
|
}
|
}
|
|
- (void)viewWillLayoutSubviews {
|
|
self.m_btnMan.frame = CGRectMake(35, [UIScreen mainScreen].bounds.size.height - 120 - 80, 120, 120);
|
self.m_btnUser.frame = CGRectMake([UIScreen mainScreen].bounds.size.width - 35-120, [UIScreen mainScreen].bounds.size.height - 120 - 80, 120, 120);
|
}
|
|
- (void)didReceiveMemoryWarning
|
{
|
[super didReceiveMemoryWarning];
|
// Dispose of any resources that can be recreated.
|
}
|
|
- (void)onManagerMode:(id)sender
|
{
|
//save info
|
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
|
NSString* libraryDirectory = [paths objectAtIndex:0];
|
|
NSString* myDirectory = [libraryDirectory stringByAppendingPathComponent:@"lechange"];
|
NSString* davDirectory = [myDirectory stringByAppendingPathComponent:@"openSDK"];
|
|
NSString* infoPath = [davDirectory stringByAppendingPathComponent:@"info"];
|
NSString* realPath = [infoPath stringByAppendingString:@".txt"];
|
|
NSFileManager* fileManage = [NSFileManager defaultManager];
|
NSError* pErr;
|
BOOL isDir;
|
if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) {
|
[fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
|
}
|
if (NO == [fileManage fileExistsAtPath:davDirectory isDirectory:&isDir]) {
|
[fileManage createDirectoryAtPath:davDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
|
}
|
|
NSString* textTmp = [NSString stringWithFormat:@"[%@][%@][%@]", self.m_textAppId.text, self.m_textAppSecret.text, self.m_textServerInfo.text];
|
[textTmp writeToFile:realPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
//end
|
|
if (nil == self.m_textAppId.text || 0 == self.m_textAppId.text.length
|
|| nil == self.m_textAppSecret.text || 0 == self.m_textAppSecret.text.length) {
|
UIStoryboard* currentBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
|
HintViewController* hintView = [currentBoard instantiateViewControllerWithIdentifier:@"HintView"];
|
[hintView setInfo:self.m_textAppId.text appSecret:self.m_textAppSecret.text info:NSLocalizedString(CONFIG_TIP_TXT, nil)];
|
[self.navigationController pushViewController:hintView animated:NO];
|
return;
|
}
|
[self showLoading];
|
self.m_btnMan.enabled = NO;
|
dispatch_queue_t enter_device = dispatch_queue_create("enter_device", nil);
|
NSString *serverIp = [self parseServerIp:self.m_textServerInfo.text];
|
NSInteger serverPort = [self parseServerPort:self.m_textServerInfo.text];
|
NSString *appId = self.m_textAppId.text;
|
NSString *appSecrect = self.m_textAppSecret.text;
|
dispatch_async(enter_device, ^{
|
|
NSString* accessTok;
|
NSString* errCode;
|
NSString* errMsg;
|
OpenApiService* openApi = [[OpenApiService alloc] init];
|
NSInteger ret = [openApi getAccessToken:serverIp port:serverPort appId:appId appSecret:appSecrect token:&accessTok errcode:&errCode errmsg:&errMsg];
|
dispatch_async(dispatch_get_main_queue(), ^{
|
[self hideLoading];
|
self.m_btnMan.enabled = YES;
|
if (ret < 0) {
|
if ([errCode isEqualToString:@"SN1001"]) {
|
UIStoryboard* currentBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
|
HintViewController* hintView = [currentBoard instantiateViewControllerWithIdentifier:@"HintView"];
|
[hintView setInfo:self.m_textAppId.text appSecret:self.m_textAppSecret.text info:NSLocalizedString(CONFIG_TIP_TXT, nil)];
|
[self.navigationController pushViewController:hintView animated:NO];
|
}
|
return;
|
}
|
UIStoryboard* currentBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
|
DeviceViewController* devView = [currentBoard instantiateViewControllerWithIdentifier:@"DeviceView"];
|
;
|
[self.navigationController pushViewController:devView animated:NO];
|
[devView setAdminInfo:accessTok protocol:80 == serverPort ? 0 : 1 address:serverIp port:serverPort];
|
});
|
});
|
}
|
- (void)onUserMode:(id)sender
|
{
|
//save info
|
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
|
NSString* libraryDirectory = [paths objectAtIndex:0];
|
|
NSString* myDirectory = [libraryDirectory stringByAppendingPathComponent:@"lechange"];
|
NSString* davDirectory = [myDirectory stringByAppendingPathComponent:@"openSDK"];
|
|
NSString* infoPath = [davDirectory stringByAppendingPathComponent:@"info"];
|
NSString* realPath = [infoPath stringByAppendingString:@".txt"];
|
|
NSFileManager* fileManage = [NSFileManager defaultManager];
|
NSError* pErr;
|
BOOL isDir;
|
if (NO == [fileManage fileExistsAtPath:myDirectory isDirectory:&isDir]) {
|
[fileManage createDirectoryAtPath:myDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
|
}
|
if (NO == [fileManage fileExistsAtPath:davDirectory isDirectory:&isDir]) {
|
[fileManage createDirectoryAtPath:davDirectory withIntermediateDirectories:YES attributes:nil error:&pErr];
|
}
|
|
NSString* textTmp = [NSString stringWithFormat:@"[%@][%@][%@]", self.m_textAppId.text, self.m_textAppSecret.text, self.m_textServerInfo.text];
|
[textTmp writeToFile:realPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
//end
|
|
if (nil == self.m_textAppId.text || 0 == self.m_textAppId.text.length
|
|| nil == self.m_textAppSecret.text || 0 == self.m_textAppSecret.text.length) {
|
UIStoryboard* currentBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
|
HintViewController* hintView = [currentBoard instantiateViewControllerWithIdentifier:@"HintView"];
|
|
[self.navigationController pushViewController:hintView animated:NO];
|
[hintView setInfo:self.m_textAppId.text appSecret:self.m_textAppSecret.text info:NSLocalizedString(CONFIG_TIP_TXT, nil)];
|
return;
|
}
|
|
UIStoryboard* currentBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
|
|
UserModeViewController* userModeView = [currentBoard instantiateViewControllerWithIdentifier:@"UserModeView"];
|
|
[userModeView setAppIdAndSecret:self.m_textAppId.text appSecret:self.m_textAppSecret.text svr:[self parseServerIp:self.m_textServerInfo.text] port:[self parseServerPort:self.m_textServerInfo.text]];
|
[self.navigationController pushViewController:userModeView animated:NO];
|
}
|
- (BOOL)textFieldShouldBeginEditing:(UITextField*)textField
|
{
|
CGFloat offset = self.view.frame.size.height - (textField.frame.origin.y + textField.frame.size.height + 216 + 50);
|
if (offset <= 0) {
|
[UIView animateWithDuration:0.1 animations:^{
|
CGRect frame = self.view.frame;
|
frame.origin.y = offset;
|
self.view.frame = frame;
|
}];
|
}
|
return YES;
|
}
|
- (BOOL)textFieldShouldEndEditing:(UITextField*)textField
|
{
|
[UIView animateWithDuration:0.1 animations:^{
|
CGRect rect = self.view.frame;
|
rect.origin.y = 0;
|
self.view.frame = rect;
|
}];
|
return YES;
|
}
|
- (BOOL)textFieldShouldReturn:(UITextField*)textField
|
{
|
[textField resignFirstResponder];
|
return YES;
|
}
|
- (NSString*)parseServerIp:(NSString*)svrInfo
|
{
|
NSArray* arr = [svrInfo componentsSeparatedByString:@":"];
|
NSLog(@"parseServerIP[%@],ip[%@]", arr, [arr objectAtIndex:0]);
|
return [arr objectAtIndex:0];
|
}
|
- (NSInteger)parseServerPort:(NSString*)svrInfo
|
{
|
NSArray* arr = [svrInfo componentsSeparatedByString:@":"];
|
NSLog(@"parseServerport[%@]", arr);
|
if (arr.count <= 1) {
|
if ([[arr objectAtIndex:0] rangeOfString:@"https"].location != NSNotFound) {
|
return 443;
|
}
|
else {
|
return 80;
|
}
|
}
|
else {
|
return [[arr objectAtIndex:1] intValue];
|
}
|
}
|
|
- (void)switchBtnDidTapped:(UISwitch *)sender {
|
LCOpenSDK_LogInfo *logInfo = [[LCOpenSDK_LogInfo alloc] init];
|
if (sender.isOn) {
|
logInfo.levelType = LogLevelTypeDebug;
|
}
|
else {
|
logInfo.levelType = LogLevelTypeFatal;
|
}
|
[[LCOpenSDK_Log shareInstance] setLogInfo:logInfo];
|
}
|
|
/**
|
Ch:显示滚动轮指示器
|
En:Show scroll wheel indicator.
|
*/
|
- (void)showLoading
|
{
|
[_progressInd startAnimating];
|
}
|
/**
|
Ch:消除滚动轮指示器
|
En:Eliminate scroll wheel indicator.
|
*/
|
- (void)hideLoading
|
{
|
if ([_progressInd isAnimating]) {
|
[_progressInd stopAnimating];
|
}
|
}
|
|
@end
|