316 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			316 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
| #import "AmazonManager.h"
 | |
| 
 | |
| static NSString * const SKADNETWORK_PARAM = @"skadn_params";
 | |
| 
 | |
| @implementation AmazonManager
 | |
| 
 | |
| #pragma mark NSObject
 | |
| 
 | |
| + (AmazonManager*)sharedManager
 | |
| {
 | |
|     static AmazonManager* sharedManager = nil;
 | |
| 
 | |
|     if (!sharedManager)
 | |
|         sharedManager = [[AmazonManager alloc] init];
 | |
| 
 | |
|     return sharedManager;
 | |
| }
 | |
| 
 | |
| - (void)initialize:(NSString*)keywords
 | |
| {
 | |
|     [[DTBAds sharedInstance] setAppKey: keywords];
 | |
| }
 | |
| 
 | |
| - (BOOL)isInitialized
 | |
| {
 | |
|     return [[DTBAds sharedInstance] isReady];
 | |
| }
 | |
| 
 | |
| - (void)setUseGeoLocation:(bool)flag
 | |
| {
 | |
|     [[DTBAds sharedInstance] setUseGeoLocation:flag];
 | |
| }
 | |
| 
 | |
| - (BOOL)getUseGeoLocation
 | |
| {
 | |
|     return [[DTBAds sharedInstance] useGeoLocation];
 | |
| }
 | |
| 
 | |
| - (void)setLogLevel:(int)logLevel
 | |
| {
 | |
|     DTBLogLevel level = (DTBLogLevel) logLevel;
 | |
|     [[DTBAds sharedInstance] setLogLevel:level];
 | |
| }
 | |
| 
 | |
| - (int)getLogLevel
 | |
| {
 | |
|     return 0;
 | |
| }
 | |
| 
 | |
| - (void)setTestMode:(bool)flag
 | |
| {
 | |
|     [[DTBAds sharedInstance] setTestMode:flag];
 | |
| }
 | |
| 
 | |
| - (BOOL)isTestModeEnabled
 | |
| {
 | |
|     return [[DTBAds sharedInstance] testMode];
 | |
| }
 | |
| 
 | |
| - (DTBAdSize*)createBannerAdSize:(int)width height:(int)height uuid:(NSString*)uuid{
 | |
|     return [[DTBAdSize alloc] initBannerAdSizeWithWidth:width height:height andSlotUUID:uuid];
 | |
| }
 | |
| 
 | |
