CSJExpressRewardFullScreenVM.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // CSJExpressRewardFullScreenVM.h
  3. // CSJAdSDK
  4. //
  5. // Created by wangyanlin on 2020/8/16.
  6. // Copyright © 2020 bytedance. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "CSJNativeExpressRewardedVideoAdView.h"
  10. #import "CSJNativeExpressAdView+Video.h"
  11. #import "CSJNativeExpressAdView+Interval.h"
  12. #import "CSJNativeExpressRewardedVideoAdDisplayViewController.h"
  13. #import "CSJRewardedVideoWebViewController.h"
  14. #import "CSJRewardedVideoModel.h"
  15. #import "CSJMaterialMeta.h"
  16. #import "CSJMaterialMeta+Private.h"
  17. #import "CSJAdSlot+Private.h"
  18. #import "CSJRewardedVideoRequestModel.h"
  19. #import "CSJAPIClient.h"
  20. #import "CSJAdAppActionManager.h"
  21. #import "CSJVideoAdEnum.h"
  22. #import "CSJUnionMacros.h"
  23. #import "CSJPurePlayableLoadingViewController.h"
  24. #import "CSJPlayableLandingViewController.h"
  25. #import "NSString+CSJLocalizedString.h"
  26. #import "CSJAdActionManager.h"
  27. #import "CSJDislikeContext.h"
  28. #import "SKStoreProductViewController+CSJAPublic.h"
  29. #import "CSJNativeExpressRewardedVideoAdViewController.h"
  30. #import <UIKit/UIKit.h>
  31. #import "CSJAdEventTracker.h"
  32. #import "CSJNativeExpressVideoAdDelegate.h"
  33. @class CSJNativeExpressRewardedVideoAdView;
  34. @class CSJNativeAd;
  35. @class CSJAdSlot;
  36. @class CSJDislikeContext;
  37. NS_ASSUME_NONNULL_BEGIN
  38. typedef void(^success)(BOOL isVerify);
  39. typedef void(^failCompletion)(NSError *error);
  40. //static NSInteger leftTime = -2;
  41. //static NSInteger closeTime = -2;
  42. @interface CSJExpressRewardFullScreenVM : NSObject
  43. @property (nonatomic, weak) id<CSJNativeExpressVideoAdDelegate> rewardedVideoAd;
  44. @property (nonatomic, assign) BOOL isRewardedVideo;
  45. @property (nonatomic, strong) CSJAdSlot *adSlot;
  46. @property (nonatomic, copy) dispatch_block_t purePlayableClickBlock;
  47. //====
  48. @property (nonatomic, strong) CSJNativeExpressRewardedVideoAdView *expressAdView;
  49. @property (nonatomic, strong) UIViewController *currentViewController;
  50. @property (nonatomic, strong) CSJNativeExpressRewardedVideoAdDisplayViewController *rewardedVideoDisplayViewController;
  51. // 4100 endcardWebVC只负责加载endcard
  52. @property (nonatomic, strong) CSJRewardedVideoWebViewController *endcardWebVC;
  53. // 4100 playableLandingVC负责playable,其中playableLandingVC.playableWebVC为真实的playable页
  54. @property (nonatomic, strong) CSJPlayableLandingViewController *_Nullable playableLandingVC;
  55. @property (nonatomic, assign) UIInterfaceOrientationMask systemOrientation;
  56. @property (nonatomic, assign) BUNativeExpressVideoOrientation videoOrientation;
  57. @property (nonatomic, assign) BUChildTransformDirection childTransform; //子控制器是否自己旋转
  58. // 记录播放时间戳
  59. @property (nonatomic, copy) NSString *startTimestamp;
  60. @property (nonatomic, copy) NSString *endTimestamp;
  61. /// 纯playable
  62. @property (nonatomic, strong) CSJNativeAd *purePlayableNativeAd;
  63. @property (nonatomic, strong) CSJURitSettingModel *ritModel;
  64. @property (nonatomic, strong) CSJPurePlayableLoadingViewController *loadingWebView;
  65. @property (nonatomic, strong) UILabel *leftSeconds;
  66. @property (nonatomic, strong) BUTimer *leftTimer;
  67. @property (nonatomic, strong) UIButton *closeButton;
  68. @property (nonatomic, strong) UIButton *backBtn;
  69. // 负反馈按钮
  70. @property (nonatomic, strong, readwrite) UIButton *dislikeButton;
  71. @property (nonatomic, strong) UIButton *silentButton;
  72. @property (nonatomic, assign) BOOL mute;
  73. @property (nonatomic, assign) BOOL isReportEvent;
  74. // 标志H5告诉纯playable的是否可以发放奖励的标志
  75. @property (nonatomic, assign) BOOL purePlayableSendRewardFromH5;
  76. // 作为是否可以发放奖励的标志,用于控制弹窗是否显示
  77. @property (nonatomic, assign) BOOL couldSendRewardForPurePlayable;
  78. // 当前alertview是否展示 展示就不能开启定时器
  79. @property (nonatomic, assign) BOOL isShowAlertView;
  80. // 判断当前是否已经切换到endcard或者playable页面,防止多次切换
  81. @property (nonatomic, assign) BOOL hadSwitchToWebviewVC;
  82. // 相关推荐物料
  83. @property (nonatomic, copy) NSArray *relatedMaterialMetas;
  84. @property (nonatomic, strong) CSJDislikeContext *dislikeContext;
  85. @property (nonatomic, assign) BUCloseButtonStyle closeButtonStyle;
  86. @property (nonatomic, assign) NSInteger leftTime;
  87. @property (nonatomic, assign) NSInteger closeTime;
  88. /// pl渲染失败标志位
  89. @property (nonatomic, assign) BOOL playableRenderFailed;
  90. //vm new property
  91. @property (nonatomic, weak) CSJNativeExpressRewardedVideoAdViewController *rootVC;
  92. + (instancetype)createViewModelWithExpressAdView:(CSJNativeExpressRewardedVideoAdView *)expressAdView
  93. nativeAd:(CSJNativeAd *)purePlayableNativeAd
  94. rootViewController:(CSJNativeExpressRewardedVideoAdViewController *)rootVC;
  95. - (instancetype)initViewModelWithExpressAdView:(CSJNativeExpressRewardedVideoAdView *)expressAdView
  96. nativeAd:(CSJNativeAd *)purePlayableNativeAd
  97. rootViewController:(CSJNativeExpressRewardedVideoAdViewController *)rootVC;
  98. - (void)vmLoadData;
  99. - (void)relayoutSubViews;
  100. - (UIInterfaceOrientationMask)vmSupportedInterfaceOrientations;
  101. - (void)switchToPlayable;
  102. - (void)switchToEndcard;
  103. #pragma mark - Child Class Use
  104. @property (nonatomic, readonly) CSJRewardedVideoWebViewController *currentWebVC;
  105. //可关闭的时间
  106. - (NSInteger)getCloseTimeValue;
  107. - (void)updateTopBarButtonFrame;
  108. - (void)sendVerifiedRewardWithDuration:(NSTimeInterval)durationTime type:(BURewardType)rewardType;
  109. - (void)handlePurePlayableBar:(BOOL)show;
  110. - (void)rewardedVideoH5AdDidClickNeedJump:(BOOL)needJump;
  111. - (void)updateSlientBtnState:(BOOL)isMute;
  112. // 发送奖励
  113. - (void)sendVerifiedRewardWithDuration:(NSTimeInterval)durationTime
  114. type:(BURewardType)rewardType;
  115. @end
  116. NS_ASSUME_NONNULL_END