| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307 |
- //
- // YBLookVideoVC.m
- // YBVideo
- //
- // Created by YB007 on 2019/11/6.
- // Copyright © 2019 cat. All rights reserved.
- //
- #import "YBLookVideoVC.h"
- #import <ZFPlayer/ZFPlayer.h>
- #import <ZFPlayer/ZFPlayerControlView.h>
- #import <ZFPlayer/ZFIJKPlayerManager.h>
- //#import <ZFPlayer/KSMediaPlayerManager.h>
- #import <ZFPlayer/ZFAVPlayerManager.h>
- #import "YBVideoControlView.h"
- #import "YBLookVideoCell.h"
- #import "YBVipVC.h"
- #import "YBRechargeVC.h"
- #import "YBCommentToolBar.h"
- #import "twEmojiView.h"
- #import "YBTabBarController.h"
- #import "YBUploadProgress.h"
- #import "Loginbonus.h" //每天第一次登录
- #import "ZZCircleProgress.h"
- #import "YBRedProfitVC.h"
- #import "ZFCustomControlView.h"
- #import "YBHomeRedObj.h"
- #import "RegAlertView.h"
- static NSString * const reuseIdentifier = @"collectionViewCell";
- @interface YBLookVideoVC ()<UICollectionViewDelegate,UICollectionViewDataSource,FirstLogDelegate>//homeRedDelegate
- {
- int _lastPlayCellIndex;
- //rk_1-30
- BOOL _isDoubleClickRefresh; //是否是双击刷新
- BOOL _isHome;
- BOOL _needCheckLimit; //是否需要检查播放权限
- BOOL _isLoadingMore; //列表是否正在加载总
- CGFloat lastContenOffset;
- BOOL _isFirstPlay;
- NSDictionary *_currentVideoDic;
-
- RKPlayerLeaveState _playerLeaveState;
-
- Loginbonus *firstLV;
- NSString *bonus_switch;
- NSString *bonus_day;
- NSArray *bonus_list;
- NSString *dayCount;
- NSString *is_bonus;//是否签到
-
- ZZCircleProgress *progressView;
-
- UIButton *_normalBtn;
- NSDictionary *rulesDic;
- }
- @property(nonatomic,strong)NSString *hostID; //视频主人ID
- @property(nonatomic,copy)NSString *videoID; //视频id
- @property (nonatomic, strong) NSMutableArray *videoUrls;
- @property (nonatomic, strong) UICollectionView *collectionView;
- @property (nonatomic, strong) ZFPlayerController *player;
- @property (nonatomic, strong) YBVideoControlView *controlView;
- @property (nonatomic, strong) ZFCustomControlView *fullControlView;
- @property (nonatomic, strong) UIButton *backBtn;
- @property(nonatomic,strong)YBLookVideoCell *playingCell;
- @property(nonatomic,strong)YBCommentToolBar *commentTool;
- @property(nonatomic,strong)YBUploadProgress *uploadView;
- @end
- @implementation YBLookVideoVC
- /// 青少年模式切换,刷新首页
- -(void)youngModeRefresh;{
- [self doubleClickRefreshForYou];
- _isDoubleClickRefresh = NO;
- }
- //rk_1-30
- -(void)doubleClickRefreshForYou {
- if([_fromWhere isEqual:@"MsgTopPubVC"] ||[_fromWhere isEqual:@"NearbyVC"]){
- return;
- }
-
- //双击首页刷新推荐
- _isDoubleClickRefresh = YES;
- _needCheckLimit = YES;
- _pages = 1;
- [self.player stopCurrentPlayingCell];
- if (_videoList.count>0) {
- [_collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
- }
- [_videoList removeAllObjects];
- [MBProgressHUD showMessage:@""];
- [self pullData];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- self.naviView.hidden = YES;
- _lastPlayCellIndex = -1;
- _isDoubleClickRefresh = NO;
- _isLoadingMore = NO;
- lastContenOffset = 0;
- _isFirstPlay = NO;
- _currentVideoDic = @{};
- [self addNotifications];
- [self.view addSubview:self.collectionView];
- if (![PublicObj checkNull:minstr(_fromWhere)]) {
- [self.view addSubview:self.backBtn];
- [self.view addSubview:self.commentTool];
- }else{
- [self.view addSubview:self.uploadView];
- }
-
- self.videoUrls = [NSMutableArray array];
-
- if (!_videoList || _videoList.count <= 0) {
- //首页
- _isHome = YES;
- _needCheckLimit = YES;
- _pages = 1;
- self.videoList = [NSMutableArray array];
- [self pullData];
- }else {
- //其他页面push
- _isHome = NO;
- _needCheckLimit = NO;
- for (NSDictionary *subDic in _videoList) {
- NSString *videoUrl = minstr([subDic valueForKey:@"href"]);
- [_videoUrls addObject:[NSURL URLWithString:[PublicObj decrypt:videoUrl]]];
- }
- [self.player stopCurrentPlayingCell];
- [_collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:_pushPlayIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
- }
-
- /// playerManager
- ZFIJKPlayerManager *playerManager = [[ZFIJKPlayerManager alloc] init];
- NSString *ijkRef = [NSString stringWithFormat:@"Referer:%@\r\n",h5url];
- [playerManager.options setFormatOptionValue:ijkRef forKey:@"headers"];
- //KSMediaPlayer 设置referer需要在 KSMediaPlayerManager 的初始化里边
- // KSMediaPlayerManager *playerManager = [[KSMediaPlayerManager alloc]init];
- // [playerManager setRequestHeader:@{@"Referer":h5url}];
-
- // ZFAVPlayerManager*playerManager = [[ZFAVPlayerManager alloc] init];
- // NSDictionary *header = @{@"Referer":h5url};
- // NSDictionary *optiosDic = @{@"AVURLAssetHTTPHeaderFieldsKey" : header};
- // [playerManager setRequestHeader:optiosDic];
-
-
- /// player的tag值必须在cell里设置
- self.player = [ZFPlayerController playerWithScrollView:self.collectionView playerManager:playerManager containerViewTag:191107];
- self.player.controlView = self.controlView;
- self.player.assetURLs = self.videoUrls;
- self.player.shouldAutoPlay = YES;
- self.player.allowOrentitaionRotation = NO;
- self.player.WWANAutoPlay = YES;
- //不支持的方向
- self.player.disablePanMovingDirection = ZFPlayerDisablePanMovingDirectionVertical;
- //不支持的手势类型
- self.player.disableGestureTypes = ZFPlayerDisableGestureTypesPinch;
- /// 1.0是消失100%时候
- self.player.playerDisapperaPercent = 1.0;
-
- @weakify(self)
- self.player.orientationWillChange = ^(ZFPlayerController * _Nonnull player, BOOL isFullScreen) {
- // @strongify(self)
- // AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
- // app.allowOrentitaionRotation = isFullScreen;
- @zf_strongify(self)
- if (isFullScreen) {
- self.player.disablePanMovingDirection = ZFPlayerDisablePanMovingDirectionNone;
- } else {
- self.player.disablePanMovingDirection = ZFPlayerDisablePanMovingDirectionAll;
- }
- self.player.controlView.hidden = YES;
- };
- self.player.orientationDidChanged = ^(ZFPlayerController * _Nonnull player, BOOL isFullScreen) {
- @strongify(self)
- self.player.controlView.hidden = NO;
- if (isFullScreen) {
- self.player.controlView = self.fullControlView;
- } else {
- self.player.controlView = self.controlView;
- }
- [self orientationDidChangedResetTool];
- };
- self.player.presentationSizeChanged = ^(id<ZFPlayerMediaPlayback> _Nonnull asset, CGSize size) {
- @strongify(self)
- if (size.width >= size.height) {
- self.player.currentPlayerManager.scalingMode = ZFPlayerScalingModeAspectFit;
- } else {
- self.player.currentPlayerManager.scalingMode = ZFPlayerScalingModeAspectFill;
- }
- };
- //功能
- self.player.playerPrepareToPlay = ^(id<ZFPlayerMediaPlayback> _Nonnull asset, NSURL * _Nonnull assetURL) {
- NSLog(@"准备");
- @strongify(self)
- _isFirstPlay = YES;
- [self videoStart];
- };
-
- self.player.playerDidToEnd = ^(id _Nonnull asset) {
- NSLog(@"结束");
- @strongify(self)
- [self.player.currentPlayerManager replay];
- if (_isFirstPlay == YES) {
- _isFirstPlay = NO;
- [self videoEnd];
- [self addLookTimeForToday:[NSString stringWithFormat:@"%.0f",self.player.totalTime]];
- }
- };
- self.player.zf_playerDisappearingInScrollView = ^(NSIndexPath * _Nonnull indexPath, CGFloat playerDisapperaPercent) {
- @strongify(self);
- //这里代表将要切换视频
- if (playerDisapperaPercent == 1) {
- NSLog(@"100%%消失:%f",self.player.currentTime);
- _needCheckLimit = YES;
- if (_isFirstPlay == YES) {
- [self addLookTimeForToday:[NSString stringWithFormat:@"%.0f",self.player.currentTime]];
- }
- YBLookVideoCell *disCell = (YBLookVideoCell*)[self.collectionView cellForItemAtIndexPath:indexPath];
- [disCell releaseObj:self.videoList[indexPath.row] isBackGround:NO];
- //上一个结束动画
- [disCell stopMusicAnimation:self.videoList[indexPath.row]];
- }
- };
- //停止的时候找出最合适的播放
- self.player.zf_scrollViewDidEndScrollingCallback = ^(NSIndexPath * _Nonnull indexPath) {
- @strongify(self)
- if (self.player.playingIndexPath) return;
- if (indexPath.row + 1 >= _videoList.count) {
- //加载下一页数据
- _pages += 1;
- [MBProgressHUD showMessage:@""];
- [self pullData];
- }else {
- [self playTheVideoAtIndexPath:indexPath scrollToTop:NO];
- }
- };
- [self showHomeVideoRed];
- }
- -(void)orientationDidChangedResetTool {
- // NSLog(@"rk===>[tool]:%d",_commentTool.isPrepareEditing);
- // NSLog(@"rk===>[tool]:%@",_commentTool);
- _commentTool.frame = CGRectMake(0,_window_height - 50-ShowDiff, _window_width, 50+ShowDiff);
- _commentTool.emojiV.frame = CGRectMake(0, _window_height, _window_width, EmojiHeight+ShowDiff);
- }
- -(void)showHomeVideoRed{
- if ([[Config getOwnID] intValue] <= 0) {
- }else{
- if([[common getVideoAwardSwitch] isEqual:@"1"]){
- [self requestWatchAward];
- }
- }
- // _isDoubleClickRefresh = NO;
- // [self doubleClickRefreshForYou];
- }
- -(void)hideHomeVideoRed{
- if(progressView){
- [progressView removeFromSuperview];
- progressView =nil;
- }
- [YBHomeRedObj redInstance].lookCount = 0;
- [YBHomeRedObj redInstance].startFloattime = 0.0f;
- [[YBHomeRedObj redInstance]timerEnd];
- _isDoubleClickRefresh = NO;
- [self doubleClickRefreshForYou];
-
- }
- -(void)tapsRedClick{
- YBRedProfitVC *vc = [[YBRedProfitVC alloc]init];
- vc.hidesBottomBarWhenPushed = YES;
- [[YBBaseAppDelegate sharedAppDelegate] pushViewController:vc animated:YES];
- }
- #pragma mark ---红包开始
- -(void)requestWatchAward{
- if(!progressView){
- progressView = [[ZZCircleProgress alloc] initWithFrame:CGRectMake(20,statusbarHeight+24+70, 60, 60) pathBackColor:[UIColor clearColor] pathFillColor:Pink_Cor startAngle:-90 strokeWidth:3];
- progressView.increaseFromLast = YES;//进度条动画是否从上次进度开始动画。默认为NO
- progressView.showPoint = NO;//是否显示默认小圆点。默认为YES
- progressView.showProgressText = NO;
- progressView.duration = 0.1;
- [self.view addSubview:progressView];
- UITapGestureRecognizer *taps = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapsRedClick)];
- [progressView addGestureRecognizer:taps];
- NSDictionary *dic = @{
- @"uid":[Config getOwnID],
- @"touid":[Config getOwnID],
- };
-
- [YBNetworking postWithUrl:@"Video.getWatchVideoSeconds" Dic:dic Suc:^(int code, id info, NSString *msg) {
- if(code == 0){
- NSDictionary *infos = [info firstObject];
- if ([minstr([infos valueForKey:@"can_receive"]) isEqual:@"1"]) {
- [[YBHomeRedObj redInstance]initWithTimer];
- [[YBHomeRedObj redInstance]lookTimerStart];
- [YBHomeRedObj redInstance].startEvent = ^(CGFloat currentTime) {
- dispatch_async(dispatch_get_main_queue(), ^{
- progressView.progress =currentTime;
- NSLog(@"sdsadsadsd-----:%@",_videoID);
- });
- };
- }else{
- [YBHomeRedObj redInstance].lookCount = 60;
- progressView.progress = 1;
- }
- }
- } Fail:^(id fail) {
-
- }];
- }
-
- else{
- [YBHomeRedObj redInstance].startEvent = ^(CGFloat currentTime) {
- dispatch_async(dispatch_get_main_queue(), ^{
- progressView.progress =currentTime;
- NSLog(@"sdsadsadsd--wwewwwww---:%@",_videoID);
- });
- };
- }
-
- }
- -(void)homeRedReloadTime:(CGFloat)currentTime{
- progressView.progress =currentTime;
- }
- -(void)timeGo{
- [[YBHomeRedObj redInstance]timerBegin];
- }
- #pragma mark ---红包结束
- - (BOOL)shouldAutorotate {
- return NO;
- }
- - (UIInterfaceOrientationMask)supportedInterfaceOrientations {
- return UIInterfaceOrientationMaskPortrait;
- }
- - (UIStatusBarStyle)preferredStatusBarStyle {
- return UIStatusBarStyleDefault;
- }
- - (BOOL)prefersStatusBarHidden {
- // return [self.player isFullScreen];
- return NO;
- }
- //-(void)addAllFunctionBtn{
- // if(!_normalBtn){
- // _normalBtn = [UIButton buttonWithType:0];
- // _normalBtn.frame = CGRectMake(_window_width *0.15, _window_height *0.8, _window_width *0.7, 40);
- // _normalBtn.layer.cornerRadius = 20;
- // _normalBtn.layer.masksToBounds = YES;
- // [_normalBtn setBackgroundColor:Pink_Cor];
- // [_normalBtn setTitle:YZMsg(@"进入全功能模式") forState:0];
- // [_normalBtn setTitleColor:UIColor.whiteColor forState:0];
- // _normalBtn.titleLabel.font = [UIFont systemFontOfSize:14];
- // [_normalBtn addTarget:self action:@selector(normalBtnClick) forControlEvents:UIControlEventTouchUpInside];
- //// [self.view addSubview:_normalBtn];
- //// _normalBtn.hidden = YES;
- //
- // }
- //}
- //-(void)normalBtnClick{
- // [self showPrivateRule:rulesDic andIsFirst:NO];
- //}
- - (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
- [IQKeyboardManager sharedManager].enable = NO;
- [IQKeyboardManager sharedManager].enableAutoToolbar = NO;
- [self.controlView.zfVolumeView removeSystemVolumeView];
- _controlView.isDisappear = NO;
- if ([PublicObj checkNull:_fromWhere]) {
- [[NSUserDefaults standardUserDefaults]setObject:@"1" forKey:@"show_share_pop"];
- }
- [[YBDayTaskManager shareInstance]taskOfWatchVideoStart];
-
- [self.playingCell checkLiveOrAdState:_videoList[self.player.playingIndexPath.row]];
- [self ctrUpdateVideoInfo];
-
- //每天第一次登录
- if ([[Config getOwnID]intValue] > 0) {
- [self pullInternet];
- }
- // else{
- // [self getLoginThird];
- // }
-
- // [self addAllFunctionBtn];
- // if ([[Config getOwnID] intValue]>0 && [Config getTranslate]) {
- // _normalBtn.hidden = YES;
- // }
- }
- - (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
- // [self timerBegin];
- if ([[Config getOwnID] intValue] <= 0) {
- }else{
- if([[common getVideoAwardSwitch] isEqual:@"1"]){
- [[YBHomeRedObj redInstance]timerBegin];
- [self requestWatchAward];
- }
- }
- // if (_videoList.count<=0) {
- // return;
- // }
- //当前的开始动画
- [self.playingCell startMusicAnimation:_videoList[self.player.playingIndexPath.row]];
-
- //当从个人中心删除(或者游客登录)了视频时做个标记当返回推荐时候重新请求数据
- NSString *sign_del = [Config getSignOfDelVideo];
- if ([sign_del isEqual:@"1"]&&!_fromWhere) {
- [Config saveSignOfDelVideo:@"0"];
- [_videoList removeAllObjects];
- _needCheckLimit = YES;
- _pages = 1;
- [self pullData];
- }else if (!_isHome && !self.player.currentPlayerManager.isPlaying) {
-
- if (_firstPush) {
- _firstPush = NO;
- if (_pushPlayIndex + 1 >= _videoList.count && ![PublicObj checkNull:minstr(_sourceBaseUrl)]) {
- /// 加载下一页数据
- _pages += 1;
- [MBProgressHUD showMessage:@""];
- [self pullData];
- }else {
- [self startPlayerVideo];
- }
- return;
- }
- //NSLog(@"=====home:%lu",(unsigned long)self.player.currentPlayerManager.playState);
- ///播放离开回来继续播放,暂停离开回来还是暂停状态-start
- if (_playerLeaveState == RKLeaveState_Playing && self.player.currentPlayerManager.playState == 2) {
- [_controlView controlSingleTapped];
- }else if (_playerLeaveState == RKLeaveState_Pause){
-
- }else{
- [self startPlayerVideo];
- }
- ///播放离开回来继续播放,暂停离开回来还是暂停状态-end
-
- }
- }
- /**********************每天第一次登录-->>**********************/
- -(void)pullInternet {
- [YBNetworking postWithUrl:@"User.Bonus" Dic:nil Suc:^(int code, id info, NSString *msg) {
- if (code == 0) {
- NSArray *infos = info;
- bonus_switch = [NSString stringWithFormat:@"%@",[[infos lastObject] valueForKey:@"bonus_switch"]];
- bonus_day = [[infos lastObject] valueForKey:@"bonus_day"];
- bonus_list = [[infos lastObject] valueForKey:@"bonus_list"];
- dayCount = minstr([[infos lastObject] valueForKey:@"count_day"]);
- is_bonus = minstr([[infos lastObject] valueForKey:@"is_bonus"]);
- if ([bonus_switch isEqual:@"1"] &&
- [is_bonus isEqual:@"0"] &&
- [[Config getFirstBonus] isEqual:@"1"] &&
- ![PublicObj isUp] &&
- [YBYoungManager shareInstance].youngSwitch == 0) {
-
- [self firstLog];
- [Config saveFirstBonus:@"0"];
- }
- }
- } Fail:^(id fail) {
- }];
- }
- -(void)firstLog{
- firstLV = [[Loginbonus alloc]initWithFrame:CGRectMake(0, 0, _window_width, _window_height)AndNSArray:bonus_list AndDay:bonus_day andDayCount:dayCount andIsBonus:is_bonus];
- firstLV.delegate = self;
- [self.view addSubview:firstLV];
- }
- #pragma mark - 代理 动画结束释放空视图
- -(void)removeView:(NSDictionary*)dic{
- [firstLV removeFromSuperview];
- firstLV = nil;
- }
- -(void)startPlayerVideo {
- @weakify(self)
- [self.collectionView zf_filterShouldPlayCellWhileScrolled:^(NSIndexPath *indexPath) {
- @strongify(self)
- [self playTheVideoAtIndexPath:indexPath scrollToTop:NO];
- }];
- }
- - (void)viewWillDisappear:(BOOL)animated {
- [super viewWillDisappear:animated];
- [[NSUserDefaults standardUserDefaults]setObject:@"0" forKey:@"show_share_pop"];
- [IQKeyboardManager sharedManager].enable = YES;
- _controlView.isDisappear = YES;
- NSLog(@"=====home:%lu",(unsigned long)self.player.currentPlayerManager.playState);
- // [self timerPause];
- [[YBHomeRedObj redInstance]timerPause];
- ///播放离开回来继续播放,暂停离开回来还是暂停状态-start
- if (self.player.currentPlayerManager.playState == 1) {
- _playerLeaveState = RKLeaveState_Playing;
- [_controlView controlSingleTapped];
- }else if (self.player.currentPlayerManager.playState == 2){
- _playerLeaveState = RKLeaveState_Pause;
- }else {
- [self.player stopCurrentPlayingCell];
- }
- ///播放离开回来继续播放,暂停离开回来还是暂停状态-end
-
- [self.controlView.zfVolumeView addSystemVolumeView];
-
- //停止动画
- [self.playingCell stopMusicAnimation:_videoList[self.player.playingIndexPath.row]];
- [[YBDayTaskManager shareInstance]taskOfWatchVideoEnd];
- }
- #pragma mark - private method
- -(void)pullData{
- if (_isLoadingMore || [PublicObj checkNull:minstr(_sourceBaseUrl)]) {
- [MBProgressHUD hideHUD];
- if ([PublicObj checkNull:minstr(_sourceBaseUrl)]) {
- [self startPlayerVideo];
- }
- return;
- }
- NSString *url = [NSString stringWithFormat:@"%@&p=%@",_sourceBaseUrl,@(_pages)];
- if ([url containsString:@"Video.getRecommendVideos"]) {
- //是首页推荐 url 添加 isstart 并且当 _pages>1 时更改状态为0
- if (_pages>1) {
- [common saveIsStart:@"0"];
- }
- url = [url stringByAppendingFormat:@"&isstart=%@",[common getIsStart]];
- }
- YBWeakSelf;
- _isLoadingMore = YES;
- [YBNetworking postWithUrl:url Dic:nil Suc:^(int code, id info, NSString *msg) {
- [MBProgressHUD hideHUD];
- _isLoadingMore = NO;
- if (code == 0) {
-
- NSArray *infoA = @[];
- if ([info isKindOfClass:[NSArray class]]) {
- infoA = [NSArray arrayWithArray:info];
- }
- if ([_fromWhere isEqual:@"YBTakeSameVideoVC"]) {
- //注意拍摄同款的视频列表在info[0]里边的videolist
- NSDictionary *infoDic = [info firstObject];
- infoA = [NSArray arrayWithArray:[infoDic valueForKey:@"videolist"]];
- }
- if ([_fromWhere isEqual:@"topicDetailsVC"]) {
- //注意标签的视频列表在info[0]里边的list
- NSDictionary *infoDic = [info firstObject];
- infoA = [NSArray arrayWithArray:[infoDic valueForKey:@"list"]];
- }
- if ([_fromWhere isEqual:@"YBCreActListView"]) {
- //注意活动的视频列表在info[0]里边的join_videos
- NSDictionary *infoDic = [info firstObject];
- infoA = [NSArray arrayWithArray:[infoDic valueForKey:@"join_videos"]];
- }
- if (_pages==1) {
- [_videoList removeAllObjects];
- }
- [_videoList addObjectsFromArray:infoA];
- if (_videoList.count<=0) {
- [PublicView showTextNoData:_collectionView text1:@"" text2:YZMsg(@"暂无推荐视频哦~") centerY:0.8];
- }else {
- [PublicView hiddenTextNoData:_collectionView];
- }
-
- [_videoUrls removeAllObjects];
- NSLog(@"beginTime-----:%@",[self getNowTimeTimestamp3]);
- for (NSDictionary *subDic in _videoList) {
- NSString *videoUrl = minstr([subDic valueForKey:@"href"]);
- [_videoUrls addObject:[NSURL URLWithString:[PublicObj decrypt:videoUrl]]];
- NSLog(@"当前完成-----:%@",[self getNowTimeTimestamp3]);
- }
- NSLog(@"endTime-----:%@",[self getNowTimeTimestamp3]);
- weakSelf.player.assetURLs = _videoUrls;
- [weakSelf.collectionView reloadData];
- //准备播放
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [weakSelf startPlayerVideo];
- _isHome = NO;
- });
- if (_isDoubleClickRefresh == YES) {
- _isDoubleClickRefresh = NO;
- [MBProgressHUD showPop:YZMsg(@"刷新成功")];
- }
- }else{
- [MBProgressHUD hideHUD];
- _isLoadingMore = NO;
- [MBProgressHUD showPop:msg];
- }
- } Fail:^(id fail) {
- [MBProgressHUD hideHUD];
- _isLoadingMore = NO;
- }];
-
- }
- -(NSString *)getNowTimeTimestamp3{
- NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
- // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
- [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss.SSSSSS"];
- //现在时间,你可以输出来看下是什么格式
- NSDate *datenow = [NSDate date];
- //----------将nsdate按formatter格式转成nsstring
- NSString *currentTimeString = [formatter stringFromDate:datenow];
- return currentTimeString;
- }
- #pragma mark - 播放
- /// play the video
- - (void)playTheVideoAtIndexPath:(NSIndexPath *)indexPath scrollToTop:(BOOL)scrollToTop {
- /*
- if (_lastPlayCellIndex != -1) {
- YBLookVideoCell *lastCell = (YBLookVideoCell*)[_collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:_lastPlayCellIndex inSection:0]];
- [lastCell releaseObj:_videoList[_lastPlayCellIndex]];
- //上一个结束动画
- [lastCell stopMusicAnimation:_videoList[_lastPlayCellIndex]];
- NSLog(@"playtime:%f",self.player.currentTime);
- }
- NSLog(@"last:%d==cure:%ld",_lastPlayCellIndex,(long)indexPath.row);
- */
- _lastPlayCellIndex = (int)indexPath.row;
- YBLookVideoCell *currentCell = (YBLookVideoCell*)[_collectionView cellForItemAtIndexPath:indexPath];
- [currentCell checkLiveOrAdState:_videoList[indexPath.row]];
- //当前的开始动画
- [currentCell startMusicAnimation:_videoList[indexPath.row]];
-
- _currentVideoDic = _videoList[indexPath.row];
- _videoID = minstr([_currentVideoDic valueForKey:@"id"]);
- NSDictionary *userInfo = [_currentVideoDic valueForKey:@"userinfo"];
- _hostID = minstr([userInfo valueForKey:@"id"]);
-
- if (_commentTool) {
- [_commentTool hiddenEmojiOrKeyBoard];
- _commentTool.player = self.player;
- _commentTool.videoid = _videoID;
- _commentTool.hostid = _hostID;
- [_commentTool resetToolState];
- }
-
- //[self.player playTheIndexPath:indexPath scrollToTop:scrollToTop];
- [self.player playTheIndexPath:indexPath scrollPosition:scrollToTop animated:NO];
- [self.controlView resetControlView];
-
- //player-contentMode
- CGFloat coverRatio = 1.78;
- if (![PublicObj checkNull:minstr([_currentVideoDic valueForKey:@"anyway"])]) {
- coverRatio = [minstr([_currentVideoDic valueForKey:@"anyway"]) floatValue];
- }
- UIViewContentMode imageMode;
- if (coverRatio > 1) {
- imageMode = UIViewContentModeScaleAspectFill;
- } else {
- imageMode = UIViewContentModeScaleAspectFit;
- }
- [self.controlView showCoverViewWithUrl:minstr([_currentVideoDic valueForKey:@"thumb"]) withImageMode:imageMode];
- [self.fullControlView showTitle:@"" coverURLString:minstr([_currentVideoDic valueForKey:@"thumb"]) fullScreenMode:ZFFullScreenModeLandscape];
- self.fullControlView.playDoc = _currentVideoDic;
- /*
- @weakify(self);
- [PublicObj getThumbSizeWithUrl:minstr([_currentVideoDic valueForKey:@"thumb"]) complete:^(CGFloat width, CGFloat height) {
- @strongify(self);
- UIViewContentMode imageMode;
- if (width >= height) {
- imageMode = UIViewContentModeScaleAspectFit;
- } else {
- imageMode = UIViewContentModeScaleAspectFill;
- }
- [self.controlView showCoverViewWithUrl:minstr([_currentVideoDic valueForKey:@"thumb"]) withImageMode:imageMode];
- }];
- */
-
- if (_needCheckLimit) {
- //获取播放权限等
- [self getVideo:indexPath scrollToTop:scrollToTop];
- }
- }
- -(void)getVideo:(NSIndexPath *)indexPath scrollToTop:(BOOL)scrollToTop {
-
- if (_controlView.currentVol>0) {
- [_controlView videoMuted:YES];
- }
- YBWeakSelf;
- [YBNetworking postWithUrl:@"Video.getVideo" Dic:@{@"videoid":_videoID,@"mobileid":[PublicObj getDeviceUUID]} Suc:^(int code, id info, NSString *msg) {
-
- if (code == 0) {
- _needCheckLimit = NO;
- _currentVideoDic = [info firstObject];
- if (_controlView.currentVol>0) {
- [_controlView videoMuted:NO];
- }
-
- //默默替换点赞、评论、分享等数据 (不要给currentCell.dataDic重新赋值,数据会闪动,体验不好)
- if ([_currentVideoDic isKindOfClass:[NSDictionary class]]&&_videoList.count>indexPath.row) {
- [_videoList replaceObjectAtIndex:indexPath.row withObject:_currentVideoDic];
- }
-
- YBLookVideoCell *currentCell = (YBLookVideoCell*)[_collectionView cellForItemAtIndexPath:indexPath];
- if ([[Config getOwnID] isEqual:_hostID] || [[_currentVideoDic valueForKey:@"isattent"] isEqual:@"1"]) {
- currentCell.followBtn.hidden = YES;
- }else{
- [currentCell.followBtn setImage:[UIImage imageNamed:@"home_follow"] forState:0];
- currentCell.followBtn.hidden = NO;
- }
-
- // 青少年模式受限
- if ([YBYoungManager shareInstance].youngBan == 1) {
- [_controlView showPlayBtn];
- }
-
- }
- // else if (code == 1001){
- // //需要登录
- // [PublicObj warnLogin];
- // }
- // else if (code == 1000){
- // //游客次数限制 弹窗模式,
- // [weakSelf limitPlayVideo:-1 andMsg:msg];
- // }
- else if(code == 1002){
- //需要开通Vip
- [weakSelf limitPlayVideo:1 andMsg:msg];
- }else if (code == 1003){
- //需要支付
- [weakSelf limitPlayVideo:2 andMsg:msg];
- }else {
- _needCheckLimit = YES;
- [_controlView showPlayBtn];
- [MBProgressHUD showPop:msg];
- }
- } Fail:nil];
- }
- -(void)limitPlayVideo:(int)limiteType andMsg:(NSString *)msg{
- _needCheckLimit = YES;
- [_controlView showPlayBtn];
-
- //limiteType -1 游客 1:vip 2:pay
- YBWeakSelf;
- NSDictionary *contentDic = @{@"title":@"",@"msg":msg,@"left":YZMsg(@"取消"),@"right":(limiteType==1)?YZMsg(@"开通会员"):YZMsg(@"观看")};
- if (limiteType == -1) {
- contentDic = @{@"title":@"",@"msg":msg,@"left":@"",@"right":YZMsg(@"确认")};
- }
- [YBAlertView showAlertView:contentDic complete:^(int eventType) {
- if (eventType == 1) {
- if ([[Config getOwnID] intValue]<=0) {
- [PublicObj warnLogin];
- return;
- }
- if ([YBYoungManager shareInstance].youngSwitch == 1) {
- [MBProgressHUD showError:YZMsg(@"青少年模式下不支持该功能")];
- return;
- }
- //确认按钮
- if (limiteType == 1) {
- //vip
- YBVipVC *vipVC = [[YBVipVC alloc]init];
- [[YBBaseAppDelegate sharedAppDelegate]pushViewController:vipVC animated:YES];
- }else if(limiteType == 2) {
- //付费观看
- [weakSelf goPay];
- }
- }
- }];
- }
- #pragma mark -
- -(void)goPay {
- YBWeakSelf;
- [MBProgressHUD showMessage:@""];
- [YBNetworking postWithUrl:@"Video.setVideoPay" Dic:@{@"videoid":_videoID} Suc:^(int code, id info, NSString *msg) {
- [MBProgressHUD hideHUD];
- if (code == 0) {
- [MBProgressHUD showPop:msg];
- _needCheckLimit = NO;
- [_controlView hiddenPlayBtn];
- }else if (code == 1004){
- //余额不足
- [weakSelf noMoney:msg];
- }else {
- [MBProgressHUD showPop:msg];
- }
- } Fail:^(id fail) {
- [MBProgressHUD hideHUD];
- }];
- }
- //余额不足提示
- -(void)noMoney:(NSString *)msg {
- NSDictionary *contentDic = @{@"title":@"",@"msg":msg,@"left":YZMsg(@"取消"),@"right":YZMsg(@"去充值")};
- [YBAlertView showAlertView:contentDic complete:^(int eventType) {
- if (eventType == 1) {
- //确认按钮
- YBRechargeVC *chargeVC = [[YBRechargeVC alloc]init];
- [[YBBaseAppDelegate sharedAppDelegate]pushViewController:chargeVC animated:YES];
- }
- }];
- }
- #pragma mark - UIScrollViewDelegate 列表播放必须实现
- - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
- [scrollView zf_scrollViewDidEndDecelerating];
- }
- - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
- [scrollView zf_scrollViewDidEndDraggingWillDecelerate:decelerate];
- if (!decelerate) {
- if (self.player.currentPlayIndex == 0 ) {
- [MBProgressHUD showPop:YZMsg(@"已经到顶了哦")];
- }
- if (self.player.currentPlayIndex+1 == _videoList.count) {
- [MBProgressHUD showPop:YZMsg(@"没有更多视频")];
- }
- }
- }
- - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView {
- [scrollView zf_scrollViewDidScrollToTop];
- }
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
- [scrollView zf_scrollViewDidScroll];
- }
- - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
- [scrollView zf_scrollViewWillBeginDragging];
- lastContenOffset = scrollView.contentOffset.y;
- // [self.player stopCurrentPlayingCell];
- }
- #pragma mark UICollectionViewDataSource
- - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
- return _videoList.count;
- }
- - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
- YBLookVideoCell *cell = (YBLookVideoCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
- cell.player = self.player;
- cell.fromWhere = _fromWhere;
- cell.dataDic = _videoList[indexPath.row];
- YBWeakSelf;
- cell.videoCellEvent = ^(NSString *eventType, NSDictionary *eventDic) {
- [weakSelf cellBlockBack:eventType andInfo:eventDic andIndex:indexPath];
- };
- // if ([YBYoungManager shareInstance].youngSwitch == 1) {
- // cell.giftBtn.hidden = YES;
- // }else{
- // cell.giftBtn.hidden = NO;
- // }
- //
- return cell;
- }
- - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
- if (self.player.currentPlayIndex == indexPath.row) {
- return;
- }
- [self playTheVideoAtIndexPath:indexPath scrollToTop:NO];
- }
- #pragma mark - 功能
- #pragma mark - cell block回调
- -(void)cellBlockBack:(NSString *)eventType andInfo:(NSDictionary *)eventDic andIndex:(NSIndexPath *)indexPath{
- if ([eventType isEqual:@"视频-打赏"]) {
- //视频打赏处理
- [_controlView showGift:eventDic];
-
- }else if([eventType isEqual:@"视频-删除"]){
- //删除事件特殊处理
- if (!_fromWhere) {
- //推荐删除
- [_videoList removeObjectAtIndex:indexPath.row];
- /* //如果个人主页也要求删除后显示下一个(向上、向下滑),将if条件去掉else语句去掉执行下列if
- if (_fromWhere) {
- [Config saveSignOfDelVideo:@"1"];
- if (_videoList.count==0) {
- [self.navigationController popViewControllerAnimated:YES];
- }
- }
- */
- [_videoUrls removeAllObjects];
- for (NSDictionary *subDic in _videoList) {
- NSString *videoUrl = minstr([subDic valueForKey:@"href"]);
- [_videoUrls addObject:[NSURL URLWithString:[PublicObj decrypt:videoUrl]]];
- }
- [self.player stopCurrentPlayingCell];
- if (indexPath.row == _videoList.count) {
- //说明删除的是最后一个
- int toIndex = ((int)indexPath.row-1) < 0 ? 0 : ((int)indexPath.row-1);
- indexPath = [NSIndexPath indexPathForRow:toIndex inSection:0];
- }
- [_collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionNone animated:NO];
- self.player.assetURLs = _videoUrls;
- [self.collectionView reloadData];
- //准备播放
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self startPlayerVideo];
- });
- }else {
- //push页面删除
- [Config saveSignOfDelVideo:@"1"];
- [self.navigationController popViewControllerAnimated:YES];
- }
-
- }else if ([eventType isEqual:@"视频-静音"]) {
- //静音事件特殊处理
- [self voiceRecordOrPlayEvent:eventDic];
- }else {
- //默默更新数据
- //视频-关注、视频-点赞、视频-评论
- NSMutableDictionary *m_dic = [NSMutableDictionary dictionaryWithDictionary:_videoList[indexPath.row]];
- [m_dic addEntriesFromDictionary:eventDic];
- [_videoList replaceObjectAtIndex:indexPath.row withObject:m_dic];
- _currentVideoDic = [NSDictionary dictionaryWithDictionary:m_dic];
- }
- }
- -(void)voiceRecordOrPlayEvent:(NSDictionary *)videoStateDic {
- int muteType = [minstr([videoStateDic valueForKey:@"mutedType"]) intValue];
- int playState = [minstr([videoStateDic valueForKey:@"playState"]) intValue];
- // [_controlView videoMuted:muteType];
- if (muteType == 0 && self.player.currentPlayerManager.isPlaying) {
- return;
- }
- if (playState == ZFPlayerPlayStatePlaying) {
- [_controlView controlSingleTapped];
- }
- //rk_解决语音评论导致声音问题
- if (muteType == 0) {
- [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
- [[AVAudioSession sharedInstance] setActive:YES error:nil];
- }
- }
- #pragma mark - 视频开始观看-结束观看
- -(void)videoStart {
- if ([_hostID isEqual:[Config getOwnID]] || [[Config getOwnID] intValue] <= 0) {
- return;
- }
- NSString *random_str = [PublicObj stringToMD5:[NSString stringWithFormat:@"%@-%@-#2hgfk85cm23mk58vncsark",[Config getOwnID],_videoID]];
- [YBNetworking postWithUrl:@"Video.addView" Dic:@{@"videoid":_videoID,@"random_str":random_str} Suc:^(int code, id info, NSString *msg) {
- NSLog(@"addview-%d-%@-%@",code,info,msg);
- } Fail:nil];
- }
- -(void)videoEnd {
- if ([_hostID isEqual:[Config getOwnID]] || [[Config getOwnID] intValue] <= 0) {
- return;
- }
- NSString *random_str = [PublicObj stringToMD5:[NSString stringWithFormat:@"%@-%@-#2hgfk85cm23mk58vncsark",[Config getOwnID],_videoID]];
- [YBNetworking postWithUrl:@"Video.setConversion" Dic:@{@"videoid":_videoID,@"random_str":random_str} Suc:^(int code, id info, NSString *msg) {
- NSLog(@"setConversion-%d-%@-%@",code,info,msg);
- } Fail:nil];
- }
- #pragma mark - 增加观看时间
- - (void)addLookTimeForToday:(NSString *)length{
- if ([length isEqual:@"0"] || [[Config getOwnID] intValue]<0 || [_hostID isEqual:[Config getOwnID]]) {
- return;
- }
- NSMutableDictionary *mudic = @{
- @"uid":[Config getOwnID],
- @"token":[Config getOwnToken],
- @"length":length
- }.mutableCopy;
- [mudic setObject:[PublicObj sortString:mudic] forKey:@"sign"];
- [YBNetworking postWithUrl:@"Agent.setViewLength" Dic:mudic Suc:^(int code, id info, NSString *msg) {
- NSLog(@"增加时间------------------%@",length);
- } Fail:^(id fail) {
-
- }];
- }
- #pragma mark - set/get
- - (UICollectionView *)collectionView {
- if (!_collectionView) {
- UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
- CGFloat itemWidth = self.view.frame.size.width;
- CGFloat itemHeight = self.view.frame.size.height;
- layout.itemSize = CGSizeMake(itemWidth, itemHeight);
- layout.sectionInset = UIEdgeInsetsZero;
- layout.minimumLineSpacing = 0;
- layout.minimumInteritemSpacing = 0;
- if (self.scrollViewDirection == ZFPlayerScrollViewDirectionVertical) {
- layout.scrollDirection = UICollectionViewScrollDirectionVertical;
- } else if (self.scrollViewDirection == ZFPlayerScrollViewDirectionHorizontal) {
- layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
- }
- _collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:layout];
- _collectionView.delegate = self;
- _collectionView.dataSource = self;
- _collectionView.backgroundColor = Normal_Color;
- /// 横向滚动 这行代码必须写
- _collectionView.zf_scrollViewDirection = self.scrollViewDirection;
- [_collectionView registerClass:[YBLookVideoCell class] forCellWithReuseIdentifier:reuseIdentifier];
- _collectionView.pagingEnabled = YES;
- _collectionView.showsVerticalScrollIndicator = NO;
- _collectionView.showsHorizontalScrollIndicator = NO;
- _collectionView.scrollsToTop = NO;
- _collectionView.bounces = NO;
- _collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
-
- /*
- /// 停止的时候找出最合适的播放
- @weakify(self)
- _collectionView.zf_scrollViewDidStopScrollCallback = ^(NSIndexPath * _Nonnull indexPath) {
- @strongify(self)
- if (self.player.playingIndexPath) return;
- if (indexPath.row + 1 >= _videoList.count) {
- /// 加载下一页数据
- _pages += 1;
- [MBProgressHUD showMessage:@""];
- [self pullData];
- }else {
- [self playTheVideoAtIndexPath:indexPath scrollToTop:NO];
- }
- };
- */
- }
- return _collectionView;
- }
- - (YBVideoControlView *)controlView {
- if (!_controlView) {
- _controlView = [YBVideoControlView new];
- @weakify(self);
- _controlView.ybContorEvent = ^(NSString *eventStr, ZFPlayerGestureControl *gesControl) {
- @strongify(self);
- [self contorEvent:eventStr andGes:gesControl];
- };
- }
- return _controlView;
- }
- -(void)contorEvent:(NSString *)eventStr andGes:(ZFPlayerGestureControl*)gesControl{
- if (_commentTool && _commentTool.isPrepareEditing) {
- [_commentTool hiddenEmojiOrKeyBoard];
- return;
- }
- if ([eventStr isEqual:@"控制-单击"]) {
- if (_needCheckLimit) {
- //获取播放权限等
- [self getVideo:self.player.playingIndexPath scrollToTop:NO];
- }else {
- [_controlView controlSingleTapped];
- }
- }
- if ([eventStr isEqual:@"控制-双击"]) {
- // if ([[Config getOwnID] intValue]<=0 && [Config getTranslate]) {
- // return;
- // }
- if (_videoList.count<=0) {
- return;
- }
- if ([[Config getOwnID] intValue]<=0) {
- [PublicObj warnLogin];
- return;
- }
- NSString *isLike = minstr([_currentVideoDic valueForKey:@"islike"]);
- CGPoint center = [gesControl.doubleTap locationInView:self.controlView];
- [PublicObj doubleClickShowZan:self.controlView withCenter:center];
- //rk_2-23 双击对作品赞,双击不取消赞
- if ([isLike isEqual:@"0"]) {
- [self.playingCell clickLikeBtn];
- }
- }
- if ([eventStr isEqual:@"控制-主页"]) {
- [self.playingCell swipGesGoHome];
- }
- }
- - (UIButton *)backBtn {
- if (!_backBtn) {
- _backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- _backBtn.frame = CGRectMake(0, 24+statusbarHeight, 40, 40);
- [_backBtn setImage:[UIImage imageNamed:@"pub_back"] forState:UIControlStateNormal];
- [_backBtn addTarget:self action:@selector(backClick:) forControlEvents:UIControlEventTouchUpInside];
- }
- return _backBtn;
- }
- - (void)backClick:(UIButton *)sender {
- [self addLookTimeForToday:[NSString stringWithFormat:@"%.0f",self.player.currentTime]];
-
- if ([[[NSUserDefaults standardUserDefaults]objectForKey:@"yb_dsp_reset"]isEqual:@"1"]) {
- [[NSUserDefaults standardUserDefaults]setObject:@"0" forKey:@"yb_dsp_reset"];
- [PublicObj resetVC:[[YBTabBarController alloc]initWithAlert:NO]];
- }else {
- [self.navigationController popViewControllerAnimated:YES];
- }
-
- }
- - (YBCommentToolBar *)commentTool {
- YBWeakSelf;
- if (!_commentTool) {
- _commentTool = [[YBCommentToolBar alloc]initWithFrame:CGRectMake(0,_window_height - 50-ShowDiff, _window_width, 50+ShowDiff) andVCType:0 superView:self.view];
- _commentTool.backgroundColor = RGB_COLOR(@"#201C36", 0.2);
- _commentTool.comToolEvent = ^(NSString *eventType, NSDictionary *eventDic) {
- [weakSelf commentToolCallBack:eventType andEventDic:eventDic];
- };
- }
- return _commentTool;
- }
- -(void)commentToolCallBack:(NSString *)eventType andEventDic:(NSDictionary *)eventDic {
- if ([eventType isEqual:@"工具-游客"]) {
- [PublicObj warnLogin];
- }
- if ([eventType isEqual:@"工具-评论"]) {
- NSString *nums = minstr([eventDic valueForKey:@"comments"]);
- [self.playingCell updateCommentNums:nums];
- }
- if ([eventType isEqual:@"工具-录音"]) {
- [self voiceRecordOrPlayEvent:eventDic];
- }
- }
- - (YBLookVideoCell *)playingCell {
- // if (!_playingCell) {
- _playingCell = (YBLookVideoCell*)[_collectionView cellForItemAtIndexPath:self.player.playingIndexPath];
- // }
- return _playingCell;
- }
- #pragma mark - 通知
- -(void)addNotifications {
- [[NSNotificationCenter defaultCenter]removeObserver:self];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppDidEnterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onAppWillEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:)name:UIKeyboardWillHideNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(uploadProNot:)name:@"uploadProNot" object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(uploadCoverNot:)name:@"uploadCoverNot" object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youngModelTimeEnd:) name:ybYoungModelTimeEndEvent object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youngSiwtchOpen) name:ybYoungModelSwitchChage object:nil];
-
- [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(timeGo) name:@"lookCountGo" object:nil];
- [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(showHomeVideoRed) name:@"showHomeVideoRed" object:nil];
- [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hideHomeVideoRed) name:@"hideHomeVideoRed" object:nil];
- // [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hideBottomFunBtn) name:@"hideBottomFunBtn" object:nil];
- }
- //-(void)hideBottomFunBtn{
- // _normalBtn.hidden = YES;
- //}
- -(void)youngSiwtchOpen {
- if (firstLV) {
- [self removeView:@{}];
- }
- }
- -(void)youngModelTimeEnd:(NSNotification *)not {
- [_controlView showPlayBtn];
- }
- -(void)ctrUpdateVideoInfo {
- if ([[NSUserDefaults standardUserDefaults] objectForKey:@"yb_update_video_on_other"]){
- NSDictionary *newDic = [[NSUserDefaults standardUserDefaults]objectForKey:@"yb_update_video_on_other"];
- if ([[_currentVideoDic valueForKey:@"id"] isEqual:[newDic valueForKey:@"id"]] && self.playingCell) {
- [self.playingCell noticeUpdateUI:newDic];
- [_videoList replaceObjectAtIndex:self.player.currentPlayIndex withObject:newDic];
- }
- }
- }
- #pragma mark - 前后台
- -(void)onAppDidEnterBackground {
- // [self timerPause];
- [[YBHomeRedObj redInstance]timerPause];
- //停止动画
- [self.playingCell stopMusicAnimation:_videoList[self.player.playingIndexPath.row]];
- [self.playingCell releaseObj:self.videoList[self.player.playingIndexPath.row] isBackGround:YES];
- [self uploadViewBackgroundOrForegroundCtr:YES];
- }
- -(void)onAppWillEnterForeground {
- // [self timerBegin];
- [[YBHomeRedObj redInstance]timerBegin];
- //当前的开始动画
- [self.playingCell startMusicAnimation:_videoList[self.player.playingIndexPath.row]];
- [self.playingCell checkLiveOrAdState:_videoList[self.player.playingIndexPath.row]];
- [self uploadViewBackgroundOrForegroundCtr:NO];
- }
- - (void)keyboardWillShow:(NSNotification *)aNotification {
- //获取键盘的高度
- NSDictionary *userInfo = [aNotification userInfo];
- NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
- CGRect keyboardRect = [aValue CGRectValue];
- CGFloat height = keyboardRect.origin.y;
- if (_commentTool) {
- _commentTool.isPrepareEditing = YES;
- _commentTool.faceBtn.selected = NO;
- _commentTool.frame = CGRectMake(0, height - 50, _window_width, 50);
- _commentTool.emojiV.frame = CGRectMake(0, _window_height, _window_width, EmojiHeight+ShowDiff);
- }
- }
- - (void)keyboardWillHide:(NSNotification *)aNotification {
- //键盘消失一定要判断 faceBtn.selected 状态
- if (_commentTool && _commentTool.faceBtn.selected == NO) {
- [_commentTool hiddenEmojiOrKeyBoard];
- _commentTool.isPrepareEditing = NO;
- }
- }
- -(void)uploadProNot:(NSNotification *)aNotification {
- CGFloat notiPro = [aNotification.object floatValue];
- self.uploadProgress = notiPro;
- }
- -(void)uploadCoverNot:(NSNotification *)aNotification {
- UIImage *notiCover = (UIImage *)aNotification.object;
- self.uploadCover = notiCover;
- }
- - (void)dealloc {
- [[NSNotificationCenter defaultCenter]removeObserver:self];
- }
- #pragma mark - 转屏和状态栏
- //- (BOOL)shouldAutorotate {
- // return NO;
- //}
- //- (UIStatusBarStyle)preferredStatusBarStyle {
- // return UIStatusBarStyleLightContent;
- //}
- //- (BOOL)prefersStatusBarHidden {
- // return NO;
- //}
- - (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
- return UIStatusBarAnimationSlide;
- }
- #pragma mark - 视频上传进度 s
- - (YBUploadProgress *)uploadView {
- if (!_uploadView) {
- CGFloat _www = _window_width*0.2;
- CGFloat _hhh = _www*4/3;
- _uploadView = [[YBUploadProgress alloc]initWithFrame:CGRectMake(10, 74+statusbarHeight, _www, _hhh)];
- _uploadView.hidden = YES;
- }
- return _uploadView;;
- }
- - (void)setUploadProgress:(CGFloat)uploadProgress{
- dispatch_async(dispatch_get_main_queue(), ^{
- _uploadProgress = uploadProgress;
- UIApplicationState state = [UIApplication sharedApplication].applicationState;
- if (state == UIApplicationStateActive){
- _uploadView.progress = _uploadProgress;
- if (_uploadProgress >= 1) {
- _uploadView.hidden = YES;
- if (_videoList.count<=0) {
- [self doubleClickRefreshForYou];
- _isDoubleClickRefresh = NO;
- }
- }
- }
- });
- }
- - (void)setUploadCover:(UIImage *)uploadCover{
- dispatch_async(dispatch_get_main_queue(), ^{
- _uploadCover = uploadCover;
- UIApplicationState state = [UIApplication sharedApplication].applicationState;
- if (state == UIApplicationStateActive){
- _uploadView.hidden = NO;
- _uploadView.proImg = _uploadCover;
- }
- });
- }
- -(void)uploadViewBackgroundOrForegroundCtr:(BOOL)isBack {
-
- AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
- if (0 < app.allUploadPro && app.allUploadPro < 1 && isBack == NO) {
- _uploadView.hidden = NO;
- }else{
- _uploadView.hidden = YES;
- if (_videoList.count<=0) {
- [self doubleClickRefreshForYou];
- _isDoubleClickRefresh = NO;
- }
- }
- }
- #pragma mark - 视频上传进度 e
- - (ZFCustomControlView *)fullControlView {
- if (!_fullControlView) {
- YBWeakSelf;
- _fullControlView = [[ZFCustomControlView alloc] init];
- _fullControlView.player = self.player;
- _fullControlView.bottomEvent = ^(NSString *str) {
- if([str isEqual:@"关闭评论"]){
- [[NSNotificationCenter defaultCenter]postNotificationName:UIKeyboardWillHideNotification object:nil];
- }
- };
- }
- return _fullControlView;
- }
- @end
|