GDTSplashAd.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. //
  2. // GDTSplashAd.h
  3. // GDTMobApp
  4. //
  5. // 广点通开屏广告,目前只支持iPhone设备上展示垂直方向的开屏广告
  6. // Created by GaoChao on 15/8/20.
  7. // Copyright © 2015年 Tencent. All rights reserved.
  8. //
  9. #import <Foundation/Foundation.h>
  10. #import <UIKit/UIKit.h>
  11. #import "GDTSDKDefines.h"
  12. #import "GDTSplashZoomOutView.h"
  13. #import "GDTAdProtocol.h"
  14. #import "GDTServerSideVerificationOptions.h"
  15. @class GDTSplashAd;
  16. @protocol GDTSplashAdDelegate <GDTAdDelegate>
  17. @optional
  18. /**
  19. * 开屏广告成功展示
  20. */
  21. - (void)splashAdSuccessPresentScreen:(GDTSplashAd *)splashAd;
  22. /**
  23. * 开屏广告素材加载成功
  24. */
  25. - (void)splashAdDidLoad:(GDTSplashAd *)splashAd;
  26. /**
  27. * 开屏广告展示失败
  28. */
  29. - (void)splashAdFailToPresent:(GDTSplashAd *)splashAd withError:(NSError *)error;
  30. /**
  31. * 应用进入后台时回调
  32. * 详解: 当点击下载应用时会调用系统程序打开,应用切换到后台
  33. */
  34. - (void)splashAdApplicationWillEnterBackground:(GDTSplashAd *)splashAd;
  35. /**
  36. * 开屏广告曝光回调
  37. */
  38. - (void)splashAdExposured:(GDTSplashAd *)splashAd;
  39. /**
  40. * 开屏广告点击回调
  41. */
  42. - (void)splashAdClicked:(GDTSplashAd *)splashAd;
  43. /**
  44. * 开屏广告将要关闭回调
  45. */
  46. - (void)splashAdWillClosed:(GDTSplashAd *)splashAd;
  47. /**
  48. * 开屏广告关闭回调
  49. */
  50. - (void)splashAdClosed:(GDTSplashAd *)splashAd;
  51. /**
  52. * 开屏广告点击以后即将弹出全屏广告页
  53. */
  54. - (void)splashAdWillPresentFullScreenModal:(GDTSplashAd *)splashAd;
  55. /**
  56. * 开屏广告点击以后弹出全屏广告页
  57. */
  58. - (void)splashAdDidPresentFullScreenModal:(GDTSplashAd *)splashAd;
  59. /**
  60. * 点击以后全屏广告页将要关闭
  61. */
  62. - (void)splashAdWillDismissFullScreenModal:(GDTSplashAd *)splashAd;
  63. /**
  64. * 点击以后全屏广告页已经关闭
  65. */
  66. - (void)splashAdDidDismissFullScreenModal:(GDTSplashAd *)splashAd;
  67. /**
  68. * 开屏广告剩余时间回调
  69. */
  70. - (void)splashAdLifeTime:(NSUInteger)time;
  71. /**
  72. 开屏激励回调 (只有开屏激励广告位才会有此回调)
  73. @param splashAd GDTSplashAd 实例
  74. @param info 包含此次广告行为的一些信息,例如 @{@"GDT_TRANS_ID":@"930f1fc8ac59983bbdf4548ee40ac353"}, 通过@“GDT_TRANS_ID”可获取此次广告行为的交易id
  75. */
  76. - (void)splashAdDidRewardEffective:(GDTSplashAd *)splashAd info:(NSDictionary *)info;
  77. @end
  78. @interface GDTSplashAd : NSObject <GDTAdProtocol>
  79. /**
  80. * 委托对象
  81. */
  82. @property (nonatomic, weak) id<GDTSplashAdDelegate> delegate;
  83. /**
  84. * 拉取广告超时时间,默认为5秒
  85. * 详解:拉取广告超时时间,开发者调用loadAd方法以后会立即展示backgroundImage,然后在该超时时间内,如果广告拉
  86. * 取成功,则立马展示开屏广告,否则放弃此次广告展示机会。
  87. */
  88. @property (nonatomic, assign) CGFloat fetchDelay;
  89. /**
  90. * 开屏广告的背景图片
  91. * 可以设置背景图片作为开屏加载时的默认背景
  92. */
  93. @property (nonatomic, strong) UIImage *backgroundImage;
  94. /**
  95. * 开屏广告的背景色
  96. * 可以设置开屏图片来作为开屏加载时的默认图片
  97. */
  98. @property (nonatomic, copy) UIColor *backgroundColor;
  99. /**
  100. * 跳过按钮的位置
  101. */
  102. @property (nonatomic, assign) CGPoint skipButtonCenter;
  103. /**
  104. * 是否需要开屏视频V+功能
  105. */
  106. @property (nonatomic, assign) BOOL needZoomOut;
  107. /**
  108. * 当广告命中开屏视频V+时,splshZoomOutView有值
  109. * splashZoomOutView推荐尺寸为9:16,最小尺寸推荐为126*224
  110. */
  111. @property (nonatomic, strong, readonly) GDTSplashZoomOutView *splashZoomOutView;
  112. /**
  113. * 服务器验证
  114. */
  115. @property (nonatomic, strong) GDTServerSideVerificationOptions *serverSideVerificationOptions;
  116. /**
  117. 返回广告平台名称
  118. @return 当使用流量分配功能时,用于区分广告平台;未使用时为空字符串
  119. */
  120. - (NSString *)adNetworkName;
  121. /**
  122. 返回广告的eCPM,单位:分
  123. @return 成功返回一个大于等于0的值,-1表示无权限或后台出现异常
  124. */
  125. - (NSInteger)eCPM;
  126. /**
  127. 返回广告的eCPM等级
  128. @return 成功返回一个包含数字的string,@""或nil表示无权限或后台异常
  129. */
  130. - (NSString *)eCPMLevel;
  131. /**
  132. * 构造方法
  133. * 详解:placementId - 广告位 ID
  134. */
  135. - (instancetype)initWithPlacementId:(NSString *)placementId;
  136. /**
  137. * 构造方法, S2S bidding 后获取到 token 再调用此方法
  138. * @param placementId 广告位 ID
  139. * @param token 通过 Server Bidding 请求回来的 token
  140. */
  141. - (instancetype)initWithPlacementId:(NSString *)placementId token:(NSString *)token;
  142. /**
  143. * S2S bidding 竞胜之后调用, 需要在调用广告 show 之前调用
  144. * @param eCPM - 曝光扣费, 单位分,若优量汇竞胜,在广告曝光时回传,必传
  145. * 针对本次曝光的媒体期望扣费,常用扣费逻辑包括一价扣费与二价扣费,当采用一价扣费时,胜者出价即为本次扣费价格;当采用二价扣费时,第二名出价为本次扣费价格.
  146. */
  147. - (void)setBidECPM:(NSInteger)eCPM;
  148. /**
  149. 预加载闪屏广告接口
  150. @param placementId 广告位ID
  151. */
  152. - (void)preloadSplashOrderWithPlacementId:(NSString *)placementId;
  153. #pragma mark - Parallel method
  154. /**
  155. * 返回广告是否可展示
  156. * 对于并行请求,在调用showAdInWindow前时需判断下
  157. * @return 当广告已经加载完成&&未曝光&&未过期时,为YES,否则为NO
  158. */
  159. - (BOOL)isAdValid;
  160. /**
  161. * 发起拉取广告请求,只拉取不展示
  162. * 详解:广告素材及广告图片拉取成功后会回调splashAdDidLoad方法,当拉取失败时会回调splashAdFailToPresent方法
  163. */
  164. - (void)loadAd;
  165. /**
  166. * 展示广告,调用此方法前需调用isAdValid方法判断广告素材是否有效
  167. * 详解:广告展示成功时会回调splashAdSuccessPresentScreen方法,展示失败时会回调splashAdFailToPresent方法
  168. */
  169. - (void)showAdInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView skipView:(UIView *)skipView;
  170. /**
  171. * 发起拉取全屏广告请求,只拉取不展示
  172. * 详解:广告素材及广告图片拉取成功后会回调splashAdDidLoad方法,当拉取失败时会回调splashAdFailToPresent方法
  173. */
  174. - (void)loadFullScreenAd;
  175. /**
  176. * 展示全屏广告,调用此方法前需调用isAdValid方法判断广告素材是否有效
  177. * 详解:广告展示成功时会回调splashAdSuccessPresentScreen方法,展示失败时会回调splashAdFailToPresent方法
  178. */
  179. - (void)showFullScreenAdInWindow:(UIWindow *)window withLogoImage:(UIImage *)logoImage skipView:(UIView *)skipView;
  180. /**
  181. * 广告发起请求并展示在Window中
  182. * 详解:[可选]发起拉取广告请求,并将获取的广告以全屏形式展示在传入的Window参数中
  183. * 提示: Splash广告只支持竖屏
  184. * @param window 展示全屏开屏的容器
  185. */
  186. - (void)loadAdAndShowInWindow:(UIWindow *)window GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadAd 和 showAdInWindow:接口");
  187. /**
  188. * 广告发起请求并展示在Window中, 同时在屏幕底部设置应用自身的Logo页面或是自定义View
  189. * 详解:[可选]发起拉取广告请求,并将获取的广告以半屏形式展示在传入的Window的上半部,剩余部分展示传入的bottomView
  190. * 请注意1.bottomView需设置好宽高,所占的空间不能过大,并保证高度不超过屏幕高度的 25%。2.Splash广告只支持竖屏
  191. * @param window 展示开屏的容器
  192. * bottomView 自定义底部View,可以在此View中设置应用Logo
  193. */
  194. - (void)loadAdAndShowInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadAd 和 showAdInWindow:接口");
  195. /**
  196. * 广告发起请求并展示在Window中, 同时在屏幕底部设置应用自身的Logo页面或是自定义View,skipView是自定义的“跳过”样式
  197. * 详解:[可选]发起拉取广告请求,并将获取的广告以半屏形式展示在传入的Window的上半部,剩余部分展示传入的bottomView
  198. * 请注意1.bottomView需设置好宽高,所占的空间不能过大,并保证高度不超过屏幕高度的 25%。2.Splash广告只支持竖屏
  199. * skipView
  200. * @param window 展示开屏的容器
  201. * bottomView 自定义底部View,可以在此View中设置应用Logo
  202. skipView 自定义”跳过“View.
  203. */
  204. - (void)loadAdAndShowInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView skipView:(UIView *)skipView GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadAd 和 showAdInWindow:接口");
  205. /**
  206. * 广告发起请求并展示在Window中, 同时在屏幕底部设置应用自身的Logo页面或是自定义View,skipView是自定义的“跳过”样式
  207. * 详解:[可选]发起拉取广告请求,并将获取的广告全屏展示, 可自定义 logo
  208. * skipView
  209. * @param window 展示开屏的容器
  210. * logoImage 自定义logo 展示在屏幕左下角
  211. skipView 自定义”跳过“View.
  212. */
  213. - (void)loadAdAndShowFullScreenInWindow:(UIWindow *)window withLogoImage:(UIImage *)logoImage skipView:(UIView *)skipView GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadFullScreenAd 和 showFullScreenAdInWindow:接口");
  214. @end