// // SceneDelegate.m // 唔即云相册 // // Created by 余衡武 on 2021/12/8. // #import "SceneDelegate.h" #import "HWWebViewController.h" #import "CalculatorViewController.h" #import "SetUsePWDViewController.h" #import "GuideViewController.h" #import "BaseNavigationController.h" #import "MySetViewController.h" #import "SafeForKey.h" #import "TipsQRCodeViewController.h" #import "SetPWDFirstViewController.h" #import "connectDeviceManager.h" #import "inputPWDViewController.h" #import "customLaunchView.h" #import "RSATool.h" #import "forgetPwdViewController.h" #import "TipsQRCodeForChangeDeviceViewController.h" #import "AFNetworkReachabilityManager.h" #import "ComontAlretViewController.h" #import "uploadFileManager.h" #import "downloadManager.h" #import "backupsFileManager.h" #import "iPhone.h" #import #import #import #import "NASMsgModel.h" #import "queryOneShareModel.h" #import "boxSaveFileManager.h" #import "boxDownloadFileManager.h" #import "NASViewController.h" @interface SceneDelegate () @property(nonatomic, strong) CalculatorViewController *calculatorVC; @property(nonatomic, strong) HWWebViewController *webVC; @property(nonatomic, strong) inputPWDViewController *inputVC; @property(nonatomic, strong) customLaunchView *customLaunchV;// //@property(nonatomic, strong) PlayerViewController *curPlayerVC; @property(nonatomic, strong) BaseNavigationController *preRootPlayerNav; @property(nonatomic, assign) bool isQRCodeType;//第一次 扫码进来的 //@property(nonatomic, assign) bool isNeedToShowSecretKey;//扫码进来的SN 没有密码 则需要显示秘钥 @property (nonatomic, assign) BOOL isLoginAgainType;// 单点登录 点重新登录进来的 @property (nonatomic, assign) BOOL isNeedToStopWork;// 无网络报错 @property (nonatomic, assign) BOOL isDidShowPwdType;// 是否显示密码界面了 @property(nonatomic, copy) NSString *getShareStr;//拿到分享的字符串 //冷启动分享跳入用 @property(nonatomic, strong) UISceneSession *session; @property(nonatomic, strong) UISceneConnectionOptions *connectionOptions; @end @implementation SceneDelegate - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions API_AVAILABLE(ios(13.0)){ if (scene) { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(guideOk:) name:GuideOkNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLockViewFun:) name:lockBypwdNotification object:nil]; //[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setPwdVCFun:) name:setPwdNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(forgetPwdFun:) name:forgetPwdNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(forgetPwdBackFun:) name:forgetPwdBackNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(forgetPwdDidSetPwdFun:) name:forgetPwdDidSetNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scanChangeDeviceFun:) name:scanChangeDeviceNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scanChangeDeviceBackFun:) name:scanChangeDeviceBackNotification object:nil]; UIWindowScene *windowScene = (UIWindowScene *)scene; self.window = [[UIWindow alloc] initWithWindowScene:windowScene]; self.window.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); // 初始化数据库 [self initBrowserWindow]; // 加载主页面 [self enterMainVCFromScene]; // [self reportVersionInfoFun]; [self.window makeKeyAndVisible]; ksharedAppDelegate.window = self.window; //冷启动 if(connectionOptions.URLContexts != nil){ _session = session; _connectionOptions = connectionOptions; // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // mainBlock(^{ // [self scene:scene openURLContexts:connectionOptions.URLContexts]; // }); // }); } } } /** 进入登录界面 - 内部使用 */ - (void)enterLoginVCFromScene { // UIViewController *vc = [[UIViewController alloc] init]; // vc.view.backgroundColor = [UIColor redColor]; // UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc]; // self.window.rootViewController = nvc; } /** 主界面 - 内部使用 */ - (void)enterMainVCFromScene { // ConnectTestViewController *qrCodeVCNav = [[ConnectTestViewController alloc] init]; // self.window.rootViewController = qrCodeVCNav; // return;/*临时测试*/ if(_isNeedToStopWork){ return; } /*先判断本地有无设备 无设备时需要先扫码添加设备*/ NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device]; if (!deviceDict || ![[deviceDict allKeys] containsObject:Const_Have_Add_Device_SN]){ /*扫码界面*/ TipsQRCodeViewController *qrCodeVC = [[TipsQRCodeViewController alloc] init]; BaseNavigationController *qrCodeVCNav = [[BaseNavigationController alloc] initWithRootViewController:qrCodeVC]; self.window.rootViewController = qrCodeVCNav; _isQRCodeType = YES; return; } NSString *SNStr = deviceDict[@"Const_Have_Add_Device_SN"]; // GuideViewController BOOL haveGuide = [HWDataManager getBoolWithKey:Const_Have_Show_Guide]; if (haveGuide) { ; }else { GuideViewController *guiDeVC = [[GuideViewController alloc] init]; guiDeVC.delegate = self; guiDeVC.sn = SNStr; self.window.rootViewController = guiDeVC; return; } //BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_Mask_View_Open]; #ifdef developJSQ NSInteger maskModel = 1;// [HWDataManager getIntegerWithKey:Const_Mask_View_Model]; #else NSInteger maskModel = [HWDataManager getIntegerWithKey:Const_Mask_View_Model]; #endif //添加默认启动图片 if(!_customLaunchV && maskModel == 0){ _customLaunchV = [[customLaunchView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, SCREEN_H)]; [self.window addSubview:_customLaunchV]; } if(maskModel == 0){ //20240612 产品觉得 启动页太快了 要停两秒 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self getDeviceMsgInMainVCWith:deviceDict]; }); } else{ [self getDeviceMsgInMainVCWith:deviceDict]; } //[self showNetErrorAlertType2Fun]; } - (void)getDeviceMsgInMainVCWith:(NSDictionary*)deviceDict { KWeakSelf //有设备了先去做链接准备 // 80bec9c5 NSString *SNStr = deviceDict[@"Const_Have_Add_Device_SN"]; NSString *sdnId = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.sdnId; if(SNStr && !sdnId){ [[connectDeviceManager shareInstance] getThridMsgBySN:SNStr needReconnect:YES didNetEnd:^(NSInteger didSuc) { if(didSuc == 0){ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ mainBlock(^{ [weakSelf showNetErrorAlertFun]; [weakSelf enterMainVCFromSceneSecondStepFun]; }); }); } else if(didSuc == 2 ||didSuc == 201 ||didSuc == 202){ [weakSelf gotoScanAginByThridMsgErrorFun:didSuc]; } else{ [weakSelf enterMainVCFromSceneSecondStepFun]; } }]; } else{ [self enterMainVCFromSceneSecondStepFun]; } } - (void)enterMainVCFromSceneSecondStepFun { //确保通过SN号拿到密码了 //非扫码进入 进入到这里很可能还没联网拿到设备最新信息 if(![connectDeviceManager shareInstance].DeviceThirdIdMod){ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ mainBlock(^{ [self enterMainVCFromScene]; }); }); return; } //是否已经有密码了 有就是输入密码 没有就是设置密码 NSString *curPwd = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.password; NSString * sdnId = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.sdnId; if(!sdnId){ HLog(@"没有拿到sdnId"); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ mainBlock(^{ [self enterMainVCFromScene]; }); }); return; } if(_customLaunchV){ [_customLaunchV removeFromSuperview]; _customLaunchV = nil; } if(curPwd && curPwd.length > 0){ /*设置密码*/ // inputPWDViewController *nextVC = [[inputPWDViewController alloc] init]; // BaseNavigationController *nextVCNav = [[BaseNavigationController alloc] initWithRootViewController:nextVC]; // self.window.rootViewController = nextVCNav; } else{ /*没有设置密码*/ SetPWDFirstViewController *qrCodeVC = [[SetPWDFirstViewController alloc] init]; BaseNavigationController *qrCodeVCNav = [[BaseNavigationController alloc] initWithRootViewController:qrCodeVC]; self.window.rootViewController = qrCodeVCNav; return; } //下载配置先处理 [boxDownloadFileManager shareInstance]; //获取NAS相关信息 // [self getNASMsgFun]; // // [self initMainTabbarFun]; // // return; if(_curPlayerVC){ //[_curPlayerVC disconnectVideoServer]; _curPlayerVC.isNeedRecyclResource = YES; [_curPlayerVC recyclResource]; _curPlayerVC.liveStreamManager = nil; _curPlayerVC.commandChannelManager = nil; [_curPlayerVC.navigationController popViewControllerAnimated:NO]; _curPlayerVC = nil; } //每次进入 PlayerViewController *playerRootVC = [[PlayerViewController alloc] init]; if(self.isLoginAgainType){ playerRootVC.isLoginAgainType = self.isLoginAgainType; } playerRootVC.isPwdVCShow = YES; _curPlayerVC = playerRootVC; // BaseNavigationController *playerNav = [[BaseNavigationController alloc] initWithRootViewController:playerRootVC]; // self.window.rootViewController = playerNav; UIViewController *vc = [UIViewController new]; BaseNavigationController *playerNav = [[BaseNavigationController alloc] initWithRootViewController:vc]; [playerNav pushViewController:playerRootVC animated:NO]; self.window.rootViewController = playerNav; _preRootPlayerNav = playerNav; self.isLoginAgainType = NO; __block BOOL isPrivacyMode = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.isPrivacyMode; KWeakSelf if(!_isQRCodeType){ if(isPrivacyMode) { [playerRootVC setShowImgAndVoiceTypeFun:NO]; [self showCalculatorVC]; } else{ [self HandleEnterNotPrivacyModeFun]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ mainBlock(^{ [connectDeviceManager shareInstance].isFirstInputPwdDone = YES; playerRootVC.isPwdVCShow = NO; [playerRootVC setShowImgAndVoiceTypeFun:YES]; //[weakSelf shareAwakenAppBy:weakSelf.getShareStr]; if(self->_session && self->_connectionOptions){ [self scene:self->_session openURLContexts:self->_connectionOptions.URLContexts]; } }); }); } //_isQRCodeType = NO; } else{ if(isPrivacyMode) { [playerRootVC setShowImgAndVoiceTypeFun:NO]; [self showCalculatorVC]; } else{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ mainBlock(^{ playerRootVC.isPwdVCShow = NO; [playerRootVC setShowImgAndVoiceTypeFun:YES]; }); }); } } _isQRCodeType = NO; //获取NAS相关信息 [self getNASMsgFun]; [self initMainTabbarFun]; } #pragma mark 1.4.1 新增tabbar - (void)initMainTabbarFun { UITabBarController *tabBarController = [[UITabBarController alloc] init]; UIViewController *NASVC = [[NASViewController alloc] init]; BaseNavigationController *NasNav = [[BaseNavigationController alloc] initWithRootViewController:NASVC]; UIViewController *viewController2 = [[UIViewController alloc] init]; UIViewController *viewController3 = [[UIViewController alloc] init]; NSArray *viewControllers = @[NasNav, viewController2,viewController3]; // 添加更多视图控制器 tabBarController.viewControllers = viewControllers; NSString*phoneTitle = NSLocalizedString(@"tabbar_cloud_phone",nil); NSString*myTitle = NSLocalizedString(@"tabbar_my_title",nil); NSArray *titleArr = @[@"NAS",phoneTitle,myTitle]; NSArray *imageNArr = @[@"tabbar_nas_N", @"tabbar_phone_N",@"tabbar_my_N"]; NSArray *imageHArr = @[@"tabbar_nas_H", @"tabbar_phone_H",@"tabbar_my_H"]; for (int i=0; i *)URLContexts { NSEnumerator *enumerator = [URLContexts objectEnumerator]; UIOpenURLContext *context; while (context = [enumerator nextObject]) { NSLog(@"context.URL =====%@",context.URL); //openprivacyxapp://page?param1=value1¶m2=value2 NSString *curStr = context.URL.absoluteString; if([curStr rangeOfString:@"openprivacyxapp://page"].location != NSNotFound){ _getShareStr = curStr; [self delayedHandlShareAwakenAppBy:curStr]; break; } else{ [WXApi handleOpenURL:context.URL delegate:self]; } //NSLog(@"context.options.sourceApplication ===== %@",context.options.sourceApplication); } _session = nil; _connectionOptions = nil; } - (void)delayedHandlShareAwakenAppBy:(NSString*)curStr{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self shareAwakenAppBy:curStr]; }); } #pragma mark 初始化数据库-DB_BrowserWindows_TableName - (void)initBrowserWindow { // 浏览器当前所有窗口 NSArray *dataArray = [BaseModel bg_findAll:DB_BrowserWindows_TableName]; // 浏览器当前窗口索引ID NSInteger ID = [HWDataManager getIntegerWithKey:BrowserWindowsCurrentID]; NSString *IDValue = [NSString stringWithFormat:@"%ld", ID]; NSString *where = [NSString stringWithFormat:@"where %@=%@",bg_sqlKey(@"ID"),bg_sqlValue(IDValue)]; NSArray *modelArr = [BaseModel bg_find:DB_BrowserWindows_TableName where:where]; if (dataArray.count == 0) { // 浏览器没有窗口 BaseModel *model = [[BaseModel alloc] init]; model.ID = 0; model.name = @"主页"; // model.iconFile = imageUrl; model.webUrl = Const_HomeUrl; // 写入数据库 model.bg_tableName = DB_BrowserWindows_TableName; [model bg_saveOrUpdateAsync:^(BOOL isSuccess) { HLog(@"BaseModel写入:%@", isSuccess ? @"成功":@"失败"); }]; // 浏览器当前窗口索引ID [HWDataManager setIntegerWithKey:BrowserWindowsCurrentID value:0]; }else if (modelArr.count == 0) { // 新建窗口 BaseModel *model = [[BaseModel alloc] init]; model.ID = ID; model.name = @"主页"; // model.iconFile = imageUrl; model.webUrl = Const_HomeUrl; // 写入数据库 model.bg_tableName = DB_BrowserWindows_TableName; [model bg_saveOrUpdateAsync:^(BOOL isSuccess) { HLog(@"BaseModel写入:%@", isSuccess ? @"成功":@"失败"); }]; }else { // 更新窗口数据 // 浏览器当前窗口索引ID // NSInteger ID = [HWDataManager getIntegerWithKey:BrowserWindowsCurrentID]; // // BaseModel *model = [[BaseModel alloc] init]; // model.ID = ID; // model.name = @"主页"; //// model.iconFile = imageUrl; // model.webUrl = Const_HomeUrl; // // // 更新数据库 // model.bg_tableName = DB_BrowserWindows_TableName; // [model bg_saveOrUpdateAsync:^(BOOL isSuccess) { // HLog(@"BaseModel更新: %@", isSuccess ? @"成功":@"失败"); // }]; } } #pragma mark 获取当前屏幕的截图 //- (UIImage *)getScreenShotImage { // CGSize size = [UIScreen mainScreen].bounds.size; // CGFloat scale = [UIScreen mainScreen].scale; // UIGraphicsBeginImageContextWithOptions(size, YES, scale); // [self.window.layer renderInContext:UIGraphicsGetCurrentContext()]; // UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); // UIGraphicsEndImageContext(); // return image; //} #pragma mark 计算器伪装视图 /*CalculatorViewController*/ - (void)showCalculatorVC{ if(ksharedAppDelegate.getSystemPermissType){ HLog(@"检测到获取系统全进入后台"); return; } //修复扫描已经有密码的合作 点击跳过因为网络弹框再次覆盖一次密码(需要输入两次密码) BaseNavigationController*curTopNav = (BaseNavigationController*)[iTools appRootViewController]; if([curTopNav isKindOfClass:[BaseNavigationController class]]){ NSArray *vcArr = [curTopNav viewControllers]; if(vcArr && vcArr.count >0){ UIViewController *lastVC = vcArr.lastObject; if([lastVC isKindOfClass:[inputPWDViewController class]]){ return; } } } /*无有效时长直接返回不加载任何加密界面*/ NSString *PwdStr = nil; NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device]; //本地密码本地判断 密码改在服务器保持 if ([[deviceDict allKeys] containsObject:Const_Have_Add_Device_PWD]){ PwdStr = [deviceDict objectForKey:Const_Have_Add_Device_PWD]; } //实时拿到的密码 (每次打开或者更换设备 通过SN重新拿) if([connectDeviceManager shareInstance].DeviceThirdIdMod.data.password){ NSString *curPwd = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.password; NSString*desPwdStr = [RSATool AES128Decrypt:curPwd key:AESCODEKEEYY]; if(desPwdStr){ PwdStr = desPwdStr; } } if (!PwdStr || [PwdStr isEqualToString:@""]) { return; } // BOOL haveOpenMask = [HWDataManager getBoolWithKey:Const_Mask_View_Open]; // if (!haveOpenMask){ // //输入密码界面 // [self closeCalculatorVC]; // _inputVC = [[inputPWDViewController alloc] init]; // [self.window addSubview:_inputVC.view]; // return; // } BOOL haveVaildTime = [HWDataManager getBoolWithKey:Const_Have_No_VaildTime]; if (haveVaildTime == YES){/*无有效时间*/ return; } if(![connectDeviceManager shareInstance].DeviceThirdIdMod){ return; } BOOL isPrivacyMode = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.isPrivacyMode; if(!isPrivacyMode) { [connectDeviceManager shareInstance].isFirstInputPwdDone = YES; [[NSNotificationCenter defaultCenter] postNotificationName:ShowImgAndVoiceNotification object:nil]; return; } #ifdef developJSQ NSInteger maskModel = 1;// [HWDataManager getIntegerWithKey:Const_Mask_View_Model]; #else NSInteger maskModel = [HWDataManager getIntegerWithKey:Const_Mask_View_Model]; #endif if (maskModel == 0){ //输入密码界面 [self closeCalculatorVC]; _inputVC = [[inputPWDViewController alloc] init]; [self.window addSubview:_inputVC.view]; _isDidShowPwdType = YES; } else if (maskModel == 2){ /*浏览器*/ [self closeCalculatorVC]; _webVC = [[HWWebViewController alloc] init]; _webVC.pwd = PwdStr; _webVC.webUrl = @"https://baidu.com"; [self.window addSubview:_webVC.view]; _isDidShowPwdType = YES; }else{ /*计算器*/ [self closeCalculatorVC]; _calculatorVC = [[CalculatorViewController alloc] init]; _calculatorVC.pwd = PwdStr; [self.window addSubview:_calculatorVC.view]; _isDidShowPwdType = YES; } [[NSNotificationCenter defaultCenter] postNotificationName:ShowPwdVCNotification object:nil]; } - (void)closeCalculatorVC{ ksharedAppDelegate.getSystemPermissType = NO; if (_calculatorVC){ [_calculatorVC.view removeFromSuperview]; } /*浏览器*/ if (_webVC){ [_webVC.view removeFromSuperview]; } if(_inputVC){ [_inputVC.view removeFromSuperview]; } _isDidShowPwdType = NO; if(self->_session && self->_connectionOptions){ [self scene:self->_session openURLContexts:self->_connectionOptions.URLContexts]; } } - (NSString *)documentPathForAccount:(NSString *)account fileFolder:(NSString *)fileFolder { NSString *path = DocumentPath; if (account.length != 0) { path = [NSString stringWithFormat:@"%@/%@/",DocumentPath,account]; } if ([fileFolder containsString:@"/"]) { NSString *path1 = [path stringByAppendingPathComponent:fileFolder]; path1 = [path1 stringByDeletingLastPathComponent]; NSError *error; if (![[NSFileManager defaultManager] fileExistsAtPath:path1]) { [[NSFileManager defaultManager] createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:&error]; } }else{ NSError *error; if (![[NSFileManager defaultManager] fileExistsAtPath:path]) { [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error]; } } return [path stringByAppendingPathComponent:fileFolder]; } - (void)startUseBtnBePressed{ [self enterMainVCFromScene]; // NSString *launchAppPWDPath = [self documentPathForAccount:@"" fileFolder:@"LaunchPWD"]; // NSString *str = [[NSString alloc] initWithContentsOfFile:launchAppPWDPath encoding:(NSUTF8StringEncoding) error:nil]; // if (!str || [str isEqualToString:@"0"]) // { // SetUsePWDViewController *loginVC = [[SetUsePWDViewController alloc] init]; // loginVC.delegate = self; // self.window.rootViewController = loginVC; // // return; // } // // NSArray *dataArray = [BaseModel bg_findAll:DB_BrowserWindows_TableName]; // // if (dataArray.count == 0) { // 浏览器没有窗口 // // 加载首页 // HWWebViewController *vc = [[HWWebViewController alloc] init]; // vc.webUrl = Const_HomeUrl; // UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc]; // self.window.rootViewController = nvc; // // }else { // // 浏览器当前窗口索引ID // NSInteger ID = [HWDataManager getIntegerWithKey:BrowserWindowsCurrentID]; // NSString *where = [NSString stringWithFormat:@"where %@=%ld",bg_sqlKey(@"ID"),(long)ID]; // NSArray* finfAlls = [BaseModel bg_find:DB_BrowserWindows_TableName where:where]; // BaseModel *model = finfAlls.firstObject; // // // 加载网页 // HWWebViewController *vc = [[HWWebViewController alloc] init]; // vc.webUrl = model.webUrl; // UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc]; // self.window.rootViewController = nvc; // } } - (void)loginOk{ [self enterMainVCFromScene]; } - (void)guideOk:(NSNotification*)not{ NSString *object = not.object; if(object && [object isEqualToString:@"isLoginAgainType"]){ self.isLoginAgainType = YES; } [self enterMainVCFromScene]; //clear下载和上传的已经获取的数据 [[uploadFileManager shareInstance] suspendUploadFileFun:YES withModel:nil]; [uploadFileManager shareInstance].databaseArr = [NSMutableArray new]; [uploadFileManager shareInstance].fileModelDataArr = [NSMutableArray new]; [uploadFileManager shareInstance].curUploadFileDataModel.curUploadStateType = uploadStateWait; [[downloadManager shareInstance] suspendDownloadFileFun:YES withModel:nil]; [downloadManager shareInstance].databaseArr = [NSMutableArray new]; [downloadManager shareInstance].downLoadFileModelDataArr = [NSMutableArray new]; [[backupsFileManager shareInstance] suspendBackupsFileFun]; //frp的下载 [YCDownloadManager pauseAllDownloadTask]; NSString *uid =[connectDeviceManager shareInstance].DeviceThirdIdMod.data.sn; if(uid){ } else{ uid = @""; } [YCDownloadManager updateUid:uid]; } #pragma mark 上报版本号信息 -(void)reportVersionInfoFun { NSMutableDictionary *paraDict = [NSMutableDictionary new]; NSString *vers = [iPhone appVersion]; if(vers){ [paraDict setValue:vers forKey:@"iosClientVersionNumber"]; } NSDictionary *deviceDict = [HWDataManager getObjectWithKey:Const_Have_Add_Device]; if (deviceDict && [[deviceDict allKeys] containsObject:Const_Have_Add_Device_SN]){ NSString*snStr = deviceDict[Const_Have_Add_Device_SN]; if(snStr){ [paraDict setValue:snStr forKey:@"sn"]; } else{ return; } } else{ return;; } // KWeakSelf [[netWorkManager shareInstance] CommonPostCallBackCode:reportVersionInfo Parameters:paraDict success:^(id _Nonnull responseObject) { } failure:^(NSError * _Nonnull error) { }]; } #pragma mark 获取NAS相关信息 -(void)getNASMsgFun { NSMutableDictionary *paraDict = [NSMutableDictionary new]; NSString *SNStr = [connectDeviceManager shareInstance].DeviceThirdIdMod.data.changeSn; if(SNStr){ [paraDict setValue:SNStr forKey:@"sn"]; } else{ return;; } KWeakSelf [[netWorkManager shareInstance] CommonGetWithCallBackCode:getIpFun Parameters:paraDict success:^(id _Nonnull responseObject){ NASMsgModel *model = [[NASMsgModel alloc] initWithDictionary:responseObject error:nil]; if(model){ ksharedAppDelegate.NASMsgMod = model; } } failure:^(NSError * _Nonnull error) { }]; } #pragma mark 主动上锁 - (void)showLockViewFun:(NSNotification*)not { [self showCalculatorVC]; } #pragma mark 进入设置密码 //- (void)setPwdVCFun:(NSNotification*)not //{ // _isNeedToShowSecretKey = YES; //} #pragma mark 忘记密码 - (void)forgetPwdFun:(NSNotification*)not { /*忘记密码*/ forgetPwdViewController *forgetPwdVC = [[forgetPwdViewController alloc] init]; BaseNavigationController *forgetPwdVCNav = [[BaseNavigationController alloc] initWithRootViewController:forgetPwdVC]; self.window.rootViewController = forgetPwdVCNav; } #pragma mark 忘记密码返回 - (void)forgetPwdBackFun:(NSNotification*)not { // if(_preRootPlayerNav) // { // self.window.rootViewController = _preRootPlayerNav; // } // else{ [self enterMainVCFromScene]; //} [self showCalculatorVC]; } #pragma mark 忘记密码设置密码完成 - (void)forgetPwdDidSetPwdFun:(NSNotification*)not { // if(_preRootPlayerNav) // { // NSArray *vcArr = _preRootPlayerNav.viewControllers; // if(vcArr.count > 2){ // [_preRootPlayerNav popToViewController:vcArr[1] animated:NO]; // } // self.window.rootViewController = _preRootPlayerNav; // } // else{ [self enterMainVCFromScene]; //} [self closeCalculatorVC]; _curPlayerVC.isPwdVCShow = NO; [_curPlayerVC setShowImgAndVoiceTypeFun:YES]; [connectDeviceManager shareInstance].isFirstInputPwdDone = YES; } #pragma mark 扫码切换设备 scanChangeDeviceNotification - (void)scanChangeDeviceFun:(NSNotification*)not { TipsQRCodeForChangeDeviceViewController *nextVC = [[TipsQRCodeForChangeDeviceViewController alloc] init]; nextVC.isRootVCType = YES; BaseNavigationController *nextNav = [[BaseNavigationController alloc] initWithRootViewController:nextVC]; self.window.rootViewController = nextNav; } #pragma mark 扫码切换设备点击返回 - (void)scanChangeDeviceBackFun:(NSNotification*)not { // if(_preRootPlayerNav) // { // self.window.rootViewController = _preRootPlayerNav; // } // else{ [self enterMainVCFromScene]; //} [self showCalculatorVC]; } #pragma mark 网络异常弹框 -(void)showNetErrorAlertFun { NSInteger maskModel = [HWDataManager getIntegerWithKey:Const_Mask_View_Model]; if(maskModel !=0 && _isDidShowPwdType){ return; } NSString *linkErrTip = NSLocalizedString(@"player_link_fail_tip_type9",nil); if([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable){ linkErrTip = NSLocalizedString(@"player_link_fail_phone_Tips",nil); _isNeedToStopWork = YES; [self showNetErrorAlertType2Fun]; return; } linkErrTip = [[NSString alloc] initWithFormat:@"[9]%@",linkErrTip]; ComontAlretViewController *linkFailAlretVC= [[ComontAlretViewController alloc] initWithTiTle:nil msg:linkErrTip imageStr:nil cancelTitle:NSLocalizedString(@"single_sign_on_exit",nil) okTitle:NSLocalizedString(@"player_link_fail_tryAgain",nil) isOkBtnHighlight:YES didClickOk:^{ //[self enterMainVCFromScene]; } didClickCancel:^{ exit(0); }]; linkFailAlretVC.modalPresentationStyle = UIModalPresentationCustom; [self.window.rootViewController presentViewController:linkFailAlretVC animated:YES completion:^{ linkFailAlretVC.view.superview.backgroundColor = [UIColor clearColor]; }]; } #pragma mark 网络异常弹框 -(void)showNetErrorAlertType2Fun { if([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable){ NSString * linkErrTip = NSLocalizedString(@"netWork_error_tip_content",nil); ComontAlretViewController *linkFailAlretVC= [[ComontAlretViewController alloc] initWithTiTle:NSLocalizedString(@"netWork_error_tip_title",nil) msg:linkErrTip imageStr:nil cancelTitle:NSLocalizedString(@"single_sign_on_exit",nil) okTitle:nil isOkBtnHighlight:NO didClickOk:^{ //[self enterMainVCFromScene]; } didClickCancel:^{ exit(0); }]; linkFailAlretVC.modalPresentationStyle = UIModalPresentationCustom; self.window.rootViewController = [UIViewController new]; [self.window.rootViewController presentViewController:linkFailAlretVC animated:YES completion:^{ linkFailAlretVC.view.superview.backgroundColor = [UIColor clearColor]; }]; } } - (void)gotoScanAginByThridMsgErrorFun:(NSInteger)errorCode { /*扫码界面*/ TipsQRCodeViewController *qrCodeVC = [[TipsQRCodeViewController alloc] init]; qrCodeVC.isNeedToShowAleatType = YES; qrCodeVC.getSNMsgcode = errorCode; BaseNavigationController *qrCodeVCNav = [[BaseNavigationController alloc] initWithRootViewController:qrCodeVC]; self.window.rootViewController = qrCodeVCNav; } #pragma mark 分享页面唤醒APP - (void)shareAwakenAppBy:(NSString*)shareStr { //[[iToast makeText:shareStr] show]; NSArray * paraArr = [shareStr componentsSeparatedByString:@"&"]; if(!paraArr || paraArr.count==0){ return; } //type=save和download NSString *type = nil; NSString *fileIds = nil; NSString *extractionCode = nil; NSString *token = nil; for (NSString*objectStr in paraArr) { if([objectStr rangeOfString:@"type"].location != NSNotFound){ NSArray * objectArr = [objectStr componentsSeparatedByString:@"="]; if(objectArr.count == 2){ type = objectArr.lastObject; continue; } } else if([objectStr rangeOfString:@"fileIds"].location != NSNotFound){ NSArray * objectArr = [objectStr componentsSeparatedByString:@"="]; if(objectArr.count == 2){ fileIds = objectArr.lastObject; continue; } } else if([objectStr rangeOfString:@"extractionCode"].location != NSNotFound){ NSArray * objectArr = [objectStr componentsSeparatedByString:@"="]; if(objectArr.count == 2){ extractionCode = objectArr.lastObject; continue; } } else if([objectStr rangeOfString:@"token"].location != NSNotFound){ NSArray * objectArr = [objectStr componentsSeparatedByString:@"="]; if(objectArr.count == 2){ token = objectArr.lastObject; continue; } } } if(!type || type.length ==0){ HLog(@"分享 type 获取错误"); return; } if(!fileIds || fileIds.length ==0){ HLog(@"分享 fileIds 获取错误"); return; } if(!token || token.length ==0){ HLog(@"分享 token 获取错误"); return; } [self getShareOneFileListFunByToken:token withFileIds:fileIds withExtractionCode:extractionCode withType:type]; } #pragma mark 分享信息重新获取 - (void)getShareOneFileListFunByToken:(NSString*)token withFileIds:(NSString*)fileIds withExtractionCode:(NSString*)extractionCode withType:(NSString*)type { NSMutableDictionary*paraDict = [NSMutableDictionary new]; fileIds = [fileIds stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSData *jsonData = [fileIds dataUsingEncoding:NSUTF8StringEncoding];; NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil]; HLog(@"jsonArray:%@",jsonArray) if(!jsonArray){ return; } [paraDict setValue:token forKey:@"token"]; [paraDict setValue:jsonArray forKey:@"fileIdList"]; [paraDict setValue:extractionCode forKey:@"extractionCode"]; KWeakSelf [[netWorkManager shareInstance] CommonPostCallBackCode:queryOneShareInfoFun Parameters:paraDict success:^(id _Nonnull responseObject) { queryOneShareModel*model = [[queryOneShareModel alloc] initWithDictionary:responseObject error:nil]; if(model && model.status == 0){ weakSelf.getShareStr = nil; [weakSelf gotoVCByModel:model withType:type]; } else{ } } failure:^(NSError * _Nonnull error) { }]; } #pragma mark 跳转 - (void)gotoVCByModel:(queryOneShareModel*)model withType:(NSString*)type { if([type isEqualToString:@"save"]){ [self saveFileToBoxFunBy:model]; } else if([type isEqualToString:@"download"]){ [self downloadFileToAppFunBy:model]; } } #pragma mark 保存文件到盒子 - (void)saveFileToBoxFunBy:(queryOneShareModel*)sharemodel { NSMutableDictionary*paraDict = [NSMutableDictionary new]; NSMutableArray *pathArr = [NSMutableArray new]; for (ShareFileDataModel*dataModel in sharemodel.data.fileListVOS){ [pathArr addObject:dataModel.fileUrl]; } if (pathArr) { NSString *jsonStr = [iTools toJsonStrWithArray:pathArr]; if(jsonStr){ [paraDict setValue:jsonStr forKey:@"urls"]; } } NSString * boxSaveDefaultPath = [HWDataManager getStringWithKey:stringKeyAddSn(Const_box_save_default_path)]; if(!boxSaveDefaultPath || boxSaveDefaultPath.length == 0){ boxSaveDefaultPath = Const_default_save_path; [HWDataManager setStringWithKey:stringKeyAddSn(Const_box_save_default_path) value:boxSaveDefaultPath]; } [paraDict setValue:boxSaveDefaultPath forKey:@"savePath"]; KWeakSelf [[netWorkManager shareInstance] cloudPhoneGETCallBackCode:@"downFiles" Parameters:paraDict success:^(id _Nonnull responseObject) { SuperModel *model = [[SuperModel alloc] initWithDictionary:responseObject error:nil]; if(model && model.status == 0){ [weakSelf gotoUploadFileRecordVCFunByType:2 withModel:sharemodel]; } } failure:^(NSError * _Nonnull error) { }]; } #pragma mark 下载文件到手机 - (void)downloadFileToAppFunBy:(queryOneShareModel*)sharemodel { [self gotoUploadFileRecordVCFunByType:1 withModel:sharemodel]; } #pragma mark 跳转传输列表 - (void)gotoUploadFileRecordVCFunByType:(NSInteger)type withModel:(queryOneShareModel*)sharemodel { KWeakSelf if(type == 2){ [[boxSaveFileManager shareInstance] addBoxSaveRecordFunBy:sharemodel.data.fileListVOS complete:^(BOOL isSuccess) { if(isSuccess){ mainBlock(^{ [weakSelf gotoUploadFileRecordVCFunByType:type]; }); } }]; } else if (type == 1){ [[boxDownloadFileManager shareInstance] addBoxDownloadRecordFunBy:sharemodel.data.fileListVOS complete:^(BOOL isSuccess) { if(isSuccess){ mainBlock(^{ [weakSelf gotoUploadFileRecordVCFunByType:type]; }); } }]; } } - (void)gotoUploadFileRecordVCFunByType:(NSInteger)type { uploadFileRecordViewController *vc = [uploadFileRecordViewController new]; vc.isReceiveType = type; if(_curPlayerVC){ NSArray *vcArr = _curPlayerVC.navigationController.viewControllers; UIViewController *lastVC = vcArr.lastObject; if([lastVC isKindOfClass:[PlayerViewController class]]){ [[UIApplication sharedApplication] setStatusBarHidden:NO]; } else if([lastVC isKindOfClass:[uploadFileRecordViewController class]]){ [_curPlayerVC.navigationController popViewControllerAnimated:NO]; //[[UIApplication sharedApplication] setStatusBarHidden:NO]; } [_curPlayerVC.navigationController pushViewController:vc animated:YES]; _curPlayerVC.isNeedRecyclResource = NO; } } @end