GDTUnifiedInterstitialAd.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. //
  2. // GDTUnifiedInterstitialAd.h
  3. // GDTMobApp
  4. //
  5. // Created by nimomeng on 2019/3/4.
  6. // Copyright © 2019 Tencent. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "GDTSDKDefines.h"
  10. #import "GDTServerSideVerificationOptions.h"
  11. #import "GDTAdProtocol.h"
  12. NS_ASSUME_NONNULL_BEGIN
  13. @class GDTUnifiedInterstitialAd;
  14. @protocol GDTUnifiedInterstitialAdDelegate <GDTAdDelegate>
  15. @optional
  16. /**
  17. * 插屏2.0广告预加载成功回调
  18. * 当接收服务器返回的广告数据成功且预加载后调用该函数
  19. */
  20. - (void)unifiedInterstitialSuccessToLoadAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  21. /**
  22. * 插屏2.0广告预加载失败回调
  23. * 当接收服务器返回的广告数据失败后调用该函数
  24. */
  25. - (void)unifiedInterstitialFailToLoadAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error;
  26. /**
  27. * 插屏2.0广告视频缓存完成
  28. */
  29. - (void)unifiedInterstitialDidDownloadVideo:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  30. /**
  31. * 插屏2.0广告渲染成功
  32. * 建议在此回调后展示广告
  33. */
  34. - (void)unifiedInterstitialRenderSuccess:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  35. /**
  36. * 插屏2.0广告渲染失败
  37. */
  38. - (void)unifiedInterstitialRenderFail:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error;
  39. /**
  40. * 插屏2.0广告将要展示回调
  41. * 插屏2.0广告即将展示回调该函数
  42. */
  43. - (void)unifiedInterstitialWillPresentScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  44. /**
  45. * 插屏2.0广告视图展示成功回调
  46. * 插屏2.0广告展示成功回调该函数
  47. */
  48. - (void)unifiedInterstitialDidPresentScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  49. /**
  50. * 插屏2.0广告视图展示失败回调
  51. * 插屏2.0广告展示失败回调该函数
  52. */
  53. - (void)unifiedInterstitialFailToPresent:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error;
  54. /**
  55. * 插屏2.0广告展示结束回调
  56. * 插屏2.0广告展示结束回调该函数
  57. */
  58. - (void)unifiedInterstitialDidDismissScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  59. /**
  60. * 当点击下载应用时会调用系统程序打开其它App或者Appstore时回调
  61. */
  62. - (void)unifiedInterstitialWillLeaveApplication:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  63. /**
  64. * 插屏2.0广告曝光回调
  65. */
  66. - (void)unifiedInterstitialWillExposure:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  67. /**
  68. * 插屏2.0广告点击回调
  69. */
  70. - (void)unifiedInterstitialClicked:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  71. /**
  72. * 点击插屏2.0广告以后即将弹出全屏广告页
  73. */
  74. - (void)unifiedInterstitialAdWillPresentFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  75. /**
  76. * 点击插屏2.0广告以后弹出全屏广告页
  77. */
  78. - (void)unifiedInterstitialAdDidPresentFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  79. /**
  80. * 全屏广告页将要关闭
  81. */
  82. - (void)unifiedInterstitialAdWillDismissFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  83. /**
  84. * 全屏广告页被关闭
  85. */
  86. - (void)unifiedInterstitialAdDidDismissFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  87. /**
  88. * 插屏2.0视频广告 player 播放状态更新回调
  89. */
  90. - (void)unifiedInterstitialAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial playerStatusChanged:(GDTMediaPlayerStatus)status;
  91. /**
  92. * 插屏2.0视频广告详情页 WillPresent 回调
  93. */
  94. - (void)unifiedInterstitialAdViewWillPresentVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  95. /**
  96. * 插屏2.0视频广告详情页 DidPresent 回调
  97. */
  98. - (void)unifiedInterstitialAdViewDidPresentVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  99. /**
  100. * 插屏2.0视频广告详情页 WillDismiss 回调
  101. */
  102. - (void)unifiedInterstitialAdViewWillDismissVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  103. /**
  104. * 插屏2.0视频广告详情页 DidDismiss 回调
  105. */
  106. - (void)unifiedInterstitialAdViewDidDismissVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
  107. /**
  108. * 插屏激励广告视频播放达到激励条件回调(只有插屏激励广告位才会有此回调)
  109. @param unifiedInterstitial GDTUnifiedInterstitialAd 实例
  110. @param info 包含此次广告行为的一些信息,例如 @{@"GDT_TRANS_ID":@"930f1fc8ac59983bbdf4548ee40ac353"}, 通过@“GDT_TRANS_ID”可获取此次广告行为的交易id
  111. */
  112. - (void)unifiedInterstitialAdDidRewardEffective:(GDTUnifiedInterstitialAd *)unifiedInterstitial info:(NSDictionary *)info;
  113. @end
  114. @interface GDTUnifiedInterstitialAd : NSObject <GDTAdProtocol>
  115. /**
  116. * 广告是否有效,以下情况会返回NO,建议在展示广告之前判断,否则会影响计费或展示失败
  117. * a.广告未拉取成功
  118. * b.广告已经曝光过
  119. * c.广告过期
  120. *
  121. */
  122. @property (nonatomic, readonly) BOOL isAdValid;
  123. /**
  124. * 委托对象
  125. */
  126. @property (nonatomic, weak) id<GDTUnifiedInterstitialAdDelegate> delegate;
  127. @property (nonatomic, readonly) NSString *placementId;
  128. @property (nonatomic, strong) GDTServerSideVerificationOptions *serverSideVerificationOptions;
  129. /**
  130. * 构造方法
  131. * 详解:placementId - 广告位 ID
  132. */
  133. - (instancetype)initWithPlacementId:(NSString *)placementId;
  134. /**
  135. * 构造方法, S2S bidding 后获取到 token 再调用此方法
  136. * @param placementId 广告位 ID
  137. * @param token 通过 Server Bidding 请求回来的 token
  138. */
  139. - (instancetype)initWithPlacementId:(NSString *)placementId token:(NSString *)token;
  140. /**
  141. * S2S bidding 竞胜之后调用, 需要在调用广告 show 之前调用
  142. * @param eCPM - 曝光扣费, 单位分,若优量汇竞胜,在广告曝光时回传,必传
  143. * 针对本次曝光的媒体期望扣费,常用扣费逻辑包括一价扣费与二价扣费,当采用一价扣费时,胜者出价即为本次扣费价格;当采用二价扣费时,第二名出价为本次扣费价格.
  144. */
  145. - (void)setBidECPM:(NSInteger)eCPM;
  146. /**
  147. * 广告发起请求方法
  148. * 详解:[必选]发起拉取广告请求
  149. */
  150. - (void)loadAd;
  151. /**
  152. * 插屏全屏视频广告发起请求方法
  153. * 详解:[必选]发起拉取广告请求
  154. */
  155. - (void)loadFullScreenAd;
  156. /**
  157. * 广告展示方法
  158. * 详解:[必选]发起展示广告请求, 必须传入用于显示插播广告的UIViewController
  159. */
  160. - (void)presentAdFromRootViewController:(UIViewController *)rootViewController;
  161. /**
  162. * 插屏视频全屏广告展示方法
  163. * 详解:[必选]发起展示广告请求, 必须传入用于显示插播广告的UIViewController
  164. */
  165. - (void)presentFullScreenAdFromRootViewController:(UIViewController *)rootViewController;
  166. /**
  167. 返回广告的eCPM,单位:分
  168. @return 成功返回一个大于等于0的值,-1表示无权限或后台出现异常
  169. */
  170. - (NSInteger)eCPM;
  171. /**
  172. 返回广告的eCPM等级
  173. @return 成功返回一个包含数字的string,@""或nil表示无权限或后台异常
  174. */
  175. - (NSString *)eCPMLevel;
  176. /**
  177. * 非 WiFi 网络,是否自动播放。默认 YES。loadAd 前设置。
  178. */
  179. @property (nonatomic, assign) BOOL videoAutoPlayOnWWAN;
  180. /**
  181. * 自动播放时,是否静音。默认 YES。loadAd 前设置。
  182. */
  183. @property (nonatomic, assign) BOOL videoMuted;
  184. /**
  185. * 视频详情页播放时是否静音。默认NO。loadAd 前设置。
  186. */
  187. @property (nonatomic, assign) BOOL detailPageVideoMuted;
  188. /**
  189. 请求视频的时长下限,插屏激励广告位设置此属性不生效
  190. 以下两种情况会使用 0,1:不设置 2:minVideoDuration大于maxVideoDuration
  191. */
  192. @property (nonatomic) NSInteger minVideoDuration;
  193. /**
  194. 请求视频的时长上限,视频时长有效值范围为[5,180],插屏激励广告位设置此属性不生效
  195. */
  196. @property (nonatomic) NSInteger maxVideoDuration;
  197. /**
  198. * 是否是视频插屏2.0广告
  199. */
  200. @property (nonatomic, assign, readonly) BOOL isVideoAd;
  201. /**
  202. * 视频插屏2.0广告时长,单位 ms
  203. */
  204. - (CGFloat)videoDuration;
  205. /**
  206. * 视频插屏广告已播放时长,单位 ms
  207. */
  208. - (CGFloat)videoPlayTime;
  209. /**
  210. 返回广告平台名称
  211. @return 当使用流量分配功能时,用于区分广告平台;未使用时为空字符串
  212. */
  213. - (NSString *)adNetworkName;
  214. @end
  215. NS_ASSUME_NONNULL_END