| - (DTBAdSize*)createVideoAdSize:(int)width height:(int)height uuid:(NSString*)uuid{
 | |
|     return [[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth:width height: height andSlotUUID: uuid];;
 | |
| }
 | |
| 
 | |
| - (DTBAdSize*)createInterstitialAdSize:(NSString*)uuid{
 | |
|     return [[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID:uuid];
 | |
| }
 | |
| 
 | |
| - (DTBAdLoader*)createAdLoader{
 | |
|     return [DTBAdLoader new];
 | |
| }
 | |
| 
 | |
| - (void)setSizes:(DTBAdLoader*)adLoader size:(DTBAdSize*)size{
 | |
|     [adLoader setSizes:size, nil];
 | |
| }
 | |
| 
 | |
| - (void)loadAd:(DTBAdLoader*)adLoader callback:(AmazonUnityCallback*)callback{
 | |
|     [adLoader loadAd:callback];
 | |
| }
 | |
| 
 | |
| - (void)loadSmartBanner:(DTBAdLoader*)adLoader callback:(AmazonUnityCallback*)callback{
 | |
|     [adLoader loadSmartBanner:callback];
 | |
| }
 | |
| 
 | |
| - (void)setMRAIDPolicy:(DTBMRAIDPolicy)policy
 | |
| {
 | |
|     [DTBAds sharedInstance].mraidPolicy = policy;
 | |
| }
 | |
| 
 | |
| - (int) getMRAIDPolicy{
 | |
|     return [DTBAds sharedInstance].mraidPolicy;
 | |
| }
 | |
| 
 | |
| - (void)setMRAIDSupportedVersions:(NSString* _Nullable)versions
 | |
| {
 | |
|     [DTBAds sharedInstance].mraidCustomVersions = nil;
 | |
| }
 | |
| 
 | |
| 
 | |
| - (NSString *)jsonFromDict:(NSDictionary *)dict {
 | |
|     NSError *error;
 | |
|     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
 | |
|                                                        options:0
 | |
|                                                          error:&error];
 | |
|     if (!jsonData) {
 | |
|         NSLog(@"Error converting JSON from VCS response dict: %@", error);
 | |
|         return @"";
 | |
|     } else {
 | |
|         return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (AmazonUnityCallback*)createCallback{
 | |
|     AmazonUnityCallback* newCallback = [[AmazonUnityCallback alloc] init];
 | |
|     return newCallback;
 | |
| }
 | |
| 
 | |
| - (DTBBannerDelegate*)createBannerDelegate{
 | |
|     return [[DTBBannerDelegate alloc] init];
 | |
| }
 | |
| 
 | |
| - (DTBInterstitialDelegate*)createInterstitialDelegate{
 | |
|     return [[DTBInterstitialDelegate alloc] init];
 | |
| }
 | |
| 
 | |
| - (void)createFetchManager:(DTBAdLoader*)adLoader isSmartBanner:(BOOL)isSmartBanner{
 | |
|     NSError *error = [DTBFetchFactory.sharedInstance createFetchManagerForLoader:adLoader isSmartBanner:isSmartBanner];
 | |
|     if(error == nil){
 | |
|         NSLog(@"FetchManager created");
 | |
|     } else {
 | |
|         NSLog(@"failed with error = %@", [error localizedDescription]);
 | |
|     }
 | |
| }
 | |
| 
 | |
| - (DTBFetchManager*)getFetchManager:(int)slotType isSmartBanner:(BOOL)isSmartBanner{
 | |
|     if( !isSmartBanner ){
 | |
|         return [[DTBFetchFactory sharedInstance] fetchManagerBySlotType:(DTBSlotType)slotType];
 | |
|     }else {
 | |
|         return [[DTBFetchFactory sharedInstance] fetchManagerBySlotType:SLOT_SMART];
 | |
|     }
 | |
| }
 | |
| 
 | |
| -(void)fetchManagerPop:(DTBFetchManager*)fetchManager{
 | |
|     [fetchManager pop];
 | |
| }
 | |
|  
 | |
| -(void)putCustomTarget:(DTBAdLoader*)adLoader key:(NSString*)key value:(NSString*)value{
 | |
|     [adLoader putCustomTarget:value withKey:key];
 | |
| }
 | |
| 
 | |
| -(void)startFetchManager:(DTBFetchManager*)fetchManager{
 | |
|     [fetchManager start];
 | |
| }
 | |
| 
 | |
| -(void)stopFetchManager:(DTBFetchManager*)fetchManager{
 | |
|     [fetchManager stop];
 | |
| }
 | |
| 
 | |
| -(BOOL)isEmptyFetchManager:(DTBFetchManager*)fetchManager{
 | |
|     return [fetchManager isEmpty];
 | |
| }
 | |
| 
 | |
| -(void)destroyFetchManager:(int)slotType{
 | |
|     [[DTBFetchFactory sharedInstance] removeFetchManagerForSlotType:(DTBSlotType)slotType];
 | |
| }
 | |
| 
 | |
| -(void)setSlotGroup:(DTBAdLoader*)adLoader  slotGtoupName:(NSString*)slotGtoupName{
 | |
|     [adLoader setSlotGroup:slotGtoupName];
 | |
| }
 | |
| 
 | |
| -(DTBSlotGroup*)createSlotGroup:(NSString*)slotGroupName{
 | |
|      DTBSlotGroup *group = [[DTBSlotGroup alloc] initWithName:slotGroupName];
 | |
|     return group;
 | |
| }
 | |
| 
 | |
| -(void)addSlot:(DTBSlotGroup*)slot size:(DTBAdSize*)size{
 | |
|     [slot addSize:size];
 | |
| }
 | |
| 
 | |
| -(void)addSlotGroup:(DTBSlotGroup*)group{
 | |
|     [DTBAds.sharedInstance addSlotGroup:group];
 | |
| }
 | |
| 
 | |
| 
 | |
| -(NSString*)fetchAmznSlots:(DTBAdResponse *)response {
 | |
|     return [response amznSlots];
 | |
| }
 | |
| 
 | |
| -(int)fetchAdWidth:(DTBAdResponse *)response {
 | |
|     DTBAdSize *adSize = [response adSize];
 | |
|     return adSize.width;
 | |
| }
 | |
| 
 | |
| -(int)fetchAdHeight:(DTBAdResponse *)response {
 | |
|     DTBAdSize *adSize = [response adSize];
 | |
|     return adSize.height;
 | |
| }
 | |
| 
 | |
| -(NSString*)fetchMediationHints:(DTBAdResponse*)response isSmart:(BOOL)isSmart{
 | |
|     NSError * err;
 | |
|     NSDictionary * hint = [response mediationHints:isSmart];
 | |
|     NSMutableDictionary *mHint = [hint mutableCopy];
 | |
|     NSDate* myDate = mHint[@"load_start"];
 | |
|     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 | |
|     [dateFormatter setDateFormat:@"dd-MM-yyyy"];
 | |
|     NSString *stringDate = [dateFormatter stringFromDate:myDate];
 | |
|     [mHint setValue:stringDate forKey:@"load_start"];
 | |
|     
 | |
|     if (mHint[SKADNETWORK_PARAM]) {
 | |
|         @try {
 | |
|             NSMutableDictionary *skadn_dict = [[NSMutableDictionary alloc] initWithDictionary:[mHint objectForKey:SKADNETWORK_PARAM]];
 | |
|             for(id key in skadn_dict) {
 | |
|                 if ([[skadn_dict objectForKey:key] isKindOfClass:NSDate.class]) {
 | |
|                     NSString *FormatedDate = [dateFormatter stringFromDate:[skadn_dict objectForKey:key]];
 | |
|                     [skadn_dict setValue:FormatedDate forKey:key];
 | |
|                     [mHint setValue:skadn_dict forKey:SKADNETWORK_PARAM ];
 | |
|                 }
 | |
|             }
 | |
|         } @catch (NSException *exception) {
 | |
|             NSLog(@"Exception :%@",exception.reason);
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     if (![NSJSONSerialization isValidJSONObject:mHint]) {
 | |
|             NSLog(@"Invalid JSON Object");
 | |
|             return nil;
 | |
|         }
 | |
|     
 | |
|     NSData * jsonData = [NSJSONSerialization  dataWithJSONObject:mHint options:0 error:&err];
 | |
|     NSString * mediationHints = [[NSString alloc] initWithData:jsonData   encoding:NSUTF8StringEncoding];
 | |
|     return mediationHints;
 | |
| }
 | |
| 
 | |
| -(void)setCMPFlavor:(DTBCMPFlavor)cFlavor {
 | |
|     [DTBAds.sharedInstance setCmpFlavor:cFlavor];
 | |
| }
 | |
| 
 | |
| -(void)setConsentStatus:(DTBConsentStatus)consentStatus{
 | |
|     [DTBAds.sharedInstance setConsentStatus:consentStatus];
 | |
| }
 | |
| 
 | |
| -(NSMutableArray*)createArray{
 | |
|     return [[NSMutableArray alloc] init];
 | |
| }
 | |
| 
 | |
| -(void)addToArray:(NSMutableArray*)dictionary item:(int)item{
 | |
|     NSNumber* num = [NSNumber numberWithInt:item];
 | |
|     [dictionary addObject:num];
 | |
| }
 | |
| 
 | |
| -(void)setVendorList:(NSMutableArray*)dictionary{
 | |
|     [DTBAds.sharedInstance setVendorList:dictionary];
 | |
| }
 | |
| 
 | |
| -(void)setAutoRefresh:(DTBAdLoader*)adLoader{
 | |
|     [adLoader setAutoRefresh];
 | |
| }
 | |
| 
 | |
| -(void)setAutoRefresh:(DTBAdLoader*)adLoader secs:(int)secs{
 | |
|     [adLoader setAutoRefresh:secs];
 | |
| }
 | |
| 
 | |
| -(void)pauseAutorefresh:(DTBAdLoader*)adLoader{
 | |
|     [adLoader pauseAutorefresh];
 | |
| }
 | |
| 
 | |
| -(void)stopAutoRefresh:(DTBAdLoader*)adLoader{
 | |
|     [adLoader stop];
 | |
| }
 | |
| 
 | |
| -(void)resumeAutoRefresh:(DTBAdLoader*)adLoader{
 | |
|     [adLoader resumeAutorefresh];
 | |
| }
 | |
| 
 | |
| -(void)setAPSPublisherExtendedIdFeatureEnabled:(BOOL)isEnabled {
 | |
|     [DTBAds.sharedInstance setAPSPublisherExtendedIdFeatureEnabled:isEnabled];
 | |
| }
 | |
| 
 | |
| -(void)addCustomAttribute:(NSString *)withKey value:(id)value {
 | |
|     [DTBAds.sharedInstance addCustomAttribute:withKey value:value];
 | |
| }
 | |
| 
 | |
| -(void)removeCustomAttribute:(NSString *)forKey {
 | |
|     [DTBAds.sharedInstance removeCustomAttribute:forKey];
 | |
| }
 | |
| 
 | |
| -(void)setAdNetworkInfo:(DTBAdNetworkInfo *)dtbAdNetworkInfo {
 | |
|     [[DTBAds sharedInstance] setAdNetworkInfo:dtbAdNetworkInfo];
 | |
| }
 | |
| 
 | |
| -(void)setLocalExtras:(NSString *)adUnitId localExtras:(NSDictionary *)localExtras {
 | |
|     [DTBAds setLocalExtras:adUnitId localExtras:localExtras];
 | |
| }
 | |
| 
 | |
| -(NSDictionary *)getMediationHintsDict:(DTBAdResponse*)response isSmart:(BOOL)isSmart{
 | |
|     return [response mediationHints:isSmart];
 | |
| }
 | |
| 
 | |
| -(void)showInterstitialAd:(DTBAdInterstitialDispatcher*)dispatcher {
 | |
|     [dispatcher showFromController:[self unityRootViewController]];
 | |
| }
 | |
| 
 | |
| -(UIViewController *)unityRootViewController {
 | |
|     id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate;
 | |
|     // @TODO Check whether the appDelegate implements rootViewController. Refer to CR-68240623 for discussions.
 | |
|     if ([appDelegate respondsToSelector:@selector(rootViewController)]) {
 | |
|         return [[[UIApplication sharedApplication].delegate window] rootViewController];
 | |
|     }
 | |
|     return nil;
 | |
| }
 | |
| 
 | |
| @end
 |