GDTUnifiedNativeAdView.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. //
  2. // GDTUnifiedNativeAdView.h
  3. // GDTMobSDK
  4. //
  5. // Created by nimomeng on 2018/10/10.
  6. // Copyright © 2018 Tencent. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "GDTLogoView.h"
  10. #import "GDTMediaView.h"
  11. #import "GDTUnifiedNativeAdDataObject.h"
  12. #import "GDTSDKDefines.h"
  13. #import "GDTVideoAdReporter.h"
  14. @class GDTUnifiedNativeAdView;
  15. //视频广告时长Key
  16. extern NSString* const kGDTUnifiedNativeAdKeyVideoDuration;
  17. @protocol GDTUnifiedNativeAdViewDelegate <GDTAdDelegate
  18. >
  19. @optional
  20. /**
  21. 广告曝光回调
  22. @param unifiedNativeAdView GDTUnifiedNativeAdView 实例
  23. */
  24. - (void)gdt_unifiedNativeAdViewWillExpose:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
  25. /**
  26. 广告点击回调
  27. @param unifiedNativeAdView GDTUnifiedNativeAdView 实例
  28. */
  29. - (void)gdt_unifiedNativeAdViewDidClick:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
  30. /**
  31. 广告详情页关闭回调
  32. @param unifiedNativeAdView GDTUnifiedNativeAdView 实例
  33. */
  34. - (void)gdt_unifiedNativeAdDetailViewClosed:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
  35. /**
  36. 当点击应用下载或者广告调用系统程序打开时调用
  37. @param unifiedNativeAdView GDTUnifiedNativeAdView 实例
  38. */
  39. - (void)gdt_unifiedNativeAdViewApplicationWillEnterBackground:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
  40. /**
  41. 广告详情页面即将展示回调
  42. @param unifiedNativeAdView GDTUnifiedNativeAdView 实例
  43. */
  44. - (void)gdt_unifiedNativeAdDetailViewWillPresentScreen:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
  45. /**
  46. 视频广告播放状态更改回调
  47. @param nativeExpressAdView GDTUnifiedNativeAdView 实例
  48. @param status 视频广告播放状态
  49. @param userInfo 视频广告信息
  50. */
  51. - (void)gdt_unifiedNativeAdView:(GDTUnifiedNativeAdView *)unifiedNativeAdView playerStatusChanged:(GDTMediaPlayerStatus)status userInfo:(NSDictionary *)userInfo;
  52. @end
  53. @interface GDTUnifiedNativeAdView : UIView
  54. /**
  55. 绑定的数据对象
  56. */
  57. @property (nonatomic, strong, readonly) GDTUnifiedNativeAdDataObject *dataObject;
  58. /**
  59. 视频广告的媒体View,绑定数据对象后自动生成,可自定义布局
  60. */
  61. @property (nonatomic, strong, readonly) GDTMediaView *mediaView;
  62. /**
  63. 腾讯广告 LogoView,自动生成,可自定义布局
  64. */
  65. @property (nonatomic, strong, readonly) GDTLogoView *logoView;
  66. /**
  67. 广告 View 时间回调对象
  68. */
  69. @property (nonatomic, weak) id<GDTUnifiedNativeAdViewDelegate> delegate;
  70. /**
  71. * viewControllerForPresentingModalView
  72. * 详解:开发者需传入用来弹出目标页的ViewController,一般为当前ViewController
  73. */
  74. @property (nonatomic, weak) UIViewController *viewController;
  75. /**
  76. * 自定义视频播放器视频播放状态上报器,不能与GDTMediaView同时使用
  77. */
  78. @property (nonatomic, strong, readonly, nullable) id<GDTVideoAdReporter> videoAdReporter;
  79. /**
  80. * 当使用自定义播放器进行播放时,设置广告的容器,此时将不再以GDTUnifiedNativeAdView当作广告容器,
  81. * 当不能使用自定义播放器时,设置此属性无效
  82. */
  83. @property (nonatomic, weak) UIView * _Nullable customPlayerContainer;
  84. /**
  85. 自渲染2.0视图注册方法
  86. @warning 调用方法之前请先判断[dataObject isAdValid]是否为YES,当为NO时调用不生效
  87. @warning 需要注意的是 -[GDTUnifiedNativeAdView registerDataObject:clickableViews:]方法需要避免重复多次调用的情况
  88. @warning 当广告不需要展示并且销毁的时候,需要调用 -[GDTUnifiedNativeAdView unregisterDataObject]方法,即registerDataObject方法需要与unregisterDataObject方法成对调用
  89. @param dataObject 数据对象,必传字段
  90. @param clickableViews 可点击的视图数组,此数组内的广告元素才可以响应广告对应的点击事件
  91. */
  92. - (void)registerDataObject:(GDTUnifiedNativeAdDataObject *_Nonnull)dataObject
  93. clickableViews:(NSArray<UIView *> *_Nonnull)clickableViews;
  94. /**
  95. 自渲染2.0视图注册方法
  96. @warning 调用方法之前请先判断[dataObject isAdValid]是否为YES,当为NO时调用不生效
  97. @warning 需要注意的是 -[GDTUnifiedNativeAdView registerDataObject:clickableViews:customClickableViews:]方法需要避免重复多次调用的情况
  98. @warning 当广告不需要展示并且销毁的时候,需要调用 -[GDTUnifiedNativeAdView unregisterDataObject]方法,即registerDataObject方法需要与unregisterDataObject方法成对调用
  99. @param dataObject 数据对象,必传字段
  100. @param clickableViews 可点击的视图数组,此数组内的广告元素才可以响应广告对应的点击事件
  101. @param customClickableViews 与clickableViews参数已无任何区别,未来在某个SDK版本即将废弃
  102. */
  103. - (void)registerDataObject:(GDTUnifiedNativeAdDataObject *_Nonnull)dataObject
  104. clickableViews:(NSArray<UIView *> *_Nonnull)clickableViews customClickableViews:(NSArray <UIView *> *_Nullable)customClickableViews GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请使用registerDataObject:clickableViews接口");
  105. /**
  106. 注册可点击的callToAction视图的方法
  107. 建议开发者使用GDTUnifiedNativeAdDataObject中的callToAction字段来创建视图,并取代自定义的下载或打开等button,
  108. 调用此方法之前必须先调用registerDataObject:clickableViews
  109. @param callToActionView CTA视图, 系统自动处理点击事件
  110. */
  111. - (void)registerClickableCallToActionView:(UIView *_Nonnull)callToActionView;
  112. /**
  113. 注销数据对象,在 tableView、collectionView 等场景需要复用 GDTUnifiedNativeAdView 时,
  114. 需要在合适的时机,例如 cell 的 prepareForReuse 方法内执行 unregisterDataObject 方法,
  115. 将广告对象与 GDTUnifiedNativeAdView 解绑,具体可参考示例 demo 的 UnifiedNativeAdBaseTableViewCell 类
  116. */
  117. - (void)unregisterDataObject;
  118. @end