CSJRewardFullScreenBaseVM.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // CSJRewardFullScreenBaseVM.h
  3. // CSJAdSDK
  4. //
  5. // Created by wangyanlin on 2020/8/13.
  6. // Copyright © 2020 bytedance. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "CSJRewardedVideoAdViewController.h"
  10. #import "CSJMaterialMeta.h"
  11. #import "CSJMaterialMeta+Private.h"
  12. #import <StoreKit/StoreKit.h>
  13. #import "CSJRewardedVideoAd.h"
  14. #import "CSJRewardedVideoWebViewController.h"
  15. #import "CSJRewardedVideoDisplayViewController.h"
  16. #import "CSJAdEventTracker.h"
  17. #import "CSJRewardedVideoRequestModel.h"
  18. #import "CSJAPIClient.h"
  19. #import "CSJRewardedVideoModel.h"
  20. #import "CSJVideoAdDelegate.h"
  21. #import "CSJAdActionManager.h"
  22. #import "CSJWebViewController.h"
  23. #import "CSJAdSlot+Private.h"
  24. #import "CSJAppStoreTracker.h"
  25. #import "CSJAppStoreManager.h"
  26. #import "CSJAdAppActionManager.h"
  27. #import "CSJPurePlayableLoadingViewController.h"
  28. #import "CSJUSettingService.h"
  29. #import "CSJUnionMacros.h"
  30. #import "CSJDeepLink.h"
  31. #import "NSString+CSJLocalizedString.h"
  32. #import "CSJDislikeContext.h"
  33. #import "CSJInterstitialAdDelegate.h"
  34. #import "CSJPlayableLandingViewController.h"
  35. typedef enum : NSUInteger {
  36. BUVideoOrientationPortrait, //竖屏
  37. BUVideoOrientationMaskLandscape, //横屏
  38. } BUVideoOrientation;
  39. //static NSInteger leftTime = -2;
  40. //static NSInteger closeTime = -2;
  41. NS_ASSUME_NONNULL_BEGIN
  42. @interface CSJRewardFullScreenBaseVM : NSObject
  43. @property (nonatomic, strong) UIViewController *currentViewController;
  44. //*************** public 需要外部赋值 ***************
  45. @property (nonatomic, strong) id<CSJVideoAdDelegate, CSJInterstitialAdDelegate> rewardedVideoAd;
  46. //*************** 内部和子类使用 ***************
  47. @property (nonatomic, strong) CSJRewardedVideoDisplayViewController *rewardedVideoDisplayViewController;
  48. // 4100 endcardWebVC只负责加载endcard
  49. @property (nonatomic, strong) CSJRewardedVideoWebViewController *endcardWebVC;
  50. // 4100 playableLandingVC负责playable,其中playableLandingVC.playableWebVC为真实的playable页
  51. @property (nonatomic, strong) CSJPlayableLandingViewController *_Nullable playableLandingVC;
  52. @property (nonatomic, strong) CSJPurePlayableLoadingViewController *loadingWebView;
  53. @property (nonatomic, strong) CSJMaterialMeta *materialMeta;
  54. @property (nonatomic, strong) CSJAdSlot *slot;
  55. // 记录播放时间戳
  56. @property (nonatomic, copy) NSString *startTimestamp;
  57. @property (nonatomic, copy) NSString *endTimestamp;
  58. @property (nonatomic, assign) BOOL isChildLandscapeRotate; //子控制器是否自己旋转
  59. @property (nonatomic, assign) BOOL isRotate; //当前控制器是否旋转
  60. @property (nonatomic, assign) BUVideoOrientation videoOrientation;
  61. @property (nonatomic, assign) BOOL supportPortraitLandscape;
  62. @property (nonatomic, assign) NSTimeInterval startLoadTime; //开始预加载时间
  63. @property (nonatomic, assign) NSTimeInterval startShowTime; //开始展示时间
  64. @property (nonatomic, strong) CSJURitSettingModel *ritModel;
  65. //倒计时 纯playable
  66. @property (nonatomic, strong) UILabel *leftSeconds;
  67. @property (nonatomic, strong) BUTimer *leftTimer;
  68. // close关闭按钮
  69. @property (nonatomic, strong) UIButton *closeButton;
  70. @property (nonatomic, strong) UIButton *backBtn;
  71. // 负反馈按钮
  72. @property (nonatomic, strong, readwrite) UIButton *dislikeButton;
  73. // 静音按钮
  74. @property (nonatomic, strong) UIButton *silentButton;
  75. @property (nonatomic, assign) BOOL mute;
  76. @property (nonatomic, assign) BOOL isReportEvent;
  77. // 标志H5告诉纯playable的是否可以发放奖励的标志
  78. @property (nonatomic, assign) BOOL purePlayableSendRewardFromH5;
  79. // 作为是否可以发放奖励的标志,用于控制弹窗是否显示
  80. @property (nonatomic, assign) BOOL couldSendRewardForPurePlayable;
  81. // 当前alertview是否展示 展示就不能开启定时器
  82. @property (nonatomic, assign) BOOL isShowAlertView;
  83. // 相关推荐物料
  84. @property (nonatomic, copy) NSArray *relatedMaterialMetas;
  85. // 判断当前是否已经切换到endcard或者playable页面,防止多次切换
  86. @property (nonatomic, assign) BOOL hadSwitchToWebviewVC;
  87. @property (nonatomic, strong) CSJDislikeContext *dislikeContext;
  88. @property (nonatomic, assign) BUCloseButtonStyle closeButtonStyle;
  89. //vm new property
  90. @property (nonatomic, weak) CSJRewardedVideoAdViewController *rootVC;
  91. @property (nonatomic, assign) NSInteger leftTime;
  92. @property (nonatomic, assign) NSInteger closeTime;
  93. /// pl渲染失败标志位
  94. @property (nonatomic, assign) BOOL playableRenderFailed;
  95. @property (nonatomic, readonly) CSJRewardedVideoWebViewController *currentWebVC;
  96. + (instancetype)createViewModelWithMeta:(CSJMaterialMeta *)meta rootViewController:(CSJRewardedVideoAdViewController *)rootVC slot:(nonnull CSJAdSlot *)slot;
  97. - (instancetype)initViewModelWithMeta:(CSJMaterialMeta *)meta rootViewController:(CSJRewardedVideoAdViewController *)rootVC slot:(nonnull CSJAdSlot *)slot;
  98. - (void)vmLoadData;
  99. - (void)relayoutSubViews;
  100. - (UIInterfaceOrientationMask)vmSupportedInterfaceOrientations;
  101. - (void)openAppStore;
  102. #pragma mark - Child Class Use
  103. //获取播放时长
  104. - (NSInteger)getDurationValue;
  105. //可关闭的时间
  106. - (NSInteger)getCloseTimeValue;
  107. - (void)updateTopBarButtonFrame;
  108. - (void)switchToWebViewMute:(BOOL)mute;
  109. #pragma mark - CSJRewardedVideoDisplayDelegate
  110. - (void)playerDidPlayedRewardTime:(nullable BUPlayer *)player duration:(NSTimeInterval)duration;
  111. #pragma mark - CSJPurePlayableLoadingViewControllerDelegate
  112. - (void)rewardedVideoH5AdDidClickNeedJump:(BOOL)needJump;
  113. - (void)handlePurePlayableBar:(BOOL)show;
  114. - (void)updateSlientBtnState:(BOOL)isMute;
  115. @end
  116. NS_ASSUME_NONNULL_END