CSJSplashViewModel.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. //
  2. // CSJSplashViewModel.h
  3. // CSJAdSDK
  4. //
  5. // Created by ByteDance on 2022/6/6.
  6. //
  7. #import <Foundation/Foundation.h>
  8. #import "CSJAdInfoViewModel.h"
  9. #import "CSJSkipControlModel.h"
  10. #import "CSJViewTracker.h"
  11. NS_ASSUME_NONNULL_BEGIN
  12. @protocol CSJSplashViewModelDelegate <NSObject>
  13. - (void)splashResourceLoadSuccess;
  14. - (void)splashResourceLoadFailWithError:(NSError *)error;
  15. @end
  16. @interface CSJSplashViewModel : NSObject
  17. @property (nonatomic, weak) id<CSJSplashViewModelDelegate> delegate;
  18. // 以下这三个model属性不应该暴漏出来,但目前UI上一些封装好的控件依赖了,改动较大,先暂时保留
  19. @property (nonatomic, strong, readonly, nullable) CSJMaterialMeta *materialMetaModel;
  20. @property (nonatomic, strong, readonly, nullable) CSJAdSlot *adSlot;
  21. @property (nonatomic, strong, readonly) CSJNativeAd *nativeAd;
  22. //
  23. @property (nonatomic, assign, readonly) CGSize adSize;
  24. @property (nonatomic, assign, readonly) NSTimeInterval tolerateTimeout; // 开发者设置的超时时间
  25. @property (nonatomic, assign, readonly) NSTimeInterval renderTimeoutLeft; // 留给渲染的时间
  26. @property (nonatomic, strong, readonly) CSJImage *splashImage;
  27. @property (nonatomic, strong, readonly) CSJImage *logoImage;
  28. @property (nonatomic, assign, readonly) BOOL showDislike;
  29. @property (nonatomic, assign, readonly) BOOL canShowZoomOutView; // 展示点睛
  30. @property (nonatomic, assign, readonly) BOOL canShowCardView; // 展示卡片
  31. @property (nonatomic, assign, readonly) BOOL hideSkipButton;
  32. @property (nonatomic, assign, readonly) CGFloat countDown;
  33. @property (nonatomic, assign, readonly) BOOL showAdLogoIcon; //
  34. @property (nonatomic, assign, readonly) BOOL showAdxLabel; //
  35. @property (nonatomic, copy, readonly) NSString *adxLabelText;
  36. @property (nonatomic, assign, readonly) BOOL showMute; // 展示静音按钮
  37. /// 跳过按钮位置,默认 `BUSkipControlPositionTR`
  38. @property (nonatomic, assign, readonly) BUSkipControlPosition skipBtnPosition;
  39. @property (nonatomic, assign, readonly) NSInteger skipLeftOrRightMargin;
  40. @property (nonatomic, assign, readonly) NSInteger skipTopOrBottomMargin;
  41. - (instancetype)initWithSlot:(CSJAdSlot *)slot adSize:(CGSize)adSize;
  42. - (void)loadAdData;
  43. - (void)setTolerateTimeout:(NSTimeInterval)tolerateTimeout;
  44. - (void)setHideSkipButton:(BOOL)hideSkipButton;
  45. /**
  46. Ad slot material id
  47. */
  48. - (NSString *)getAdCreativeToken;
  49. - (NSDictionary *)mediaExt;
  50. // 预加载模版信息
  51. - (void)preLoadMiddlePageWithAd:(CSJNativeAd *)nativeAd;
  52. - (CSJViewTracker *)trackView:(UIView *)view isCache:(NSNumber *)isCache;
  53. #pragma mark - event tracker
  54. - (void)splashAdClickTrackWithExtra:(NSDictionary *)extraDic;
  55. - (void)splashAdPlayDurationSumTrackWithExtra:(NSDictionary *)extraDic;
  56. - (void)splashAdSkipTrackWithExtra:(NSDictionary *)extraDic;
  57. - (void)splashEnterBackgroundTrackWithExtra:(NSDictionary *)extraDic;
  58. - (void)splashEnterForegroundTrackWithExtra:(NSDictionary *)extraDic;
  59. - (void)splashCardShowTrack;
  60. - (void)splashCardClickTrackWithAdExtra:(NSDictionary *)adExtraDataDic;
  61. - (void)splashCardCloseTrackWithAdExtra:(NSDictionary *)adExtraDataDic;
  62. - (void)splashZoomOutShowTrackWithAdExtra:(NSDictionary *)adExtraDataDic;
  63. - (void)splashZoomOutCloseTrackWithExtra:(NSDictionary *)extraDic;
  64. - (void)splashZoomOutVideoShowTimeTrackWithAdExtra:(NSDictionary *)adExtraDataDic;
  65. #pragma mark - outer call
  66. // 给媒体开屏加载完成回调
  67. - (void)outerCallSend;
  68. // 给媒体回调开屏加载失败回调
  69. - (void)outerCallNoRspWithError:(NSError *)error;
  70. // 给媒体onTimeout回调
  71. - (void)outerCallLoadTimeoutWithError:(NSError *)error;
  72. #pragma mark - duration tracker
  73. - (void)splashAdRenderTrackBegin;
  74. - (void)splashAdRenderTrackEnd;
  75. - (void)splashTotalLoadTimeTrack;
  76. @end
  77. NS_ASSUME_NONNULL_END