264 lines
10 KiB
Objective-C
264 lines
10 KiB
Objective-C
#import "InsertAd.h"
|
|
#import "GDTUnifiedInterstitialAd.h"
|
|
#import "TLogUtil.h"
|
|
#import "TUIViewController+getCurrentVC.h"
|
|
#import "UnionAdSsgfEvent.h"
|
|
|
|
|
|
@interface InsertAd()<GDTUnifiedInterstitialAdDelegate>
|
|
|
|
@property(nonatomic,strong) GDTUnifiedInterstitialAd *interstitialAd;
|
|
@property(nonatomic,strong) NSString *codeId;
|
|
@property(nonatomic,assign) BOOL isFullScreen;
|
|
@property(nonatomic,assign) BOOL isBidding;
|
|
@property(nonatomic,strong) UIViewController *currentController;
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation InsertAd
|
|
|
|
+ (instancetype)sharedInstance{
|
|
static InsertAd *myInstance = nil;
|
|
if(myInstance == nil){
|
|
myInstance = [[InsertAd alloc]init];
|
|
}
|
|
return myInstance;
|
|
}
|
|
|
|
//预加载激励广告
|
|
-(void)initAd:(NSDictionary*)arguments{
|
|
NSDictionary *dic = arguments;
|
|
_codeId = dic[@"iosId"];
|
|
_isFullScreen = [dic[@"isFullScreen"] boolValue];
|
|
self.isBidding =[dic[@"isBidding"] boolValue];
|
|
_interstitialAd = [[GDTUnifiedInterstitialAd alloc] initWithPlacementId:_codeId];
|
|
_interstitialAd.delegate = self;
|
|
_interstitialAd.videoMuted = false;
|
|
_isFullScreen ? [_interstitialAd loadFullScreenAd] : [_interstitialAd loadAd];
|
|
}
|
|
|
|
//展示广告
|
|
- (void)showAd:(NSDictionary*)arguments{
|
|
if(self.isBidding){
|
|
BOOL isSuccess = [arguments[@"isSuccess"] boolValue];
|
|
if(isSuccess){
|
|
NSDictionary *dictionary = @{GDT_M_W_E_COST_PRICE:@([arguments[@"expectCostPrice"] intValue]),
|
|
GDT_M_W_H_LOSS_PRICE:@([arguments[@"highestLossPrice"] intValue])};
|
|
[self.interstitialAd sendWinNotificationWithInfo:dictionary];
|
|
if(_isFullScreen){
|
|
[_interstitialAd presentFullScreenAdFromRootViewController:[UIViewController jsd_getCurrentViewController]];
|
|
}else{
|
|
[_interstitialAd presentAdFromRootViewController:[UIViewController jsd_getCurrentViewController]];
|
|
}
|
|
}else{
|
|
NSDictionary *dictionary = @{GDT_M_L_WIN_PRICE:@([arguments[@"winPrice"] intValue]),
|
|
GDT_M_L_LOSS_REASON:@([arguments[@"lossReason"] intValue]),
|
|
GDT_M_ADNID: arguments[@"adnId"]};
|
|
[self.interstitialAd sendWinNotificationWithInfo:dictionary];
|
|
}
|
|
}else{
|
|
if(_isFullScreen){
|
|
[_interstitialAd presentFullScreenAdFromRootViewController:[UIViewController jsd_getCurrentViewController]];
|
|
}else{
|
|
[_interstitialAd presentAdFromRootViewController:[UIViewController jsd_getCurrentViewController]];
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
#pragma mark - 广告请求delegate
|
|
|
|
/**
|
|
* 插屏2.0广告预加载成功回调
|
|
* 当接收服务器返回的广告数据成功且预加载后调用该函数
|
|
*/
|
|
- (void)unifiedInterstitialSuccessToLoadAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告预加载成功回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告预加载失败回调
|
|
* 当接收服务器返回的广告数据失败后调用该函数
|
|
*/
|
|
- (void)unifiedInterstitialFailToLoadAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error{
|
|
[[TLogUtil sharedInstance] print:((void)(@"插屏2.0广告预加载失败回调 %@"),error.description)];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onFail",@"code":@(-1),@"message":error.description};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告视频缓存完成
|
|
*/
|
|
- (void)unifiedInterstitialDidDownloadVideo:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告视频缓存完成"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告渲染成功
|
|
* 建议在此回调后展示广告
|
|
*/
|
|
- (void)unifiedInterstitialRenderSuccess:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告渲染成功"];
|
|
//是否开启竞价
|
|
if(self.isBidding){
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onECPM",@"ecpmLevel":self.interstitialAd.eCPMLevel == nil ? @"" : self.interstitialAd.eCPMLevel,@"ecpm":@(self.interstitialAd.eCPM)};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}else{
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onReady"};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告渲染失败
|
|
*/
|
|
- (void)unifiedInterstitialRenderFail:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error{
|
|
[[TLogUtil sharedInstance] print:((void)(@"插屏2.0广告渲染失败 %@"),error.description)];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onFail",@"code":@(-1),@"message":error.description};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告将要展示回调
|
|
* 插屏2.0广告即将展示回调该函数
|
|
*/
|
|
- (void)unifiedInterstitialWillPresentScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告将要展示回调"];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onShow"};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告视图展示成功回调
|
|
* 插屏2.0广告展示成功回调该函数
|
|
*/
|
|
- (void)unifiedInterstitialDidPresentScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告视图展示成功回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告视图展示失败回调
|
|
* 插屏2.0广告展示失败回调该函数
|
|
*/
|
|
- (void)unifiedInterstitialFailToPresent:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error{
|
|
[[TLogUtil sharedInstance] print:((void)(@"插屏2.0广告视图展示失败回调 %@"),error.description)];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onFail",@"code":@(-1),@"message":error.description};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告展示结束回调
|
|
* 插屏2.0广告展示结束回调该函数
|
|
*/
|
|
- (void)unifiedInterstitialDidDismissScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告展示结束回调"];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onClose"};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 当点击下载应用时会调用系统程序打开其它App或者Appstore时回调
|
|
*/
|
|
- (void)unifiedInterstitialWillLeaveApplication:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0点击下载应用时会调用系统程序打开其它App或者Appstore时回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告曝光回调
|
|
*/
|
|
- (void)unifiedInterstitialWillExposure:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告曝光回调"];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onExpose"};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0广告点击回调
|
|
*/
|
|
- (void)unifiedInterstitialClicked:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0广告点击回调"];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onClick"};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
/**
|
|
* 点击插屏2.0广告以后即将弹出全屏广告页
|
|
*/
|
|
- (void)unifiedInterstitialAdWillPresentFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"点击插屏2.0广告以后即将弹出全屏广告页"];
|
|
}
|
|
|
|
/**
|
|
* 点击插屏2.0广告以后弹出全屏广告页
|
|
*/
|
|
- (void)unifiedInterstitialAdDidPresentFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"点击插屏2.0广告以后弹出全屏广告页"];
|
|
}
|
|
|
|
/**
|
|
* 全屏广告页将要关闭
|
|
*/
|
|
- (void)unifiedInterstitialAdWillDismissFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0全屏广告页将要关闭"];
|
|
}
|
|
|
|
/**
|
|
* 全屏广告页被关闭
|
|
*/
|
|
- (void)unifiedInterstitialAdDidDismissFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0全屏广告页将要关闭"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0视频广告 player 播放状态更新回调
|
|
*/
|
|
- (void)unifiedInterstitialAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial playerStatusChanged:(GDTMediaPlayerStatus)status{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0视频广告 player 播放状态更新回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0视频广告详情页 WillPresent 回调
|
|
*/
|
|
- (void)unifiedInterstitialAdViewWillPresentVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0视频广告详情页 WillPresent 回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0视频广告详情页 DidPresent 回调
|
|
*/
|
|
- (void)unifiedInterstitialAdViewDidPresentVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0视频广告详情页 DidPresent 回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0视频广告详情页 WillDismiss 回调
|
|
*/
|
|
- (void)unifiedInterstitialAdViewWillDismissVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0视频广告详情页 WillDismiss 回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏2.0视频广告详情页 DidDismiss 回调
|
|
*/
|
|
- (void)unifiedInterstitialAdViewDidDismissVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial{
|
|
[[TLogUtil sharedInstance] print:@"插屏2.0视频广告详情页 DidDismiss 回调"];
|
|
}
|
|
|
|
/**
|
|
* 插屏激励广告视频播放达到激励条件回调(只有插屏激励广告位才会有此回调)
|
|
|
|
@param unifiedInterstitial GDTUnifiedInterstitialAd 实例
|
|
@param info 包含此次广告行为的一些信息,例如 @{@"GDT_TRANS_ID":@"930f1fc8ac59983bbdf4548ee40ac353"}, 通过@“GDT_TRANS_ID”可获取此次广告行为的交易id
|
|
*/
|
|
- (void)unifiedInterstitialAdDidRewardEffective:(GDTUnifiedInterstitialAd *)unifiedInterstitial info:(NSDictionary *)info{
|
|
[[TLogUtil sharedInstance] print:@"插屏激励广告视频播放达到激励条件回调(只有插屏激励广告位才会有此回调)"];
|
|
NSString *transId = info[@"GDT_TRANS_ID"];
|
|
NSDictionary *dictionary = @{@"adType":@"interactAd",@"onAdMethod":@"onVerify",@"transId":transId};
|
|
[[UnionAdSsgfEvent sharedInstance] sentEvent:dictionary];
|
|
}
|
|
|
|
|
|
@end
|