123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- //
- // RQVideoModule.m
- // SDJK
- //
- // Created by 张嵘 on 2021/10/25.
- //
- #import "RQVideoModule.h"
- /// 播放视频
- NSString * const RQPlayVideoUrlNotification = @"RQPlayVideoUrlNotification";
- /// 播放视频Model
- NSString * const RQPlayVideoItemKey = @"RQPlayVideoItemKey";
- /// 播放视频ModelArr
- NSString * const RQPlayVideoItemArrKey = @"RQPlayVideoItemArrKey";
- /// 视频Index
- NSString * const RQVideoItemIndexKey = @"RQVideoItemIndexKey";
- /// 视频IndexPath
- NSString * const RQVideoItemIndexPathKey = @"RQVideoItemIndexPathKey";
- /// 视频Source
- NSString * const RQVideoSourceTypeKey = @"RQVideoSourceTypeKey";
- @interface RQVideoModule ()
- @property (nonatomic, readwrite, strong) ZFPlayerControlView *controlView;
- @property (nonatomic, readwrite, assign) RQADDoType adDoType;
- @property (nonatomic, readwrite, assign) ZFPlayerPlaybackState playState;
- @end
- @implementation RQVideoModule
- @def_singleton(RQVideoModule);
- - (void)playVideoWithVideosItem:(VideosItem *)videosItem videosItemArr:(NSArray *)videosItemArr playView:(UIView *)playView scrollView:(UIScrollView *)scrollView {
- if (self.playerController && self.playerController.isPlaying) {
- [self.playerController stop];
- self.playerController = [[MPPlayerController alloc] initWithContainerView:playView];
- [self requestDataWithVideosItem:videosItem videosItemArr:videosItemArr playView:playView scrollView:scrollView];
- } else {
- self.playerController = [[MPPlayerController alloc] initWithContainerView:playView];
- [self requestDataWithVideosItem:videosItem videosItemArr:videosItemArr playView:playView scrollView:scrollView];
- }
- }
- - (void)requestDataWithVideosItem:(VideosItem *)videoItem videosItemArr:(NSArray *)videosItemArr playView:(UIView *)playView scrollView:(UIScrollView *)scrollView {
- @weakify(self)
- if (RQ_Video_Module.currentpPlayVideosItem.isPlaying) {
- RQ_Video_Module.currentpPlayVideosItem.isPlaying = NO;
- }
- [self.playerController.player setExitFullScreenWhenStop:NO];
- self.playerController.playableArray = videosItemArr;
- self.playerController.controlView = self.controlView;
- [self.controlView showTitle:videoItem.title coverURLString:videoItem.coverFileUrl placeholderImage:RQWebVideoImagePlaceholder() fullScreenMode:ZFFullScreenModeAutomatic];
- [self.playerController playWithPlayable:videoItem];
- // [self.playerController.currentPlayerManager pause];
- // [RQ_AD_MANAGER loadAdWithAdType:RQADType_native customView:playView];
-
- // [RQ_AD_MANAGER initCloseBlock:^(RQADDoType adDoType) {
- // self.adDoType = adDoType;
- // ZFPlayerPlaybackState playState = self.playerController.currentPlayerManager.playState;
- // if (adDoType == RQADDoType_Miss) {
- //
- // }
- //
- // switch (adDoType) {
- // case RQADDoType_Success:
- // case RQADDoType_Click:{
- // if (playState == ZFPlayerPlayStatePlaying) {
- // [self.playerController.currentPlayerManager pause];
- // }
- // break;
- // }
- //
- // case RQADDoType_Faild:
- // case RQADDoType_Close:{
- // if (playState == ZFPlayerPlayStatePaused) {
- // NSLog(@"%@",NSStringFromClass([RQControllerHelper.currentViewController class]));
- // if (!self.playerController.player.isFullScreen) {
- // [self.playerController.currentPlayerManager play];
- // self.adDoType = RQADDoType_Miss;
- // } else {
- // if ([NSStringFromClass([RQControllerHelper.currentViewController class]) isEqualToString:@"ZFLandscapeViewController"]) {
- // [self.playerController.currentPlayerManager play];
- // self.adDoType = RQADDoType_Miss;
- // } else {
- //
- // }
- // }
- // }
- // break;
- // }
- //
- // default:
- // break;
- // }
- // }];
-
-
- self.playerController.currentPlayerManager.playerDidToEnd = ^(id<ZFPlayerMediaPlayback> _Nonnull asset) {
- @strongify(self)
- if (!self.playerController.player.isFullScreen) {
- videoItem.isPlaying = NO;
- NSInteger currentIndex = [videosItemArr indexOfObject:videoItem];
- NSInteger nextIndex = (currentIndex + 1 >= self.playerController.playableArray.count)? 0 : currentIndex + 1;
- VideosItem *nextVideoItem = (VideosItem *)videosItemArr[nextIndex];
- nextVideoItem.isPlaying = YES;
- [self requestDataWithVideosItem:nextVideoItem videosItemArr:videosItemArr playView:playView scrollView:scrollView];
- [scrollView zf_scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:nextIndex inSection:0] atScrollPosition:ZFPlayerScrollViewScrollPositionCenteredVertically animated:YES completionHandler:nil];
- } else {
- // [RQ_AD_MANAGER loadAdWithAdType:RQADType_fullScreen customView:nil];
- __block BOOL isSure;
- __block BOOL isShow;
- SCLAlertView *alert = [[SCLAlertView alloc] initWithNewWindow];
- alert.backgroundViewColor = backGroundColor;
- alert.customViewColor = defGreen;
- [alert addButton:@"立即播放 " actionBlock:^(void) {
- isSure = YES;
- RQ_Video_Module.currentpPlayVideosItem.isPlaying = NO;
- NSInteger currentIndex = [videosItemArr indexOfObject:RQ_Video_Module.currentpPlayVideosItem];
- NSInteger nextIndex = (currentIndex + 1 >= self.playerController.playableArray.count)? 0 : currentIndex + 1;
- VideosItem *nextVideoItem = (VideosItem *)videosItemArr[nextIndex];
- [self.playerController playWithPlayable:nextVideoItem];
- nextVideoItem.isPlaying = YES;
- // [self.playerController.currentPlayerManager pause];
- [self.controlView updateTitle:nextVideoItem.title coverURLString:nextVideoItem.coverFileUrl placeholderImage:RQWebVideoImagePlaceholder() fullScreenMode:ZFFullScreenModeAutomatic];
- RQ_Video_Module.currentpPlayVideosItem = nextVideoItem;
- }];
- [alert addTimerToButtonIndex:0 reverse:YES];
- [alert showNotice:@"温馨提示" subTitle:@"即将播放下一个视频" closeButtonTitle:@"取消" duration:5.0f];
- isShow = YES;
- [alert alertIsDismissed:^{
- if (isSure) {
- // [RQ_AD_MANAGER showAdWithAdType:RQADType_fullScreen];
- }
- isShow = NO;
- }];
-
- // for (UIView *view in UIApplication.sharedApplication.keyWindow.subviews) {
- // if ([view isKindOfClass:NSClassFromString(@"UITransitionView")]) {
- // for (UIView *view1 in view.subviews) {
- // if ([view1 isKindOfClass:NSClassFromString(@"UIDropShadowView")]) {
- // for (UIView *view2 in view1.subviews) {
- // [RQ_AD_MANAGER loadAdWithAdType:RQADType_native customView:view2];
- // }
- // }
- // }
- // }
- // }
- }
- };
-
- //延时
- [[[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
- [subscriber sendNext:@"延时1.f秒"];
- return nil;
- }] delay:1.f] subscribeNext:^(id x) {
- NSInteger index = [videosItemArr indexOfObject:videoItem];
- [scrollView zf_scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:ZFPlayerScrollViewScrollPositionCenteredVertically animated:YES completionHandler:nil];
- }];
-
- videoItem.isPlaying = YES;
- RQ_Video_Module.currentpPlayVideosItem = videoItem;
-
- }
- #pragma mark - LazyLoad
- - (ZFPlayerControlView *)controlView {
- if (!_controlView) {
- _controlView = [[ZFPlayerControlView alloc] init];
- @weakify(self)
- [_controlView.portraitControlView.backBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
- @strongify(self)
- [self.playerController stop];
- [RQ_APPDELEGATE.services popViewModelAnimated:YES];
- }];
- }
- return _controlView;
- }
- @end
|