// // RQCommonManager.m // SDJK // // Created by 张嵘 on 2021/8/19. // #import "RQCommonManager.h" static NSString * const RQQuestionCarTypeKey = @"RQQuestionCarTypeKey"; @interface RQCommonManager () @end @implementation RQCommonManager @def_singleton(RQCommonManager); - (void)saveObjectWithObject:(id)object ForKey:(NSString* )key { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; if (!object) { [ud removeObjectForKey:key]; }else{ [ud setObject:object forKey:key]; } [ud synchronize]; } - (id)getObjectWithKey:(NSString *)key { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; return [ud objectForKey:key]; } - (void)setCarType:(RQHomePageCarType)carType { NSString *carTypeStr = [NSString stringWithFormat:@"%@",[NSNumber numberWithInteger:carType]]; [[NSUserDefaults standardUserDefaults] setObject:carTypeStr forKey:RQQuestionCarTypeKey]; [[NSUserDefaults standardUserDefaults] synchronize]; } - (RQHomePageCarType)carType { NSString *carTypeStr = [[NSUserDefaults standardUserDefaults] objectForKey:RQQuestionCarTypeKey]; carTypeStr = [carTypeStr rq_stringValueExtension]; return carTypeStr.integerValue; } - (void)setHistoryEmailStr:(NSString *)historyEmailStr { NSString *key = [NSString stringWithFormat:@"RQHistoryEmailStrKey-%@",RQ_USER_MANAGER.currentUserId]; [[NSUserDefaults standardUserDefaults] setObject:historyEmailStr forKey:key]; [[NSUserDefaults standardUserDefaults] synchronize]; } - (NSString *)historyEmailStr { NSString *key = [NSString stringWithFormat:@"RQHistoryEmailStrKey-%@",RQ_USER_MANAGER.currentUserId]; NSString *historyEmailStr = [[NSUserDefaults standardUserDefaults] objectForKey:key]; historyEmailStr = [historyEmailStr rq_stringValueExtension]; return historyEmailStr; } - (NSString *)carTypeStr { return [self getCarTypeStrWithCarType:self.carType]; } - (NSString *)subjectStr { return [self getSubjectTypeStrWithSubjectType:self.subject]; } - (NSString *)getCarTypeStrWithCarType:(RQHomePageCarType)carType { switch (carType) { case RQHomePageCarType_Car: return @"小车"; case RQHomePageCarType_Bus: return @"客车"; case RQHomePageCarType_Truck: return @"货车"; case RQHomePageCarType_Motorcycle: return @"摩托车"; default: return @""; } } - (NSString *)getCarTypeEnStrWithCarType:(RQHomePageCarType)carType { switch (carType) { case RQHomePageCarType_Car: return @"liceCar"; case RQHomePageCarType_Bus: return @"liceBus"; case RQHomePageCarType_Truck: return @"liceTruck"; case RQHomePageCarType_Motorcycle: return @"liceMoto"; default: return @"liceCar"; } } - (NSString *)getCarTypeSimpleCNStrWithCarType:(RQHomePageCarType)carType { switch (carType) { case RQHomePageCarType_Car: return @"xc"; case RQHomePageCarType_Bus: return @"kc"; case RQHomePageCarType_Truck: return @"hc"; case RQHomePageCarType_Motorcycle: return @"mtc"; default: return @"xc"; } } - (NSString *)getCarTypeSimpleCNStrWithCarTypeNew:(RQHomePageCarType)carType { switch (carType) { case RQHomePageCarType_Car: return @"cart"; case RQHomePageCarType_Bus: return @"bus"; case RQHomePageCarType_Truck: return @"truck"; case RQHomePageCarType_Motorcycle: return @"mtc"; default: return @"xc"; } } - (NSString *)getSubjectTypeStrWithSubjectType:(RQHomePageSubjectType)subjecType { if (subjecType == RQHomePageSubjectType_SubjectOne) { return @"科目一"; } else if (subjecType == RQHomePageSubjectType_SubjectFour) { return @"科目四"; } else { return @"科目一"; } } - (NSString *)getSubjectTypeNumStrWithSubjectType:(RQHomePageSubjectType)subjecType { if (subjecType == RQHomePageSubjectType_SubjectOne) { return @"1"; } else if (subjecType == RQHomePageSubjectType_SubjectFour) { return @"4"; } else { return @"1"; } } - (NSString *)getMiExamTypeNumStrWithMiExamType:(RQMiExamType)miExamType { if (miExamType == RQMiExamType_One) { return @"3"; } else if (miExamType == RQMiExamType_Two) { return @"4"; } else { return @"3"; } } //- (void)checkVersionWithComplete:(VoidBlock_Bool)complete { // /// 1: open 2: close // [[RQ_HTTP_Service getConfigKeyWithPath:RQButtonSwitchOriginalPath] subscribeNext:^(NSString *isOpenStr) { // if ([isOpenStr isEqualToString:@"1"]) { // if (RQ_USER_MANAGER.isLogin) { // complete(RQ_USER_MANAGER.currentUser.appleUserInfo); // } else { // complete(YES); // } // } else { // complete(NO); // } // } error:^(NSError * _Nullable error) { // complete(NO); // }]; //} - (void)checkVersionWithComplete:(VoidBlock_Bool)complete { NSInteger localVersion = [[RQ_APP_VERSION stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue]; [[RQ_HTTP_Service getConfigKeyWithPath:RQOnlineVersionPath] subscribeNext:^(NSString *customOnlineVersionStr) { NSInteger customOnlineVersion = [[customOnlineVersionStr stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue]; /// 本地版本大于等于内部版本(审核的时候内部版本一定大于等于本地版本) if (localVersion >= customOnlineVersion) { complete(YES); } else { complete(NO); } } error:^(NSError * _Nullable error) { [self getAppStoreVersionWithComplete:^(NSInteger onlineVersion) { if (onlineVersion != 0) { /// 本地版本大于线上版本(审核的时候本地版本一定大于线上版本) if (localVersion > onlineVersion) { complete(YES); } else { complete(NO); } } else { complete(NO); } }]; }]; } - (void)getAppStoreVersionWithComplete:(VoidBlock_integer)complete { NSString *URL = @"http://itunes.apple.com/cn/lookup?id=1586064774"; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; [request setHTTPMethod:@"POST"]; NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { dispatch_async_on_main_queue(^{ //这个导致部分手机网络不好时候出现闪退情况 if (!data) { complete(0); return; } //如果data等于nil的时候 再去解析 会发生崩溃 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; if (!dic) { complete(0); return; } NSArray *infoArray = [dic objectForKey:@"results"]; if ([infoArray count]) { NSDictionary *releaseInfo = [infoArray objectAtIndex:0]; NSString *netVersion = [releaseInfo objectForKey:@"version"]; // 线上版本号 NSInteger netInt = [[netVersion stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue]; complete(netInt); } else { complete(0); } }); }]; [task resume]; } - (void)checkAppStoreVersionWithComplete:(VoidBlock_Bool)complete { NSString *URL = @"http://itunes.apple.com/cn/lookup?id=1586064774"; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:URL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; [request setHTTPMethod:@"POST"]; NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { dispatch_async_on_main_queue(^{ //这个导致部分手机网络不好时候出现闪退情况 if (!data) { complete(NO); return; } //如果data等于nil的时候 再去解析 会发生崩溃 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; if (!dic) { complete(NO); return; } NSArray *infoArray = [dic objectForKey:@"results"]; if ([infoArray count]) { NSDictionary *releaseInfo = [infoArray objectAtIndex:0]; NSString *netVersion = [releaseInfo objectForKey:@"version"]; //NSLog(@"AppStore-->%@,手机上-->%@",lastVersion,currentVersion); // 线上版本号 NSInteger netInt = [[netVersion stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue]; // 本地版本号 NSInteger localInt = [[RQ_APP_VERSION stringByReplacingOccurrencesOfString:@"." withString:@""] integerValue]; if (netInt > localInt) { NSLog(@"更新"); complete(YES); }else{ //已是最新版 NSLog(@"不更"); complete(NO); } } else { [MBProgressHUD rq_showTips:@"暂无新版本信息"]; complete(NO); } }); }]; [task resume]; } #pragma mark - 下载文件 /// http://jadinec-test.oss-accelerate.aliyuncs.com/excelFile/a5f23e130d5e4dd7adda942c45207927.pdf - (void)downLoadWithFilePath:(NSString *)filePath { float version = [[[UIDevice currentDevice] systemVersion] floatValue]; if (version >= 11) { } else { [MBProgressHUD rq_showTips:@"下载文件要求手机系统版本在11.0以上"]; return; } /** /// 保存网络文件到沙盒一 NSURLRequest *req = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:filePath]]; NSData *fileData = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil]; NSString *temp = NSTemporaryDirectory(); NSFileManager *fm = [NSFileManager defaultManager]; NSString *fullPath = [self getNativeFilePath:[filePath componentsSeparatedByString:@"/"].lastObject]; BOOL downResult = [fm createFileAtPath:fullPath contents:fileData attributes:nil]; */ /// 保存网络文件到沙盒二 NSData *fileData = [NSData dataWithContentsOfURL:[NSURL URLWithString:filePath]]; // NSString *fullPath = [self getNativeFilePath:[filePath componentsSeparatedByString:@"/"].lastObject]; NSString *fullPath = [self getNativeFilePath:[[filePath componentsSeparatedByString:@"/"].lastObject rq_URLDecoding]]; BOOL downResult = [fileData writeToFile:fullPath atomically:YES]; if (downResult) { UIDocumentPickerViewController *documentPickerVC = [[UIDocumentPickerViewController alloc] initWithURL:[NSURL fileURLWithPath:fullPath] inMode:UIDocumentPickerModeExportToService]; // 设置代理 documentPickerVC.delegate = self; // 设置模态弹出方式 documentPickerVC.modalPresentationStyle = UIModalPresentationFormSheet; [RQ_APPDELEGATE.navigationControllerStack.topNavigationController presentViewController:documentPickerVC animated:YES completion:nil]; } } // 获得文件沙盒地址 - (NSString *)getNativeFilePath:(NSString *)fileName { NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSString *munu = [NSString stringWithFormat:@"%@/%@",@"downLoad",fileName]; NSString *filePath = [path stringByAppendingPathComponent:munu]; // 判断是否存在,不存在则创建 NSFileManager *fileManager = [NSFileManager defaultManager]; // fileExistsAtPath 判断一个文件或目录是否有效,isDirectory判断是否一个目录 BOOL isDir = NO; NSMutableArray *theArr = [[filePath componentsSeparatedByString:@"/"] mutableCopy]; [theArr removeLastObject]; NSString *thePath = [theArr componentsJoinedByString:@"/"]; BOOL existed = [fileManager fileExistsAtPath:thePath isDirectory:&isDir]; if ( !(isDir == YES && existed == YES) ) { // 如果文件夹不存在 [fileManager createDirectoryAtPath:thePath withIntermediateDirectories:YES attributes:nil error:nil]; } return filePath; } #pragma mark - UIDocumentPickerDelegate - (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls { // 获取授权 BOOL fileUrlAuthozied = [urls.firstObject startAccessingSecurityScopedResource]; if (fileUrlAuthozied) { // 通过文件协调工具来得到新的文件地址,以此得到文件保护功能 NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] init]; NSError *error; [fileCoordinator coordinateReadingItemAtURL:urls.firstObject options:0 error:&error byAccessor:^(NSURL *newURL) { // 读取文件 NSString *fileName = [newURL lastPathComponent]; NSError *error = nil; //NSData *fileData = [NSData dataWithContentsOfURL:newURL options:NSDataReadingMappedIfSafe error:&error]; if (error) { // 读取出错 } else { // 上传 NSLog(@"fileName : %@", fileName); } }]; [urls.firstObject stopAccessingSecurityScopedResource]; } else { // 授权失败 } } - (BOOL)SDJK_APP_ICON_NEED_CHANGE { id object = [self getObjectWithKey:@"SDJK_APP_ICON_NEED_CHANGE"]; if (RQObjectIsNil(object)) { return NO; } else { BOOL SDJK_APP_ICON_NEED_CHANGE = [object boolValue]; return SDJK_APP_ICON_NEED_CHANGE; } } - (void)setSDJK_APP_ICON_NEED_CHANGE:(BOOL)SDJK_APP_ICON_NEED_CHANGE { [self saveObjectWithObject:[NSNumber numberWithInteger:SDJK_APP_ICON_NEED_CHANGE] ForKey:@"SDJK_APP_ICON_NEED_CHANGE"]; } @end