| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- //
- // TIMenuPlistManager.m
- // TiSDKDemo
- //
- // Created by iMacA1002 on 2019/12/3.
- // Copyright © 2020 Tillusory Tech. All rights reserved.
- //
- #import "TIMenuPlistManager.h"
- #import "TIUITool.h"
- #import "TISetSDKParameters.h"
- @interface TIMenuPlistManager ()
-
- @end
- static TIMenuPlistManager *shareManager = NULL;
- static dispatch_once_t token;
- @implementation TIMenuPlistManager
- // MARK: --单例初始化方法--
- + (TIMenuPlistManager *)shareManager {
- dispatch_once(&token, ^{
- shareManager = [[TIMenuPlistManager alloc] init];
- });
- return shareManager;
- }
- +(void)releaseShareManager{
- token = 0; // 只有置成0,GCD才会认为它从未执行过.它默认为0.这样才能保证下次再次调用shareInstance的时候,再次创建对象.
- // [shareManager release];
- shareManager = nil;
- }
- - (instancetype)init
- {
- self = [super init];
- if (self) {
-
- [self getResourceFromJsonName:@"sticker"];
- [self getResourceFromJsonName:@"gift"]; //网络下载
- [self getResourceFromJsonName:@"watermark"];
- [self getResourceFromJsonName:@"mask"];
- [self getResourceFromJsonName:@"greenscreen"];
- // self.mainModeArr = [TIMenuPlistManager initJsonModeForPath:@"TIMenu"];
- //
- // self.meiyanModeArr = [TIMenuPlistManager initJsonModeForPath:@"TIMeiYanMenu"];
- //
- // self.meixingModeArr = [TIMenuPlistManager initJsonModeForPath:@"TIMeiXingMenu"];
- //
- // self.lvjingModeArr = [TIMenuPlistManager initJsonModeForPath:@"TILvJingMenu"];
- //
- // self.doudongModeArr = [TIMenuPlistManager initJsonModeForPath:@"TIDouDongMenu"];
- //
- // self.hahajingModeArr = [TIMenuPlistManager initJsonModeForPath:@"TIHaHaJingMenu"];
- //
- // self.tiezhiModeArr = [TIMenuPlistManager initJsonModeForPath:@"stickers"];
- //
- // self.liwuModeArr = [TIMenuPlistManager initJsonModeForPath:@"gifts"];
- //
- // self.shuiyinModeArr = [TIMenuPlistManager initJsonModeForPath:@"watermarks"];
- //
- // self.mianjuModeArr = [TIMenuPlistManager initJsonModeForPath:@"masks"];
-
- self.mainModeArr = [self jsonModeForPath:@"TIMenu"];
-
- self.meiyanModeArr = [self jsonModeForPath:@"TIMeiYanMenu"];
-
- self.meixingModeArr = [self jsonModeForPath:@"TIMeiXingMenu"];
-
- self.lvjingModeArr = [self jsonModeForPath:@"TILvJingMenu"];
-
- self.doudongModeArr = [self jsonModeForPath:@"TIDouDongMenu"];
-
- self.hahajingModeArr = [self jsonModeForPath:@"TIHaHaJingMenu"];
-
- self.tiezhiModeArr = [self jsonModeForPath:@"stickers"];
-
- self.liwuModeArr = [self jsonModeForPath:@"gifts"];
-
- self.shuiyinModeArr = [self jsonModeForPath:@"watermarks"];
-
- self.mianjuModeArr = [self jsonModeForPath:@"masks"];
-
- self.lvmuModeArr = [self jsonModeForPath:@"greenscreens"];
-
-
- [TISetSDKParameters initSDK];
-
- }
- return self;
- }
- -(NSArray *)jsonModeForPath:(NSString *)path
- {
- NSMutableDictionary *plistDictionary;
- //获取配置文件
- NSString *plistPath = [[NSBundle mainBundle] pathForResource:path ofType:@"json"];
-
- NSString *filePatch = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.json",path]];
-
- NSFileManager *fileManager = [NSFileManager defaultManager];
- // if ([fileManager fileExistsAtPath:filePatch])
- // {
- // NSLog(ASLocalizedString(@"沙盒中存在 %@"),path);
- // plistDictionary = [TIUITool getJsonDataForPath:filePatch];
- // }
- // else
- // {
- // NSLog(ASLocalizedString(@"沙盒中不存在 %@"),path);
- //// 每次启动默认加载本地配置
- plistDictionary = [TIUITool getJsonDataForPath:plistPath];
- [TIUITool setWriteJsonDic:plistDictionary toPath:filePatch];
- // }
- NSArray *plstArr = [plistDictionary objectForKey:@"menu"];
- NSMutableArray *modeArr = [NSMutableArray arrayWithCapacity:plstArr.count];
- for (NSDictionary *dic in plstArr) {
-
- TIMenuMode *mode = [TIMenuMode applicationWithDic:dic];
-
- if ([path isEqualToString:@"stickers"]||[path isEqualToString:@"gifts"]||[path isEqualToString:@"watermarks"]||[path isEqualToString:@"masks"]||[path isEqualToString:@"greenscreens"]) {
-
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *folderName = [defaults objectForKey:[NSString stringWithFormat:@"%@%ld",mode.name,(long)mode.menuTag]];
- [defaults synchronize];
- if (folderName&&folderName.length!=0) {
- NSString *folderPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",folderName]];
- if ([fileManager fileExistsAtPath:folderPath])
- {
- mode.downloaded = TI_DOWNLOAD_STATE_CCOMPLET;
- [self modifyObject:@(TI_DOWNLOAD_STATE_CCOMPLET) forKey:@"downloaded" In:mode.menuTag WithPath:[NSString stringWithFormat:@"%@.json",path]];
- }
- }
- }
-
-
- [modeArr addObject:mode];
- }
-
- return modeArr;
- }
- -(NSArray *)modifyObject:(id)obj forKey:(NSString *)key In:(NSUInteger)index WithPath:(NSString *)path{
-
- NSString *filePatch = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",path]];
-
- NSMutableDictionary *plistDictionary = [TIUITool getJsonDataForPath:filePatch];
- // //修改字典里面的内容,先按照结构取到你想修改内容的小字典
- NSMutableArray *nmArr = [NSMutableArray arrayWithArray:[plistDictionary objectForKey:@"menu"]];
- NSMutableDictionary *nmDic = [NSMutableDictionary dictionaryWithDictionary:nmArr[index]];
- [nmDic setObject:obj forKey:key];
-
- //修改完成组建成大字典写入本地
- [nmArr setObject:nmDic atIndexedSubscript:index];
- [plistDictionary setValue:nmArr forKey:@"menu"];
- [TIUITool setWriteJsonDic:plistDictionary toPath:filePatch];
-
- //修改mode数组
- NSMutableArray *modeArr;
- if([@"TIMenu.json" rangeOfString:path].location !=NSNotFound)//_roaldSearchText
- {
- modeArr = [NSMutableArray arrayWithArray:self.mainModeArr];
- }
- else if([@"TIMeiYanMenu.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.meiyanModeArr];
- }
- else if([@"TIMeiXingMenu.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.meixingModeArr];
- }
- else if([@"TILvJingMenu.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.lvjingModeArr];
- }
- else if([@"TIDouDongMenu.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.doudongModeArr];
- }
- else if([@"TIHaHaJingMenu.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.hahajingModeArr];
- }
- else if([@"stickers.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.tiezhiModeArr];
- }
- else if([@"gifts.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.liwuModeArr];
- }
- else if([@"watermarks.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.shuiyinModeArr];
- }
- else if([@"masks.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.mianjuModeArr];
- }
- else if([@"greenscreens.json" rangeOfString:path].location !=NSNotFound)
- {
- modeArr = [NSMutableArray arrayWithArray:self.lvmuModeArr];
- }
-
- if (modeArr.count) {
-
- TIMenuMode *dome = [TIMenuMode applicationWithDic:nmDic];
- [modeArr setObject:dome atIndexedSubscript:index];
-
- }
-
- return modeArr;
- }
- -(void)getResourceFromJsonName:(NSString *)name{
- NSString *stickerPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:name];
- if (![[NSFileManager defaultManager] fileExistsAtPath:stickerPath]) {
- [[NSFileManager defaultManager] createDirectoryAtPath:stickerPath withIntermediateDirectories:NO attributes:nil error:nil];
- }
-
-
- NSString *bundleJson = @"";
-
- if ([name isEqualToString:@"sticker"])
- {
- bundleJson = @"stickers.json";
- }
- else if([name isEqualToString:@"gift"])
- {
- bundleJson = @"gifts.json";
- }
- else if ([name isEqualToString:@"watermark"])
- {
- bundleJson = @"watermarks.json";
- }
- else if([name isEqualToString:@"mask"])
- {
- bundleJson = @"masks.json";
- }
- else if([name isEqualToString:@"greenscreen"])
- {
- bundleJson = @"greenscreens.json";
- }
-
- NSString *configPath = [[NSBundle mainBundle].bundlePath stringByAppendingPathComponent:bundleJson];
- if (![[NSFileManager defaultManager] fileExistsAtPath:configPath isDirectory:NULL]) {
- NSLog(@"The general configuration file for the json in the resource directory does not exist");
- return ;
- }
- NSError *error = nil;
- NSData *data = [NSData dataWithContentsOfFile:configPath];
- NSDictionary *oldDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
- if (!oldDict || error) {
- NSLog(@"Resource directory under the general configuration file to read the jsonS failed:%@",error);
- return ;
- }
-
-
- //拷贝本地贴纸到沙盒
- NSString *localPath =
- [[[NSBundle mainBundle] pathForResource:@"TiSDKResource" ofType:@"bundle"] stringByAppendingPathComponent:name];
- NSArray *dirArr = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:localPath error:NULL];
- for (NSString *stickerName in dirArr) {
-
- if (![[NSFileManager defaultManager] fileExistsAtPath:[stickerPath stringByAppendingPathComponent:stickerName]]) {
- //判断bundle中是否含有json文件 如果有 将json文件赋值给UITool 配置json文件
- if ([stickerName containsString:@".json"]) {
-
- NSLog(@"bundle.json-----%@",stickerName);
-
-
- }
- [[NSFileManager defaultManager] copyItemAtPath:[localPath stringByAppendingPathComponent:stickerName] toPath:[stickerPath stringByAppendingPathComponent:stickerName] error:NULL];
- }
- //修改配置文件json
- }
- }
- @end
- @implementation TIMenuMode
- - (instancetype)initWithDic:(NSDictionary *)dic
- {
- if (self = [super init]) {
- // KVC
- [self setValuesForKeysWithDictionary:dic];
- }
- return self;
- }
- +(instancetype)applicationWithDic:(NSDictionary*)dic
- {
- TIMenuMode * mode = [[TIMenuMode alloc] initWithDic:dic];
- return mode;
- }
-
- @end
-
|