// // ProjectInfo_Server.m // UUTUtils // // Created by zhuge on 2017/12/26. // Copyright © 2017年 zhuge. All rights reserved. // #import "ProjectInfo_Server.h" #import "DataUtils.h" #import "ZGJsonUtils.h" #import "ProjectInfo_Server_AdId.h" #import "ProjectInfoSave.h" #import "AppDelegate.h" #define key_ad @"ad" #define key_ad_global @"global" #define key_ad_interstitials @"interstitials" #define key_ad_videos @"videos" #define key_ad_banners @"banners" #define key_parameters @"parameters" @implementation ProjectInfo_Server + (ProjectInfo_Server *)create:(NSString *)package { ProjectInfo_Server *server = [[ProjectInfo_Server alloc] init]; [server init:package]; return server; } - (void)init:(NSString *)package { self.package = package; self.isLoadingData = YES; self.isDataLoadFinished = NO; } - (void)initWithDic:(NSDictionary *)dicServer { // dicServer = nil; [[ProjectInfoSave share] clearAdIdIndex]; self.sdkInfo = [NSString stringWithFormat:@"当前在线参数只支持%d.*.*版本的BullgodSDK",SdkVersion]; if(SdkVersion>=5){ self.sdkBannerInfo = [NSString stringWithFormat:@"Banner必须分层!选择不自动刷新!"]; }else{ self.sdkBannerInfo = [NSString stringWithFormat:@""]; } if (dicServer == nil) { NSString* adJsonPath = [NSString stringWithFormat:@"%@/%@/%@", [DataUtils getRootPath], _package, @"ad.json"]; NSString* adJson = [NSString stringWithContentsOfFile:adJsonPath encoding:NSUTF8StringEncoding error:nil]; NSData *data = [adJson dataUsingEncoding:NSUTF8StringEncoding]; if(data == nil){ [self initForNewProject]; return; } NSMutableDictionary *md = [NSMutableDictionary dictionaryWithCapacity:0]; dicServer = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; if(dicServer == nil){ [self initForNewProject]; return; } self.loadingInfo = [NSString stringWithFormat:@"服务器无数据,使用本地数据!"]; }else{ self.loadingInfo = [NSString stringWithFormat:@"服务器数据加载成功!"]; } NSString *strParameters = dicServer[key_parameters]; NSDictionary *dicParameters = [ZGJsonUtils stringToObject:strParameters]; self.update = [[ProjectInfo_Server_GameUpdate alloc] initWithDic:dicParameters]; self.gameConfig = [[ProjectInfo_Server_GameConfig alloc] initWithDic:dicParameters]; self.sdkKeys = [[ProjectInfo_Server_SDKKeys alloc] initWithDic:dicParameters]; NSDictionary *dic = dicServer[key_ad]; self.isDataLoadFinished = YES; self.isLoadingData = NO; self.global = [ProjectInfo_Server_AdConditionGlobal create:dic[key_ad_global]]; // 初始化各种Platform NSMutableArray *maTemp = [NSMutableArray arrayWithCapacity:0]; NSArray* adPlatformArray = dic[@"ids"][@"app_ids"]; for (id object in adPlatformArray) { NSNumber *value = object[@"p"]; ProjectInfo_Server_AdPlatform* adPlatform = [ProjectInfo_Server_AdPlatform create:[value integerValue] adPlatformId:object[@"aid"]]; [maTemp addObject:adPlatform]; } self.xibAdPlatformArray = [NSMutableArray arrayWithArray:maTemp]; // 初始化各种adId maTemp = [NSMutableArray arrayWithCapacity:0]; NSArray* adIdArray = dic[@"ids"][@"sdk_ids"]; for (id object in adIdArray) { NSNumber* value = object[@"t"]; ProjectInfo_Server_AdId* adId = [ProjectInfo_Server_AdId create:[value integerValue] adId:object[@"id"] index:object[@"k"] worthMul:object[@"wm"]]; [maTemp addObject:adId]; } self.xibAdIdArray = [NSMutableArray arrayWithArray:maTemp]; // 初始化各种page self.maPageArr = [NSMutableArray arrayWithCapacity:0]; self.maPageArr = [@[[ProjectInfo_Server_AdConfigPageArray create:dic[key_ad_interstitials] title:key_ad_interstitials], [ProjectInfo_Server_AdConfigPageArray create:dic[key_ad_videos] title:key_ad_videos], [ProjectInfo_Server_AdConfigPageArray create:dic[key_ad_banners] title:key_ad_banners]] mutableCopy]; // self.xibAdPlatformArray = [NSMutableArray arrayWithObjects:[ProjectInfo_Server_AdPlatform create:@"新增类型" adPlatformId:@"0"], nil]; } - (id)initForNewProject { self.loadingInfo = [NSString stringWithFormat:@"服务器和本地无数据!"]; self.update = [[ProjectInfo_Server_GameUpdate alloc] init]; self.gameConfig = [[ProjectInfo_Server_GameConfig alloc] init]; self.sdkKeys = [[ProjectInfo_Server_SDKKeys alloc] init]; self.global = [[ProjectInfo_Server_AdConditionGlobal alloc] init]; self.isDataLoadFinished = YES; self.isLoadingData = NO; self.maPageArr = [@[[ProjectInfo_Server_AdConfigPageArray create:@{} title:key_ad_interstitials], [ProjectInfo_Server_AdConfigPageArray create:@{} title:key_ad_videos], [ProjectInfo_Server_AdConfigPageArray create:@{} title:key_ad_banners]] mutableCopy]; // 初始化各种Platform self.xibAdPlatformArray = [NSMutableArray arrayWithCapacity:0]; // 初始化各种adId self.xibAdIdArray = [NSMutableArray arrayWithCapacity:0]; // self.xibAdPlatformArray = [NSMutableArray arrayWithObjects:[ProjectInfo_Server_AdPlatform create:@"新增类型" adPlatformId:@"0"], nil]; return self; } - (NSDictionary *)jsonDic { [[ProjectInfoSave share] clearAdIdIndex]; NSMutableDictionary *mdParameters = [NSMutableDictionary dictionaryWithCapacity:0]; NSDictionary *updateDic = [self.update jsonDic]; [mdParameters addEntriesFromDictionary:updateDic]; if(updateDic == nil){ return nil; } [mdParameters addEntriesFromDictionary:[self.gameConfig jsonDic]]; [mdParameters addEntriesFromDictionary:[self.sdkKeys jsonDic]]; //全局配置 NSMutableDictionary *mdAd = [NSMutableDictionary dictionaryWithCapacity:0]; mdAd[key_ad_global] = [self.global jsonDic]; if(mdAd[key_ad_global] == nil){ return nil; } NSMutableDictionary *idsDictionary = [NSMutableDictionary dictionaryWithCapacity:0]; NSMutableArray* appIdsArray = [[NSMutableArray alloc] init]; //Platform for (ProjectInfo_Server_AdPlatform* adPlatform in _xibAdPlatformArray ) { [appIdsArray addObject: [adPlatform jsonDic]]; } idsDictionary[@"app_ids"] = appIdsArray; //adId NSMutableArray* sdkIdsArray = [[NSMutableArray alloc] init]; for (ProjectInfo_Server_AdId* adId in _xibAdIdArray ) { [sdkIdsArray addObject: [adId jsonDic]]; } idsDictionary[@"sdk_ids"] = sdkIdsArray; mdAd[@"ids"] = idsDictionary; //版位 for (ProjectInfo_Server_AdConfigPageArray *arr in self.maPageArr) { NSDictionary *dic = [arr jsonDic]; if(dic == nil){ return nil; } mdAd[arr.title] = dic; } NSDictionary *md = @{ key_parameters: [ZGJsonUtils dictionaryToString:mdParameters], key_ad : mdAd, }; NSLog(@"%@", md); return md; } @end