123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- //
- // ATSplashAdWrapper.m
- // UnityFramework
- //
- // Created by li zhixuan on 2023/5/4.
- //
- #import "ATSplashAdWrapper.h"
- #import "ATUnityUtilities.h"
- #import <AnyThinkSplash/AnyThinkSplash.h>
- @interface ATSplashAdWrapper () <ATSplashDelegate>
- @end
- @implementation ATSplashAdWrapper
- + (instancetype)sharedInstance {
- static ATSplashAdWrapper *sharedInstance = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedInstance = [[ATSplashAdWrapper alloc] init];
- });
- return sharedInstance;
- }
- - (NSString *)scriptWrapperClass {
- return @"ATSplashAdWrapper";
- }
- - (id)selWrapperClassWithDict:(NSDictionary *)dict callback:(void(*)(const char*, const char*))callback {
- NSString *selector = dict[@"selector"];
- NSArray<NSString*>* arguments = dict[@"arguments"];
- NSString *firstObject = @"";
- NSString *lastObject = @"";
- if (![ATUnityUtilities isEmpty:arguments]) {
- for (int i = 0; i < arguments.count; i++) {
- if (i == 0) { firstObject = arguments[i]; }
- else { lastObject = arguments[i]; }
- }
- }
-
- if ([selector isEqualToString:@"loadSplashAdWithPlacementID:customDataJSONString:callback:"]) {
- [self loadSplashAdWithPlacementID:firstObject customDataJSONString:lastObject callback:callback];
- } else if ([selector isEqualToString:@"splashAdReadyForPlacementID:"]) {
- return [NSNumber numberWithBool:[self splashAdReadyForPlacementID:firstObject]];
- } else if ([selector isEqualToString:@"showSplashAdWithPlacementID:extraJsonString:"]) {
- [self showSplashAdWithPlacementID:firstObject extraJsonString:lastObject];
- } else if ([selector isEqualToString:@"checkAdStatus:"]) {
- return [self checkAdStatus:firstObject];
- } else if ([selector isEqualToString:@"clearCache"]) {
- [self clearCache];
- } else if ([selector isEqualToString:@"getValidAdCaches:"]) {
- return [self getValidAdCaches:firstObject];
- }else if ([selector isEqualToString:@"entryScenarioWithPlacementID:scenarioID:"]) {
- [self entryScenarioWithPlacementID:firstObject scenarioID:lastObject];
- }
-
- return nil;
- }
- - (void)loadSplashAdWithPlacementID:(NSString*)placementID customDataJSONString:(NSString*)customDataJSONString callback:(void(*)(const char*, const char*))callback {
-
- [self setCallBack:callback forKey:placementID];
- NSMutableDictionary *extra = [NSMutableDictionary dictionary];
- if ([customDataJSONString isKindOfClass:[NSString class]] && [customDataJSONString length] > 0) {
- NSDictionary *extraDict = [NSJSONSerialization JSONObjectWithData:[customDataJSONString dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
- [extra addEntriesFromDictionary:extraDict];
- }
- NSString *defaultAdSourceConfig = extra[@"default_adSource_config"];
- NSLog(@"ATSplashAdWrapper::extra = %@", extra);
- [[ATAdManager sharedManager] loadADWithPlacementID:placementID extra:extra delegate:self containerView:nil];
- }
- - (BOOL)splashAdReadyForPlacementID:(NSString*)placementID {
- return [[ATAdManager sharedManager] splashReadyForPlacementID:placementID];
- }
- - (NSString*)getValidAdCaches:(NSString *)placementID {
- NSArray *array = [[ATAdManager sharedManager] getSplashValidAdsForPlacementID:placementID];
- NSLog(@"ATSplashAdWrapper::array = %@", array);
- return array.jsonFilterString;
- }
- - (void)showSplashAdWithPlacementID:(NSString*)placementID extraJsonString:(NSString*)extraJsonString {
- [[ATAdManager sharedManager] showSplashWithPlacementID:placementID scene:@"" window:[UIApplication sharedApplication].delegate.window delegate:self];
- }
- - (NSString*)checkAdStatus:(NSString *)placementID {
- ATCheckLoadModel *checkLoadModel = [[ATAdManager sharedManager] checkSplashLoadStatusForPlacementID:placementID];
- NSMutableDictionary *statusDict = [NSMutableDictionary dictionary];
- statusDict[@"isLoading"] = @(checkLoadModel.isLoading);
- statusDict[@"isReady"] = @(checkLoadModel.isReady);
- statusDict[@"adInfo"] = checkLoadModel.adOfferInfo;
- NSLog(@"ATSplashAdWrapper::statusDict = %@", statusDict);
- return statusDict.jsonFilterString;
- }
- - (void)entryScenarioWithPlacementID:(NSString *)placementID scenarioID:(NSString *)scenarioID{
- [[ATAdManager sharedManager] entrySplashScenarioWithPlacementID:placementID scene:scenarioID];
- }
- - (void) clearCache {
- }
- #pragma mark - ATSplashDelegate
- /// Splash ad displayed successfully
- - (void)splashDidShowForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
- [self invokeCallback:@"OnSplashAdShow" placementID:placementID error:nil extra:extra];
- }
- /// Splash ad click
- - (void)splashDidClickForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
- [self invokeCallback:@"OnSplashAdClick" placementID:placementID error:nil extra:extra];
- }
- /// Splash ad closed
- - (void)splashDidCloseForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
- [self invokeCallback:@"OnSplashAdClose" placementID:placementID error:nil extra:extra];
- }
- /// Callback when the splash ad is loaded successfully
- /// @param isTimeout whether timeout
- /// v 5.7.73
- - (void)didFinishLoadingSplashADWithPlacementID:(NSString *)placementID
- isTimeout:(BOOL)isTimeout {
- }
- /// Splash ad loading timeout callback
- /// v 5.7.73
- - (void)didTimeoutLoadingSplashADWithPlacementID:(NSString *)placementID {
- [self invokeCallback:@"OnSplashAdLoadTimeout" placementID:placementID error:nil extra:nil];
- }
- /// Splash ad failed to display
- /// currently supports Pangle, Guangdiantong and Baidu
- - (void)splashDidShowFailedForPlacementID:(NSString *)placementID
- error:(NSError *)error
- extra:(NSDictionary *)extra {
- [self invokeCallback:@"OnSplashAdFailedToShow" placementID:placementID error:error extra:extra];
- }
- /// Whether the click jump of Splash ad is in the form of Deeplink
- /// note: only suport TopOn Adx ad
- - (void)splashDeepLinkOrJumpForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra
- result:(BOOL)success {
- NSMutableDictionary *newExtra = [[NSMutableDictionary alloc] initWithDictionary:extra];
- newExtra[@"success"] = @(success);
- [self invokeCallback:@"OnSplashAdDeeplink" placementID:placementID error:nil extra:newExtra];
- }
- /// Splash ad closes details page
- - (void)splashDetailDidClosedForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
-
- }
- /// Called when splash zoomout view did click
- /// note: only suport Pangle splash zoomout view and the Tencent splash V+ ad
- - (void)splashZoomOutViewDidClickForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
-
- }
- /// Called when splash zoomout view did close
- /// note: only suport Pangle splash zoomout view and the Tencent splash V+ ad
- - (void)splashZoomOutViewDidCloseForPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
-
- }
- /// This callback is triggered when the skip button is customized.
- /// note: only suport TopOn MyOffer, TopOn Adx and TopOn OnlineApi
- /// 5.7.61+
- - (void)splashCountdownTime:(NSInteger)countdown
- forPlacementID:(NSString *)placementID
- extra:(NSDictionary *)extra {
-
- }
- #pragma mark - ATAdLoadingDelegate
- /// Callback when the successful loading of the ad
- - (void)didFinishLoadingADWithPlacementID:(NSString *)placementID {
- [self invokeCallback:@"OnSplashAdLoaded" placementID:placementID error:nil extra:nil];
- }
- /// Callback of ad loading failure
- - (void)didFailToLoadADWithPlacementID:(NSString*)placementID
- error:(NSError*)error {
- error = error != nil ? error : [NSError errorWithDomain:@"com.anythink.Unity3DPackage" code:100001 userInfo:@{NSLocalizedDescriptionKey:@"AT has failed to load ad", NSLocalizedFailureReasonErrorKey:@"AT has failed to load ad"}];
- [self invokeCallback:@"OnSplashAdLoadFailure" placementID:placementID error:error extra:nil];
-
- }
- /// Ad start load
- - (void)didStartLoadingADSourceWithPlacementID:(NSString *)placementID
- extra:(NSDictionary*)extra {
- [self invokeCallback:@"startLoadingADSource" placementID:placementID error:nil extra:extra];
-
- }
- /// Ad load success
- - (void)didFinishLoadingADSourceWithPlacementID:(NSString *)placementID
- extra:(NSDictionary*)extra {
- [self invokeCallback:@"finishLoadingADSource" placementID:placementID error:nil extra:extra];
-
- }
- /// Ad load fail
- - (void)didFailToLoadADSourceWithPlacementID:(NSString*)placementID
- extra:(NSDictionary*)extra
- error:(NSError*)error {
- [self invokeCallback:@"failToLoadADSource" placementID:placementID error:error extra:extra];
- }
- /// Ad start bidding
- - (void)didStartBiddingADSourceWithPlacementID:(NSString *)placementID
- extra:(NSDictionary*)extra {
- [self invokeCallback:@"startBiddingADSource" placementID:placementID error:nil extra:extra];
- }
- /// Ad bidding success
- - (void)didFinishBiddingADSourceWithPlacementID:(NSString *)placementID
- extra:(NSDictionary*)extra {
- [self invokeCallback:@"finishBiddingADSource" placementID:placementID error:nil extra:extra];
- }
- /// Ad bidding fail
- - (void)didFailBiddingADSourceWithPlacementID:(NSString*)placementID
- extra:(NSDictionary*)extra
- error:(NSError*)error {
- [self invokeCallback:@"failBiddingADSource" placementID:placementID error:error extra:extra];
- }
- @end
|