123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190 |
- //
- // YOUPAILCBaseVideoCallVC.m
- // LiveChat
- //
- // Created by 张灿 on 2018/9/17.
- // Copyright © 2018年 caicai. All rights reserved.
- //
- #import "YOUPAILCBaseVideoCallVC.h"
- #import "FUCamera.h"
- #import "FUManager.h"
- #import "FULiveModel.h"
- #import "FUAPIDemoBar.h"
- //#import "YOUPAIAGVideoProcessing.h"
- #import "AppDelegate.h"
- //add by leo v1.0.8 视频中守护
- #import "YOUPAILPGuardHerVC.h"
- #import "UIViewController+TFPresent.h"
- #import "YOUPAIZYXianNvBangVC.h"
- #import "YOUPAILZVideoDiscountWindow.h"
- #import "YOUPAILCReportVC.h"
- #import <SVGAParser.h>
- #import <SVGAPlayer.h>
- #import "YOUPAIXRWalletVC.h"
- #import "LZAlertWindow.h"
- #import "YOUPAILZCommonGiftView.h"
- #import "YOUPAIHRRechargePayWindow.h"
- #import "SDCycleScrollView.h"
- #import "YOUPAIHRWebWindow.h"
- #import "YOUPAIZYAdvertWindow.h"
- #import "NIMMessageMaker.h"
- #import "YOUPAILCIMTool.h"
- @interface YOUPAILCBaseVideoCallVC ()<FUCameraDelegate,FUAPIDemoBarDelegate,SVGAPlayerDelegate,LZChatRoomGiftViewDelegate,LPGuardHerDelegate,SDCycleScrollViewDelegate,ZYAdvertWindowDelegate>
- @property (assign,nonatomic) CGPoint youpaipstartPoint; //用来做清屏
- @property (nonatomic, strong) FUCamera *youpaipmCamera; //Faceunity Camera
- @property (strong, nonatomic) FUAPIDemoBar *youpaipdemoBar; //Tool Bar
- @property (nonatomic, strong) FULiveModel *youpaipliveModel ;
- @property(nonatomic,assign)BOOL youpaipisRecordScreen;
- @property(nonatomic,strong)UIView *youpaiprecoderHideView;
- @property (nonatomic,strong)UIView *youpaipdemoBarBgV;
- @property (nonatomic,strong)UIButton *youpaipgiftPopBtn;
- @property (nonatomic, strong) NSMutableArray *youpaipgifts; // 礼物数据
- @property (nonatomic, strong) NSMutableArray <YOUPAILZChatRoomGiftView *>* youpaipgiftViews;// 礼物
- @property (nonatomic,strong)SVGAPlayer *youpaipsvgaPlayer;
- @property (nonatomic,strong)SVGAParser *youpaipparser;
- @property (nonatomic, assign) BOOL youpaipisPlaySvga;
- @property(nonatomic,strong)UIButton *closeBtn;
- @property(nonatomic,strong)SDCycleScrollView* youpaipscrollView;//右下侧轮播
- @property (nonatomic, strong) NSArray <YOUPAILCBannerModel *> *youpaipbannerArray;
- @property (strong, nonatomic) YOUPAILCFirstRechargeModel *youpaipfirstRechargeModel;
- @end
- @implementation YOUPAILCBaseVideoCallVC
- //@synthesize consumer;
- -(BOOL)prefersStatusBarHidden
- {
- return YES;
- }
- - (FUAPIDemoBar*)youpaipdemoBar{
- if (!_youpaipdemoBar) {
- _youpaipdemoBar = [[FUAPIDemoBar alloc] initWithFrame:CGRectMake(0, KScreenHeight-182, KScreenWidth, 182)];
- if (Is_iPhoneX) {
- _youpaipdemoBar.frame = CGRectMake(0, KScreenHeight-182-30, KScreenWidth, 182);
- }
- _youpaipdemoBar.mDelegate = self ;
- }
- return _youpaipdemoBar ;
- }
- - (FUCamera *)youpaipmCamera {
- if (!_youpaipmCamera) {
- _youpaipmCamera = [[FUCamera alloc] init];
- _youpaipmCamera.delegate = self;
- }
- return _youpaipmCamera;
- }
- - (void)dealloc{
- NSLog(@"dealloc basevideo");
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
-
- }
- - (void)viewWillAppear:(BOOL)animated{
- [super viewWillAppear:animated];
- self.navigationController.navigationBarHidden = YES;
- [LCSaveData saveIsVideo:YES];
- if (self.youpaipliveModel.type == FULiveModelTypeBeautifyFace) {
- [self demoBarSetBeautyDefultParams];
- }
- [self.youpaipmCamera startCapture];
- }
- - (void)viewDidAppear:(BOOL)animated{
- [super viewDidAppear:animated];
- }
- - (void)viewWillDisappear:(BOOL)animated{
- [super viewWillDisappear:animated];
- // if (self.youpaipsvgaPlayer) {
- // [self.youpaipsvgaPlayer removeFromSuperview];
- // }
- [self.youpaipplayer stop];
- //add by leo 此处会导致vc无法释放
- self.youpaipplayer =nil;
- //add by leo 异常退出/被踢 显示处于视频中
- [LCSaveData saveIsVideo:NO];
- self.navigationController.navigationBarHidden = NO;
- }
- - (void)viewDidLoad{
- [super viewDidLoad];
- [self youpaifmonitorShot];
- [self youpaifmonitorRecordVideo];
- self.sx_disableInteractivePop = YES;
- self.youpaipchatArray = [NSMutableArray array];
- self.youpaipsocketManager = [[LCWebSocketManager alloc]initWithDelegate:self serverUrl:self.youpaipvideoModel.youpaipsocket_url roomId:self.youpaipvideoModel.youpaiproom_id];
-
- kAppDelegate.ksocketManager = self.youpaipsocketManager;
- NSString* path = [[NSBundle mainBundle] pathForResource:@"sound"ofType:@"bundle"];
- NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/call_bg.mp3",path]];
- self.youpaipplayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
- [self.youpaipplayer prepareToPlay];
- self.youpaipplayer.numberOfLoops = -1;
- [self.youpaipplayer play];
- [self youpaifinitView];
- [self youpaifinitSvga];
- [self youpaifinitAgora];
- [self youpaifrequestBannerData];
- // NSString* str=[AgoraRtcEngineKit getSdkVersion];
- self.youpaipliveModel = [FUManager shareManager].dataSource[0][0];
- //设置默认曝光度
- [self.youpaipmCamera setExposureValue:0];
- [self.youpaipmCamera startCapture];
- [self demoBarSetBeautyDefultParams];
- [[FUManager shareManager] loadFilter] ;
- [[FUManager shareManager] setAsyncTrackFaceEnable:NO];
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youpaifkeyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youpaifkeyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youpaifwillResignActive) name:UIApplicationWillResignActiveNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterForeground) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didBecomeActive) name:UIApplicationDidBecomeActiveNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(youpaiflLogout) name:@"AbnormalLogout" object:nil];
- }
- - (void)youpaiflLogout{
- [self videoEnd:5];
- }
- - (void)youpaifinitView{
-
- self.youpaipremoteVideo = [[YMMagicView alloc]initWithFrame:CGRectMake(0,0,KScreenWidth,KScreenHeight)];
- self.youpaipremoteVideo.backgroundColor = [UIColor clearColor];
- [self.view addSubview:self.youpaipremoteVideo];
-
- self.youpaiprecoderHideView = [[UIView alloc]init];
- [self.youpaiprecoderHideView setBackgroundColor:[UIColor whiteColor]];
- [self.youpaiprecoderHideView setHidden:YES];
- [self.view addSubview:self.youpaiprecoderHideView];
-
- UIView* msgCoverView = [[UIView alloc]initWithFrame:CGRectMake(-KScreenWidth, 0, KScreenWidth*2, KScreenHeight)];
- msgCoverView.backgroundColor = [UIColor clearColor];
- UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(youpaifmsgViewPanHandel:)];
- [msgCoverView addGestureRecognizer:pan];
- UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(youpaifdoubleTapHandel:)];
- doubleTap.numberOfTapsRequired = 2;
- [msgCoverView addGestureRecognizer:doubleTap];
- self.youpaipmsgCoverView = msgCoverView;
- [self.view addSubview:msgCoverView];
-
- UIView* interView = [[UIView alloc]initWithFrame:CGRectMake(KScreenWidth, 0, KScreenWidth, KScreenHeight)];
- interView.backgroundColor = [UIColor clearColor];
- self.youpaipinterView = interView;
- [msgCoverView addSubview:interView];
-
- //设置顶部按钮
- UIButton* closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [closeBtn setImage:[UIImage imageNamed:@"vqu_images_video_end"] forState:(UIControlStateNormal)];
- self.closeBtn = closeBtn;
- [closeBtn addTarget:self action:@selector(youpaifcloseBtnClick) forControlEvents:(UIControlEventTouchUpInside)];
- [self.youpaipinterView addSubview:closeBtn];
- [closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.offset(14.0f);
- make.top.offset(StatusBarHeight + 4.0f);
- make.size.mas_offset(CGSizeMake(30.0f, 30.0f));
- }];
- closeBtn.hidden = YES;
-
-
- UIView *timeBgv = [[UIView alloc] init];
- timeBgv.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7];
- timeBgv.layer.cornerRadius = 10;
- timeBgv.layer.masksToBounds = YES;
- [self.youpaipinterView addSubview:timeBgv];
-
- UILabel *durationLb = [UILabel new];
- durationLb.textColor = [UIColor whiteColor];
- durationLb.font = [UIFont monospacedDigitSystemFontOfSize:12 weight:(UIFontWeightRegular)];
- durationLb.textAlignment = NSTextAlignmentCenter;
- durationLb.text = @"通话时长: 00:00:00";
- [timeBgv addSubview:durationLb];
- self.youpaiptimeLabel = durationLb;
-
- UILabel *hLine = [UILabel new];
- hLine.backgroundColor = [UIColor whiteColor];
- [timeBgv addSubview:hLine];
-
- UILabel *remainLb = [UILabel new];
- remainLb.textColor = [UIColor whiteColor];
- remainLb.font = [UIFont monospacedDigitSystemFontOfSize:12 weight:(UIFontWeightRegular)];
- remainLb.textAlignment = NSTextAlignmentCenter;
- remainLb.text = @"剩余时长: 00:00:00";
- [timeBgv addSubview:remainLb];
- self.youpaipcancallTimeLab = remainLb;
-
- [timeBgv mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(closeBtn.mas_bottom).offset(10);
- make.left.equalTo(closeBtn.mas_left).offset(0);
- }];
-
- [durationLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(timeBgv.mas_top).offset(10);
- make.left.equalTo(timeBgv.mas_left).offset(10);
- make.right.equalTo(timeBgv.mas_right).offset(-10);
- }];
-
- [hLine mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(durationLb.mas_bottom).offset(6);
- make.left.equalTo(timeBgv.mas_left).offset(10);
- make.right.equalTo(timeBgv.mas_right).offset(-10);
- make.height.mas_equalTo(0.7);
- }];
-
- [remainLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(hLine.mas_bottom).offset(6);
- make.left.equalTo(timeBgv.mas_left).offset(10);
- make.right.equalTo(timeBgv.mas_right).offset(-10);
- make.bottom.equalTo(timeBgv.mas_bottom).offset(-10);
- }];
-
-
-
-
- UIView *demoBarBgV = [[UIView alloc] initWithFrame:self.view.bounds];
- demoBarBgV.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3f];
- demoBarBgV.hidden = YES;
- [self.view addSubview:demoBarBgV];
- self.youpaipdemoBarBgV = demoBarBgV;
- [demoBarBgV addSubview:self.youpaipdemoBar];
- [self.youpaipdemoBar mas_makeConstraints:^(MASConstraintMaker *make) {
- make.bottom.offset(-SafeHeight);
- make.left.right.offset(0.0f);
- make.height.offset(182.0f);
- }];
- // UITapGestureRecognizer* interTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(youpaifinterHandel:)];
- // [self.demoBarBgV addGestureRecognizer:interTap];
-
- self.youpaiplocalVideo = [[YMMagicView alloc]initWithFrame:CGRectMake(KScreenWidth-14.0f-90.0f,StatusBarHeight+4, 90.0f, 120.0f)];
- self.youpaiplocalVideo.backgroundColor = [UIColor blackColor];
- self.youpaiplocalVideo.layer.cornerRadius = 5.0;
- self.youpaiplocalVideo.layer.masksToBounds = YES;
- [self.view addSubview:self.youpaiplocalVideo];
- self.youpaiplocalVideo.hidden = YES;
- UITapGestureRecognizer* localTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(youpaifloaclVideoHandel:)];
- [self.youpaiplocalVideo addGestureRecognizer:localTap];
- //右下侧轮播
- SDCycleScrollView *bannerView1 = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(KScreenWidth - 12.0f - 49.0f, (KScreenHeight-50)/2, 50, 50.0f) delegate:self placeholderImage:[UIImage imageNamed:@""]];
- self.youpaipscrollView = bannerView1;
- bannerView1.pageControlDotSize = CGSizeMake(0, 0);
- bannerView1.autoScrollTimeInterval = 3.0;//2s轮播
- bannerView1.pageControlStyle = SDCycleScrollViewPageContolStyleNone;
- bannerView1.bannerImageViewContentMode = UIViewContentModeScaleAspectFit;
- bannerView1.backgroundColor = [UIColor clearColor];
- [self.view addSubview:bannerView1];
- bannerView1.hidden = YES;
-
- }
- /// 获取banner数据
- - (void)youpaifrequestBannerData{
- @weakify(self);
- [LCHttpHelper requestWithURLString:GetAdvert parameters:@{@"position":@"10"} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- @strongify(self);
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code==0) {//成功
- self.youpaipfirstRechargeModel = [YOUPAILCFirstRechargeModel mj_objectWithKeyValues:dict[@"data"]];
- NSMutableArray *imgUrlArray1 = [NSMutableArray new];
- for (YOUPAILCBannerModel* model in self.youpaipfirstRechargeModel.youpaiplist) {
- [imgUrlArray1 addObject:[LCTools getImageUrlWithAddress:model.youpaipimage]];
- }
- self.youpaipscrollView.imageURLStringsGroup = imgUrlArray1;
- }
- } failure:^(NSError *error) {
- }];
- }
- #pragma mark - SDCycleScrollViewDelegate
- - (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index
- {
- YOUPAILCBannerModel* model = self.youpaipfirstRechargeModel.youpaiplist[index];
- if (model.youpaipwindow_type==2) {
- YOUPAIHRWebWindow *window = [[YOUPAIHRWebWindow alloc] init];
- window.isTouchDismiss = YES;
- window.youpaipurl = model.youpaipwindow_link;
- window.youpaipwidth = model.youpaipwidth;
- window.youpaipheight = model.youpaipheight;
- window.youpaipgravity = model.youpaipgravity;
- [self TFPresentVC:window completion:^{}];
- }else {
- YOUPAIZYAdvertWindow *VC= [[YOUPAIZYAdvertWindow alloc]init];
- VC.youpaipdelegate = self;
- VC.vWidth = KScreenWidth -30;
- VC.vHeight = KScreenWidth-30;
- VC.youpaipimageurl = model.youpaipimage;
- VC.youpaiplink_type = model.youpaiplink_type;
- VC.youpaiplink_url = model.youpaiplink_url;
- VC.isTouchDismiss = YES;
- [self TFPresentVC:VC completion:^{}];
- }
-
-
- }
- #pragma mark -ZYAdvertWindowDelegate
- -(void)youpaifclickAdverImage:(NSInteger)link_type andUrl:(NSString *)link_url
- {
- if (link_type == 1) {
- ZCBaseWebVC* baseWeb = [[ZCBaseWebVC alloc]init];
- baseWeb.contentUrl = link_url;
- [self.navigationController pushViewController:baseWeb animated:YES];
- }else if (link_type==2 || link_type==3){
- [self youpaifpageToStr:link_url];
- }
- }
- - (void)youpaifinitSvga{
- self.youpaipsvgaPlayer = [[SVGAPlayer alloc] initWithFrame:[UIScreen mainScreen].bounds];
- self.youpaipsvgaPlayer.contentMode = UIViewContentModeScaleAspectFit;
- self.youpaipsvgaPlayer.delegate = self;
- [self.view addSubview:self.youpaipsvgaPlayer];
- self.youpaipsvgaPlayer.userInteractionEnabled = NO;
-
- self.youpaipsvgaPlayer.hidden = YES;
- self.youpaipsvgaPlayer.loops = 1;
- self.youpaipsvgaPlayer.clearsAfterStop = true;
- self.youpaipparser = [[SVGAParser alloc] init];
- }
- - (UILabel*)youpaifcreateLabelWithFrame:(CGRect)frame text:(NSString*)contentText{
- UILabel* lab = [[UILabel alloc]initWithFrame:frame];
- lab.textColor = [UIColor whiteColor];
- lab.font = [UIFont systemFontOfSize:11];
- lab.textAlignment = NSTextAlignmentLeft;
- lab.text = contentText;
- return lab;
- }
- - (void)youpaifinitTextToolView{
-
- UIView* textToolView = [[UIView alloc]initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, 65)];
- [LCTools clipCorner:UIRectCornerTopLeft|UIRectCornerTopRight View:textToolView size:CGSizeMake(20.0f, 20.0f)];
- textToolView.backgroundColor = HexColorFromRGB(0xffffff);
- [self.view addSubview:textToolView];
- self.youpaiptextToolView = textToolView;
- //文本
- UITextField *sendTextView = [[UITextField alloc]init];
- sendTextView.layer.cornerRadius = 17.5f;
- sendTextView.clipsToBounds = YES;
- sendTextView.tintColor = ZYPinkColor;
- sendTextView.leftViewMode = UITextFieldViewModeAlways;
- sendTextView.leftView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 13, 35)];
- UIView* rightView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 13, 35)];
- sendTextView.rightView = rightView;
- sendTextView.rightViewMode = UITextFieldViewModeAlways;
- sendTextView.font = [UIFont systemFontOfSize:14];
- sendTextView.placeholder = @"说点什么...";
- sendTextView.backgroundColor = LZF7F8FAColor;
- //sendTextView.delegate = self;
- self.youpaipsendTextF = sendTextView;
- [textToolView addSubview:sendTextView];
-
- //发送
- UIButton *sendMsgBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- sendMsgBtn.titleLabel.font = [UIFont systemFontOfSize:14];
- [sendMsgBtn setTitle:@"发送" forState:UIControlStateNormal];
- [sendMsgBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
- sendMsgBtn.layer.cornerRadius = 17.5f;
- sendMsgBtn.clipsToBounds = YES;
- [sendMsgBtn setBackgroundImage:[LCTools ColorImage:CGSizeMake(62, 35) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:GradientLeftToRight] forState:UIControlStateNormal];
- [sendMsgBtn addTarget:self action:@selector(youpaifsendMsgBtnClick) forControlEvents:UIControlEventTouchUpInside];
- [textToolView addSubview:sendMsgBtn];
-
- [sendTextView makeConstraints:^(MASConstraintMaker *make) {
- make.left.offset(12);
- make.centerY.equalTo(textToolView);
- make.right.equalTo(sendMsgBtn.mas_left).offset(-12.0f);
- make.height.equalTo(35);
- }];
-
- [sendMsgBtn makeConstraints:^(MASConstraintMaker *make) {
- make.right.offset(-12.0f);
- make.centerY.equalTo(textToolView);
- make.height.equalTo(35.0f);
- make.width.equalTo(62);
- }];
-
- }
- - (void)youpaifsetupInterView{
- UIView *timerBgV = [[UIView alloc] init];
- timerBgV.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3f];
- timerBgV.layer.cornerRadius = 10.5f;
- timerBgV.clipsToBounds = YES;
- [self.view addSubview:timerBgV];
- [timerBgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.offset(54.0f);
- make.top.offset(StatusBarHeight + 9.0f);
- make.height.offset(21.0f);
- make.width.greaterThanOrEqualTo(45.0f);
- }];
- // UIImageView *timerImgV = [[UIImageView alloc] init];
- // timerImgV.image = [UIImage imageNamed:@"vqu_images_video_timer"];
- // [timerBgV addSubview:timerImgV];
- // [timerImgV mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.left.offset(6.0f);
- // make.centerY.equalTo(timerBgV);
- // make.size.mas_offset(CGSizeMake(14.0f, 14.0f));
- // }];
-
- // UILabel *timeL = [[UILabel alloc] init];
- // timeL.textColor = [UIColor whiteColor];
- // timeL.font = LCFont12;
- // timeL.text = @"00:00";
- // [timerBgV addSubview:timeL];
- // self.youpaiptimeLabel = timeL;
- // [timeL mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.left.offset(6.0f);
- // // make.left.equalTo(timerImgV.mas_right).offset(4.0f);
- // make.top.bottom.offset(0.0f);
- // make.centerY.equalTo(timerBgV);
- // }];
-
- UIButton *reportBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- reportBtn.hidden = YES;
- reportBtn.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3f];
- reportBtn.frame = CGRectMake(0.0f, StatusBarHeight + 72.0f, 45.0f, 21.0f);
- [LCTools clipCorner:UIRectCornerBottomRight|UIRectCornerTopRight View:reportBtn size:CGSizeMake(10.5f, 10.5f)];
- [reportBtn addTarget:self action:@selector(youpaifreportBtnClick) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:reportBtn];
-
- UILabel *reportL = [[UILabel alloc] init];
- reportL.hidden = YES;
- reportL.textColor = HexColorFromRGB(0xEEEEEE);
- reportL.font = LCFont12;
- reportL.text = @"举报";
- [reportBtn addSubview:reportL];
- [reportL mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.offset(-7.0f);
- make.top.bottom.offset(0.0f);
- }];
-
- UIView *footerView = [[UIView alloc] init];
- [self.youpaipinterView addSubview:footerView];
- [footerView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.right.offset(0.0f);
- make.bottom.offset(0.0f);
- make.height.offset(52.0f + SafeHeight);
- }];
-
- NSMutableArray *btns = [NSMutableArray array];
- // 美颜
- [btns addObject:@{
- @"image":[UIImage imageNamed:@"vqu_images_video_beauty"],
- @"selectedImage":[UIImage imageNamed:@"vqu_images_video_beauty"],
- @"event":@"youpaifbeautyBtnClick"
- }];
- // 切换摄像头
- [btns addObject:@{
- @"image":[UIImage imageNamed:@"vqu_images_video_change"],
- @"selectedImage":[UIImage imageNamed:@"vqu_images_video_change"],
- @"event":@"youpaifswitchBtnClick:"
- }];
- // 麦克风
- [btns addObject:@{
- @"image":[UIImage imageNamed:@"vqu_images_video_sound_on"],
- @"selectedImage":[UIImage imageNamed:@"vqu_images_video_sound_off"],
- @"event":@"youpaifvoiceBtnClick:"
- }];
- if (![[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid]){
- // 关闭摄像头
- [btns addObject:@{
- @"image":[UIImage imageNamed:@"vqu_images_video_on"],
- @"selectedImage":[UIImage imageNamed:@"vqu_images_video_off"],
- @"event":@"youpaifcameraBtnClick:"
- }];
- }
- // 信息
- [btns addObject:@{
- @"image":[UIImage imageNamed:@"vqu_images_video_news"],
- @"selectedImage":[UIImage imageNamed:@"vqu_images_video_news"],
- @"event":@"youpaifmsgBtnClick"
- }];
-
- // 礼物
- [btns addObject:@{
- @"image":[UIImage imageNamed:@"vqu_images_video_gift"],
- @"selectedImage":[UIImage imageNamed:@"vqu_images_video_gift"],
- @"event":@"youpaifgiftBtnClick"
- }];
- CGFloat totalWidth = btns.count * 46.0f + (btns.count - 1) * 15.0f;
- CGFloat startX = (KScreenWidth - totalWidth) / 2.0f;
- CGFloat width = kScreenWidth / btns.count;
- for (NSInteger i = 0; i < btns.count; i ++) {
- NSDictionary *dict = btns[i];
- UIImage *image = dict[@"image"];
- UIImage *selectedImage = dict[@"selectedImage"];
-
- UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
- [btn setImage:image forState:UIControlStateNormal];
- [btn setImage:selectedImage forState:UIControlStateSelected];
- [btn addTarget:self action:NSSelectorFromString(dict[@"event"]) forControlEvents:(UIControlEventTouchUpInside)];
- //CGFloat x = startX + i * 46.0f + i * 15.0f;
- CGFloat x = i * width;
- btn.frame = CGRectMake(x, 0.0f, width, 46.0f);
- [footerView addSubview:btn];
- }
-
- UIButton *giftPopBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [giftPopBtn setBackgroundImage:[UIImage imageNamed:@"vqu_images_video_gift_remind"] forState:UIControlStateNormal];
- [giftPopBtn addTarget:self action:@selector(youpaifgiftBtnClick) forControlEvents:UIControlEventTouchUpInside];
- giftPopBtn.hidden = YES;
- [self.youpaipinterView addSubview:giftPopBtn];
- self.youpaipgiftPopBtn = giftPopBtn;
- [giftPopBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.offset(-startX);
- make.bottom.equalTo(footerView.mas_top).offset(-8.0f);
- make.size.mas_offset(CGSizeMake(157.5f, 33.0f));
- }];
-
- if (![[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid]){
- UIButton *guardBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- [guardBtn setBackgroundImage:[UIImage imageNamed:@"vqu_images_video_guard"] forState:UIControlStateNormal];
- [guardBtn addTarget:self action:@selector(youpaifguardBtnClick) forControlEvents:UIControlEventTouchUpInside];
- [self.youpaipinterView addSubview:guardBtn];
- [guardBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.offset(-14.0f);
- make.bottom.equalTo(giftPopBtn.mas_top).offset(-6.0f);
- make.size.mas_offset(CGSizeMake(57.0f, 45.0f));
- }];
- }
-
- UIView *durationBgL = [[UIView alloc] init];
- durationBgL.backgroundColor = [HexColorFromRGB(0x000000) colorWithAlphaComponent:0.3f];
- durationBgL.layer.cornerRadius = 14.5f;
- durationBgL.clipsToBounds = YES;
- [self.youpaipinterView addSubview:durationBgL];
- [durationBgL mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.offset(14.0f);
- make.bottom.equalTo(footerView.mas_top).offset(-14.0f);
- make.height.offset(29.0f);
- make.width.greaterThanOrEqualTo(46.0f);
- }];
- UIButton *rechargeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- rechargeBtn.hidden = YES;
- [rechargeBtn setBackgroundImage:[LCTools ColorImage:CGSizeMake(46.0f, 29.0f) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:(GradientLeftToRight)] forState:(UIControlStateNormal)];
- rechargeBtn.titleLabel.font = LCFont14;
- [rechargeBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid]){
- [rechargeBtn setTitle:@"提醒" forState:UIControlStateNormal];
- }else{
- [rechargeBtn setTitle:@"充值" forState:UIControlStateNormal];
- }
- rechargeBtn.layer.cornerRadius = 14.5f;
- rechargeBtn.layer.masksToBounds = YES;
- [rechargeBtn addTarget:self action:@selector(youpaiftoRecharge) forControlEvents:UIControlEventTouchUpInside];
- [durationBgL addSubview:rechargeBtn];
- [rechargeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.bottom.top.offset(0.0f);
- make.width.offset(46.0f);
- }];
- // UILabel *cancallTimeLab = [[UILabel alloc] init];
- // cancallTimeLab.textColor = [UIColor whiteColor];
- // cancallTimeLab.font = LCFont14;
- // [durationBgL addSubview:cancallTimeLab];
- // self.youpaipcancallTimeLab = cancallTimeLab;
- // [cancallTimeLab mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.left.mas_equalTo(0);
- // make.right.mas_equalTo(rechargeBtn.mas_left).offset(-7.0f);
- // make.top.bottom.mas_equalTo(0.0f);
- // }];
-
- [self youpaiftimeStart];
- //设置聊天列表
- UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(14, KScreenHeight-KScreenHeight/4-70, 276.0f, KScreenHeight/4) style:UITableViewStylePlain];
- tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
- tableView.showsVerticalScrollIndicator = NO;
- tableView.delegate = self;
- tableView.dataSource = self;
- tableView.backgroundColor = [UIColor clearColor];
- tableView.transform = CGAffineTransformMakeScale(1, -1);
- tableView.rowHeight = UITableViewAutomaticDimension;
- // tableView.estimatedRowHeight = 44.0f;
- tableView.estimatedSectionHeaderHeight = 0.0f;
- tableView.estimatedSectionFooterHeight = 0.0f;
- if (@available(iOS 15.0, *)) {
- tableView.sectionHeaderTopPadding = 0;
- }
- self.youpaipchatTableView = tableView;
- [self.youpaipinterView addSubview:tableView];
- [tableView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.offset(14.0f);
- make.bottom.offset(-(52.0f+SafeHeight+6.0f+29.0f+14.0f));
- make.size.mas_offset(CGSizeMake(kScreenWidth - 28, KScreenHeight/4));
- }];
-
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid] && self.youpaipvideoModel.youpaipchat_open_reduce == 1){
-
- // UIView *discountBgV = [[UIView alloc] init];
- // discountBgV.backgroundColor = [HexColorFromRGB(0x000000) colorWithAlphaComponent:0.3f];
- // discountBgV.layer.cornerRadius = 10.5f;
- // discountBgV.clipsToBounds = YES;
- // [self.view addSubview:discountBgV];
- // [discountBgV mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.right.offset(-14.0f);
- // make.top.equalTo(self.youpaiplocalVideo.mas_bottom).offset(6.0f);
- // make.height.offset(21.0f);
- // make.width.greaterThanOrEqualTo(38.0f);
- // }];
-
- // UIButton *discountBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- // [discountBtn setBackgroundImage:[LCTools ColorImage:CGSizeMake(38.0f, 21.0f) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:(GradientLeftToRight)] forState:(UIControlStateNormal)];
- // discountBtn.titleLabel.font = LCFont12;
- // [discountBtn setTitleColor:[UIColor whiteColor] forState:(UIControlStateNormal)];
- // [discountBtn setTitle:@"减免" forState:UIControlStateNormal];
- // discountBtn.layer.cornerRadius = 10.5f;
- // discountBtn.layer.masksToBounds = YES;
- // [discountBtn addTarget:self action:@selector(youpaifdiscountBtnClick) forControlEvents:UIControlEventTouchUpInside];
- // [discountBgV addSubview:discountBtn];
- // [discountBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.left.bottom.top.offset(0.0f);
- // make.width.offset(38.0f);
- // }];
-
- // UILabel *discountL = [[UILabel alloc] init];
- // discountL.font = LCFont12;
- // discountL.textColor = [UIColor whiteColor];
- // [discountBgV addSubview:discountL];
- // self.youpaipdiscountL = discountL;
- // [discountL mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.right.bottom.top.offset(0.0f);
- //// make.left.equalTo(discountBtn.mas_right).offset(0.0f);
- // make.left.bottom.top.offset(0.0f);
- // }];
-
- UIView *balanceBgV = [[UIView alloc] init];
- balanceBgV.layer.cornerRadius = 10.5f;
- balanceBgV.clipsToBounds = YES;
- balanceBgV.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.3f];
- [self.view addSubview:balanceBgV];
- [balanceBgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.offset(-14.0f);
- make.top.equalTo(self.youpaiplocalVideo.mas_bottom).offset(6.0f);
- make.height.offset(21.0f);
- }];
-
- UILabel *balanceL = [[UILabel alloc] init];
- balanceL.textColor = [UIColor whiteColor];
- balanceL.font = LCFont12;
- [balanceBgV addSubview:balanceL];
- self.youpaipbalanceL = balanceL;
- [balanceL mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.bottom.offset(0.0f);
- make.right.offset(-7.0f);
- make.left.offset(7.0f);
- }];
- }else{
- UIView *discountBgV = [[UIView alloc] init];
- discountBgV.backgroundColor = [HexColorFromRGB(0x000000) colorWithAlphaComponent:0.3f];
- discountBgV.layer.cornerRadius = 10.5f;
- discountBgV.clipsToBounds = YES;
- discountBgV.hidden =YES;
- [self.view addSubview:discountBgV];
- self.youpaipformDiscountBgV = discountBgV;
- [discountBgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.offset(-14.0f);
- make.top.equalTo(self.youpaiplocalVideo.mas_bottom).offset(6.0f);
- make.height.offset(21.0f);
- }];
-
- UILabel *discountL = [[UILabel alloc] init];
- discountL.font = LCFont12;
- discountL.textColor = [UIColor whiteColor];
- [discountBgV addSubview:discountL];
- self.youpaipformDiscountL = discountL;
- [discountL mas_makeConstraints:^(MASConstraintMaker *make) {
- make.bottom.offset(-3.0f);
- make.top.offset(3.0f);
- make.left.offset(7.0f);
- make.right.offset(-7.0f);
- }];
- }
-
- [self youpaifinitTextToolView];
- }
- - (void)youpaifreportBtnClick{
- NSString *uid = [[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqual:self.youpaipvideoModel.youpaipto_uid] ? self.youpaipvideoModel.youpaipfrom_uid : self.youpaipvideoModel.youpaipto_uid;
- YOUPAILCReportVC* report = [[YOUPAILCReportVC alloc]init];
- report.youpaipreport_uid = uid;
- report.youpaiptype = 2;
- [self.navigationController pushViewController:report animated:YES];
- }
- -(void)youpaiftoRecharge
- {
- [UMengRecordTool umengEventCountWithId:RechargeClickVideo];
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid]){
- [self.youpaipsocketManager sendChat:1 content:@"你余额不足哦,快去充值继续聊吧"];
-
- }
- else
- {
- YOUPAIXRWalletVC* coinRecharge = [[YOUPAIXRWalletVC alloc]init];
- [[ZCUtils getCurrentVC].navigationController pushViewController:coinRecharge animated:YES];
-
- }
-
- }
- - (void)youpaifdiscountBtnClick{
- @weakify(self);
- [LCHttpHelper requestWithURLString:VideoGetReduce parameters:@{@"room_id":self.youpaipvideoModel.youpaiproom_id} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- @strongify(self);
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code==0) {//成功
- YOUPAILZVideoDiscountWindow *vc = [[YOUPAILZVideoDiscountWindow alloc] init];
- vc.isTouchDismiss = YES;
- vc.youpaipmodel = [YOUPAILZVideoDiscountModel mj_objectWithKeyValues:[dict objectForKey:@"data"]];
- [vc setConfirmBtnClickBlock:^(YOUPAILZVideoDiscountItemModel * _Nonnull itemModel) {
- @strongify(self);
- [self.youpaipsocketManager discountWithTimerId:itemModel.youpaiptime_id];
- }];
- [self TFPresentVC:vc completion:^{}];
- }
- } failure:^(NSError *error) {
- }];
- }
- - (void)demoBarSetBeautyDefultParams {
- _youpaipdemoBar.mDelegate = nil ;
- [_youpaipdemoBar reloadSkinView:[FUManager shareManager].skinParams];
- [_youpaipdemoBar reloadShapView:[FUManager shareManager].shapeParams];
- [_youpaipdemoBar reloadFilterView:[FUManager shareManager].filters];
- _youpaipdemoBar.mDelegate = self;
- }
- #pragma mark - Agora
- - (void)youpaifinitAgora{
-
- self.youpaipagoraKit = [AgoraRtcEngineKit sharedEngineWithAppId:AgoraID delegate:self];
- NSLog(@"version is %@",[AgoraRtcEngineKit getSdkVersion]);
-
- AgoraVideoEncoderConfiguration *configuration = [[AgoraVideoEncoderConfiguration alloc] initWithSize:AgoraVideoDimension1280x720 frameRate:AgoraVideoFrameRateFps24 bitrate:AgoraVideoBitrateCompatible orientationMode:AgoraVideoOutputOrientationModeAdaptative mirrorMode:AgoraVideoMirrorModeAuto];
-
- [self.youpaipagoraKit setVideoEncoderConfiguration:configuration];
- [self.youpaipagoraKit enableVideo];
- [self.youpaipagoraKit setExternalVideoSource:YES useTexture:YES sourceType:AgoraExternalVideoSourceTypeVideoFrame]; //只允许外部源
- [self.youpaipagoraKit setChannelProfile:AgoraChannelProfileLiveBroadcasting];
- [self.youpaipagoraKit setClientRole:AgoraClientRoleBroadcaster];
- //add by leo 修复视频镜像问题
- // [self.youpaipagoraKit setLocalVideoMirrorMode:AgoraVideoMirrorModeDisabled];
- // [self.youpaipagoraKit enableWebSdkInteroperability:YES];
- //
- AgoraRtcVideoCanvas *videoCanvas = [[AgoraRtcVideoCanvas alloc] init];
- videoCanvas.mirrorMode = AgoraVideoMirrorModeDisabled;
- videoCanvas.uid = 0;
- videoCanvas.view = self.youpaiplocalVideo.displayerOpenGLView;
- videoCanvas.renderMode = AgoraVideoRenderModeHidden;
- self.youpaiplocalCanvas = videoCanvas;
- [self.youpaipagoraKit setupLocalVideo:videoCanvas];
-
-
- }
- #pragma mark - AgoraRtcEngineDelegate
- //收到对方的视频
- - (void)rtcEngine:(AgoraRtcEngineKit *)engine firstRemoteVideoDecodedOfUid:(NSUInteger)uid size:(CGSize)size elapsed:(NSInteger)elapsed
- {
-
- self.youpaiplocalVideo.hidden = NO;
- self.youpaipremoteVideo.hidden = NO;
- self.closeBtn.hidden = NO;
- self.youpaipscrollView.hidden = NO;
- AgoraRtcVideoCanvas *videoCanvas = [[AgoraRtcVideoCanvas alloc] init];
- videoCanvas.renderMode = AgoraVideoRenderModeHidden;
- videoCanvas.mirrorMode = AgoraVideoMirrorModeDisabled;
- self.youpaipremoteCanvas= videoCanvas;
- self.youpaipremoteCanvas.uid = uid;
- self.youpaipremoteCanvas.view = self.youpaipremoteVideo.displayerOpenGLView;
-
- int value = [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
-
- NSLog(@"%d",value);
- }
- //- (void)rtcEngine:(AgoraRtcEngineKit *)engine
- // didVideoMuted:(BOOL)muted byUid:(NSUInteger)uid{
- // if (muted) {//对端关闭了视频
- // self.youpaiplocalCanvas.view = self.youpaipremoteVideo;
- // self.youpaipremoteCanvas.view = self.youpaiplocalVideo;
- // [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- // [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
- // self.youpaiplocalVideo.hidden = YES;
- // }else{
- // self.youpaiplocalCanvas.view = self.youpaiplocalVideo;
- // self.youpaipremoteCanvas.view = self.youpaipremoteVideo;
- // [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- // [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
- // self.youpaiplocalVideo.hidden = NO;
- // }
- //
- //}
- - (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine
- remoteVideoStateChangedOfUid:(NSUInteger)uid state:(AgoraVideoRemoteState)state reason:(AgoraVideoRemoteReason)reason elapsed:(NSInteger)elapsed
- {
- if(reason == AgoraVideoRemoteReasonRemoteMuted){
- self.youpaiplocalCanvas.view = self.youpaipremoteVideo.displayerOpenGLView;
- self.youpaipremoteCanvas.view = self.youpaiplocalVideo.displayerOpenGLView;
- [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
- self.youpaiplocalVideo.hidden = YES;
- [YOUPAIXLVideoShotTool sharedPusher].localVideo = self.youpaipremoteVideo.displayerOpenGLView;
- [YOUPAIXLVideoShotTool sharedPusher].remoteVideo = self.youpaiplocalVideo.displayerOpenGLView;
-
-
-
- }else if(reason == AgoraVideoRemoteReasonRemoteUnmuted){ //远端恢复视频上传
- self.youpaiplocalCanvas.view = self.youpaiplocalVideo.displayerOpenGLView;
- self.youpaipremoteCanvas.view = self.youpaipremoteVideo.displayerOpenGLView;
- [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
- self.youpaiplocalVideo.hidden = NO;
- [YOUPAIXLVideoShotTool sharedPusher].localVideo = self.youpaiplocalVideo.displayerOpenGLView;
- [YOUPAIXLVideoShotTool sharedPusher].remoteVideo = self.youpaipremoteVideo.displayerOpenGLView;
-
- }
-
- }
- - (void)rtcEngine:(AgoraRtcEngineKit *)engine didAudioRouteChanged:(AgoraAudioOutputRouting)routing{
- // [ZCHUDHelper showTitle:[NSString stringWithFormat:@"音频路由已切换%d",routing]];
- }
- //踢人 v1.1.1
- //- (void)rtcEngine:(AgoraRtcEngineKit *_Nonnull)engine connectionChangedToState:(AgoraConnectionStateType)state reason:(AgoraConnectionChangedReason)reason
- //{
- // if(reason ==3)
- // {
- // NSLog(@"收到踢人消息");
- // // [self videoEnd:5];
- // }
- //}
- #pragma mark - Agora Video Source Protocol
- - (BOOL)shouldInitialize {
- return YES;
- }
- - (void)shouldStart {
- [self.youpaipmCamera startCapture];
- }
- - (void)shouldStop {
- [self.youpaipmCamera stopCapture];
- }
- - (void)shouldDispose {
-
- }
- //- (AgoraVideoBufferType)bufferType {
- // return AgoraVideoBufferTypePixelBuffer;
- //}
- //- (AgoraVideoCaptureType)captureType{
- // return AgoraVideoCaptureTypeCamera;
- //}
- #pragma mark - FUCameraDelegate
- bool isNeeded = YES;
- -(void)didOutputVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer {
- if (isNeeded) {
- isNeeded = !isNeeded;
- return;
- }
-
- isNeeded = !isNeeded;
-
- CFAbsoluteTime startTime = CFAbsoluteTimeGetCurrent();
-
- CVPixelBufferRef pixelBuffer = (CVPixelBufferRef)CMSampleBufferGetImageBuffer(sampleBuffer) ;
- CVPixelBufferLockBaseAddress(pixelBuffer, 0);
-
- // CFAbsoluteTime startRenderTime = CFAbsoluteTimeGetCurrent();
-
- //render the items to pixelbuffer
- if ([LCSaveModel getBeautyModel].beautyOpen) {
- [[FUManager shareManager] renderItemsToPixelBuffer:pixelBuffer];
- }
-
-
- // CFAbsoluteTime renderTime = (CFAbsoluteTimeGetCurrent() - startRenderTime);
- //
- //
- // CFAbsoluteTime frameTime = (CFAbsoluteTimeGetCurrent() - startTime);
- //
- // int frameWidth = (int)CVPixelBufferGetWidth(pixelBuffer);
- // int frameHeight = (int)CVPixelBufferGetHeight(pixelBuffer);
-
- CGSize frameSize;
- if (CVPixelBufferGetPixelFormatType(pixelBuffer) == kCVPixelFormatType_32BGRA) {
- frameSize = CGSizeMake(CVPixelBufferGetBytesPerRow(pixelBuffer) / 4, CVPixelBufferGetHeight(pixelBuffer));
- }else{
- frameSize = CGSizeMake(CVPixelBufferGetWidth(pixelBuffer), CVPixelBufferGetHeight(pixelBuffer));
- }
-
-
-
- // push video frame to agora
- // [self.consumer consumePixelBuffer:pixelBuffer withTimestamp:CMSampleBufferGetPresentationTimeStamp(sampleBuffer) rotation:AgoraVideoRotationNone];
- // CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
-
- AgoraVideoFrame *videoFrame = [[AgoraVideoFrame alloc] init];
- videoFrame.format = 12;
- videoFrame.rotation = 0;
- videoFrame.textureBuf = pixelBuffer;
-
- // self.youpaiplocalCanvas.view;
- [[YOUPAIXLVideoShotTool sharedPusher].localVideo displayPixelBuffer:pixelBuffer withLandmarks:NULL count:0 MAX:YES];
-
- // [self.youpaiplocalVideo displayPixelBuffer:pixelBuffer withLandmarks:NULL count:0 MAX:YES];
-
- // BOOL result = [self.youpaipagoraKit pushExternalAudioFrameSampleBuffer:videoFrame];
- BOOL result = [self.youpaipagoraKit pushExternalVideoFrame:videoFrame];
- // pushExternalVideoFrame:videoFrame];
- // CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);
-
- }
- #pragma mark - WebSocketDelegate
- - (void)youpaifrequestSuccess{
-
- }
- - (void)responseConnent{
-
- }
- - (void)responseChoosing:(NSString*)tip{
-
- }
- //add by leo 剩余可通话时间
- - (void)canCallTime:(NSString*)tip
- {
-
- }
- //v1.1.1断连重连
- - (void)videoStart:(NSDictionary*)dict{
- [self.youpaipplayer stop];
- self.youpaipvideoModel.youpaipduration = [dict[@"duration"] integerValue];
- //测试闪退
- /*
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(),^{
- NSString *aSt = nil;
- NSDictionary *dic = @{@"key":aSt};
- });
- */
- //add by leo 防止录屏
- UIScreen * sc = [UIScreen mainScreen];
- if (@available(iOS 11.0, *))
- {
- if (sc.isCaptured)
- {
-
- [self youpaifshowPromptWarningView:YES];
- //add by leo 录屏上报
- [self youpaifshotCheck:2];
-
- }
- }
- else {
-
- // Fallback on earlier versions
-
- }
- //是否主叫
- BOOL callfrom = [[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipfrom_uid];
- if (self.youpaipvideoModel.youpaipporn_check_v2.youpaipis_open && (self.youpaipvideoModel.youpaipporn_check_v2.youpaipcheck_from_user || callfrom)) {
- NSLog(@"鉴黄已打开");
- [YOUPAIXLVideoShotTool sharedPusher].shotCycle = self.youpaipvideoModel.youpaipporn_check_v2.youpaipinterval_time;
- [YOUPAIXLVideoShotTool sharedPusher].periodArray = self.youpaipvideoModel.youpaipporn_check_v2.youpaipperiod_array;
- // [YOUPAIAGVideoProcessing registerVideoPreprocessing:self.youpaipagoraKit];
- //老版本
- /*
- [YOUPAIXLVideoShotTool sharedPusher].shotCycle = self.videoModel.porn_check.interval_time;
- [YOUPAIXLVideoShotTool sharedPusher].period = self.videoModel.porn_check.period;
- */
- [YOUPAIXLVideoShotTool sharedPusher].room_id = self.youpaipvideoModel.youpaiproom_id;
- [YOUPAIXLVideoShotTool sharedPusher].localVideo = self.youpaiplocalVideo.displayerOpenGLView;
- [YOUPAIXLVideoShotTool sharedPusher].remoteVideo = self.youpaipremoteVideo.displayerOpenGLView;
- [YOUPAIXLVideoShotTool sharedPusher].isPornCheckOpen = YES;
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipfrom_uid]){//自己是被叫端
- [YOUPAIXLVideoShotTool sharedPusher].isFrom = YES;
- [YOUPAIXLVideoShotTool sharedPusher].uid = self.youpaipvideoModel.youpaipto_uid;
- }else{
- [YOUPAIXLVideoShotTool sharedPusher].isFrom = NO;
- [YOUPAIXLVideoShotTool sharedPusher].uid = self.youpaipvideoModel.youpaipfrom_uid;
-
- }
- [YOUPAIXLVideoShotTool start];
- }
-
- //加入声网频道
- //modify by leo fix bug object unrelease
- @weakify(self);
- int status = [self.youpaipagoraKit joinChannelByToken:nil channelId:self.youpaipvideoModel.youpaiproom_id info:nil uid:[[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id integerValue] joinSuccess:^(NSString *channel, NSUInteger uid, NSInteger elapsed) {
- @strongify(self);
- if([self.youpaipagoraKit isSpeakerphoneEnabled]){
- [self.youpaipagoraKit setEnableSpeakerphone:YES];
- }
- // self.localVideo.hidden = YES;
-
- [UIApplication sharedApplication].idleTimerDisabled = YES;
- }];
- if (status<0) {
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
- NSString *cachesDir = [paths objectAtIndex:0];
- // 构建文件路径
- NSString *filePath = [cachesDir stringByAppendingPathComponent:@"agorasdk.log"];
-
- // 检查文件是否存在
- if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
- [LCCommonHttp uploadWithLocalFile:filePath successBlock:nil];
- }
- }
- }
- //1主动取消 2。拒绝 3.超时 4.被叫者挂断 5.主叫者挂断 6.费用不足
- - (void)videoEnd:(NSInteger)type{
- [self.youpaipsocketManager stopConnect];
- self.youpaipsocketManager = nil;
- kAppDelegate.ksocketManager = nil;
- [LCSaveData saveIsVideo:NO];
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
- if (self.youpaiptimer) {
- dispatch_source_cancel(self.youpaiptimer);//删除GCD定时器
- self.youpaiptimer = nil;
- }
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self.youpaipmCamera stopCapture];
- dispatch_async(self.youpaipmCamera.videoCaptureQueue, ^{
- [[FUManager shareManager] destoryItems];
- });
- [self.youpaipagoraKit setExternalVideoSource:YES useTexture:YES sourceType:AgoraExternalVideoSourceTypeVideoFrame]; //只允许外部源
- [self.youpaipagoraKit leaveChannel:nil];
- [AgoraRtcEngineKit destroy];
- if (type==11) {
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid]){//自己是被叫端
- [self.navigationController dismissViewControllerAnimated:YES completion:^{
-
- }];
- }else{//自己是主叫端
- [YOUPAIXLVideoShotTool stop];
- YOUPAILCVideoFinishVC* finish = [[YOUPAILCVideoFinishVC alloc]init];
- finish.youpaipvideoModel = self.youpaipvideoModel;
- finish.role = 1;
- [self.navigationController pushViewController:finish animated:YES];
- }
- }
- if (type==4|| type==5 || type==6 || type==10) {//去往评价结束界面
- //add by leo 关闭上传截图 定时器
- [YOUPAIXLVideoShotTool stop];
- YOUPAILCVideoFinishVC* finish = [[YOUPAILCVideoFinishVC alloc]init];
- finish.youpaipvideoModel = self.youpaipvideoModel;
- finish.role = 2;
- [self.navigationController pushViewController:finish animated:YES];
- }else{
- [self.navigationController dismissViewControllerAnimated:YES completion:^{
- NSLog(@"2222222");
- }];
- }
- });
- }
- //刷新会话页面的chatTableView
- - (void)reciveTxt:(NSDictionary*)dict{
-
- YOUPAILCVideoChatMessageModel* msgModel = [YOUPAILCVideoChatMessageModel mj_objectWithKeyValues:dict];
- if ([msgModel.youpaipfrom_uid isEqual:self.youpaipvideoModel.youpaipfrom_uid]) {
- msgModel.youpaipfrom_nickname = self.youpaipvideoModel.youpaipfrom_nickname;
- msgModel.youpaipto_nickname = self.youpaipvideoModel.youpaipto_nickname;
- msgModel.youpaipfrom_avatar = self.youpaipvideoModel.youpaipfrom_avatar;
- msgModel.youpaipto_avatar = self.youpaipvideoModel.youpaipto_avatar;
- }else{
- msgModel.youpaipfrom_nickname = self.youpaipvideoModel.youpaipto_nickname;
- msgModel.youpaipto_nickname = self.youpaipvideoModel.youpaipfrom_nickname;
- msgModel.youpaipfrom_avatar = self.youpaipvideoModel.youpaipto_avatar;
- msgModel.youpaipto_avatar = self.youpaipvideoModel.youpaipfrom_avatar;
- }
- NSLog(@"reciveTxt 消息类型 = %ld",msgModel.youpaiptype);
- NSLog(@"reciveTxt content = %@",msgModel.youpaipcontent);
-
-
- [self.youpaipchatArray insertObject:msgModel atIndex:0];
- [self.youpaipchatTableView beginUpdates];
- [self.youpaipchatTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:(UITableViewRowAnimationNone)];
- [self.youpaipchatTableView endUpdates];
- [self.youpaipchatTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:(UITableViewScrollPositionNone) animated:YES];
-
- if (msgModel.youpaiptype == 6 && [self.youpaipvideoModel.youpaipto_uid isEqual:[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id]) {
- [ZCHUDHelper showTitle:@"减免成功"];
- return;
- }
-
- NSDictionary* giftDict = [msgModel.youpaipcontent mj_JSONObject];
- NSString* gifttype = [giftDict objectForKey:@"gifttype"];
- NSString* giftsvga = [giftDict objectForKey:@"giftsvga"];
-
- if (giftsvga.length == 0) {
- gifttype = [dict objectForKey:@"gifttype"];
- giftsvga = [dict objectForKey:@"giftsvga"];
- }
-
- NSInteger link_type = [[dict objectForKey:@"link_type"] integerValue];
- NSString *link_url = [dict objectForKey:@"link_url"];
-
-
- if (msgModel.youpaiptype == 1 && link_type == 2 && [link_url isEqual:@"rechargeCoin"]){//礼物
- LZAlertAction *cancelAction = [LZAlertAction actionWithTitle:@"舍不得" handler:^(LZAlertAction *action) {
-
- }];
- cancelAction.cornerRadius = 24.0f;
- cancelAction.color = LZ273145Color;
- cancelAction.bgColor = LZF5F4F7Color;
- LZAlertAction *confimAction = [LZAlertAction actionWithTitle:@"去充值" handler:^(LZAlertAction *action) {
- [[NSNotificationCenter defaultCenter] postNotificationName:@"InsufficientBalanceNotice" object:nil userInfo:nil];
-
- // YOUPAIHRRechargePayWindow *payWindow = [YOUPAIHRRechargePayWindow new];
- // payWindow.isTouchDismiss = NO;
- // [self.navigationController TFPresentVC:payWindow completion:^{
- //
- // }];
- YMAccountBalanceViewModel *accountBalanceVM = [[YMAccountBalanceViewModel alloc]initWithParams:@{
- ParamsId:@([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id intValue])
- }];
- YMAccountBalanceRechargePopupView *customView = [[YMAccountBalanceRechargePopupView alloc]init];
- [customView ym_bindViewModel:accountBalanceVM];
- YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:nil popStyle:YMPopupStyleSmoothFromBottom dismissStyle:YMDismissStyleSmoothToBottom];
- popupView.priority = 999;
- popupView.cornerRadius = adapt(10);
- popupView.rectCorners = UIRectCornerTopLeft|UIRectCornerTopRight;
- popupView.positionStyle = YMPositionStyleBottom;
- popupView.isClickBgDismiss = YES;
- popupView.isHideBg = NO;
- popupView.bgAlpha = 0.5;
- [popupView pop];
-
- @weakify(popupView)
- customView.dismissBlock = ^{
- @strongify(popupView)
- [popupView dismissWithStyle:YMDismissStyleSmoothToBottom duration:2.0];
- };
- }];
- confimAction.cornerRadius = 24.0f;
- confimAction.color = [UIColor whiteColor];
- confimAction.bgColor = [UIColor colorWithPatternImage:[LCTools ColorImage:CGSizeMake((KScreenWidth - 105.0f) / 2.0f, 48.0f) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:GradientLeftToRight]];
- LZAlertWindow *alert = [LZAlertWindow alertWithTitle:@"提示" content:@"您的钻石数量不足,去购买" action:@[cancelAction,confimAction]];
- alert.contentTextAlignment = NSTextAlignmentCenter;
- [self TFPresentVC:alert completion:^{}];
- }
-
- if (msgModel.youpaiptype==3){//礼物
- // NSDictionary* giftDict = [msgModel.content mj_JSONObject];
- NSString* giftcount = [giftDict objectForKey:@"giftcount"];
- NSInteger giftid = [[giftDict objectForKey:@"giftid"] integerValue];
- // NSString* gifttype = [giftDict objectForKey:@"gifttype"];
- // NSString* giftsvga = [giftDict objectForKey:@"giftsvga"];
- NSString* gifticon = [giftDict objectForKey:@"gifticon"];
-
- YOUPAILZLiveGIftModel *giftModel = [[YOUPAILZLiveGIftModel alloc] init];
- giftModel.youpaipavatar = msgModel.youpaipfrom_avatar;
- giftModel.youpaipnickName = msgModel.youpaipfrom_nickname;
- giftModel.youpaipgiftImage = gifticon;
- giftModel.youpaipgiftCount = [giftcount integerValue];
- giftModel.youpaipuser_id = [msgModel.youpaipfrom_uid integerValue];
- giftModel.youpaipgift_id = giftid;
- giftModel.youpaipgift_svga = giftsvga;
- giftModel.youpaipgift_type = [gifttype integerValue];
- giftModel.youpaipto_uid = [msgModel.youpaipto_uid integerValue];
- giftModel.youpaipto_nickName= msgModel.youpaipto_nickname;
-
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqual:msgModel.youpaipfrom_uid]) {
- [self.youpaipgifts insertObject:giftModel atIndex:0];
- }else{
- [self.youpaipgifts addObject:giftModel];
- }
-
- [self youpaifeditGiftView];
-
- }else if (msgModel.youpaiptype==1 && giftsvga.length != 0){
- // NSDictionary* giftDict = [msgModel.content mj_JSONObject];
- NSString* giftcount = [dict objectForKey:@"giftcount"];
- NSInteger giftid = -1;
- // NSString* gifttype = [giftDict objectForKey:@"gifttype"];
- // NSString* giftsvga = [giftDict objectForKey:@"giftsvga"];
- NSString* gifticon = [dict objectForKey:@"gifticon"];
-
- YOUPAILZLiveGIftModel *giftModel = [[YOUPAILZLiveGIftModel alloc] init];
- giftModel.youpaipavatar = msgModel.youpaipto_avatar;
- giftModel.youpaipnickName = msgModel.youpaipto_nickname;
- giftModel.youpaipgiftImage = gifticon;
- giftModel.youpaipgiftCount = [giftcount integerValue];
- giftModel.youpaipuser_id = [msgModel.youpaipfrom_uid integerValue];
- giftModel.youpaipgift_id = giftid;
- giftModel.youpaipgift_svga = giftsvga;
- giftModel.youpaipgift_type = [gifttype integerValue];
- giftModel.youpaipto_uid = [msgModel.youpaipfrom_uid integerValue];
- giftModel.youpaipto_nickName= msgModel.youpaipfrom_nickname;
-
- if ([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqual:msgModel.youpaipfrom_uid]) {
- [self.youpaipgifts insertObject:giftModel atIndex:0];
- }else{
- [self.youpaipgifts addObject:giftModel];
- }
-
- [self youpaifeditGiftView];
- }
-
- }
- #pragma mark -消息来自聊天房间
- - (void)giftMsgForIm:(YOUPAILZLiveGIftModel *)chatRoomGiftModel{
- NSString *youpaipfrom_uid = self.youpaipvideoModel.youpaipfrom_uid; //呼叫者UID
- NSString *youpaipto_uid = self.youpaipvideoModel.youpaipto_uid; // 被叫者UID
-
- // 只播放当前房间正在交流的 礼物svga
- if([youpaipto_uid integerValue] == chatRoomGiftModel.youpaipuser_id ||
- [youpaipfrom_uid integerValue] == chatRoomGiftModel.youpaipuser_id){
- [self.youpaipgifts insertObject:chatRoomGiftModel atIndex:0];
- [self youpaifeditGiftView];
- }
- }
- //视频过程中 收到同房间的消息
- - (void)videoingRecMessage:(NIMMessage *)message{
- NSString *youpaipto_uid = self.youpaipvideoModel.youpaipto_uid; //被叫者UID
- NSString *youpaipfrom_uid = self.youpaipvideoModel.youpaipfrom_uid; //呼叫者UID
- NSString *currentAccount = [[[NIMSDK sharedSDK] loginManager] currentAccount];
- // BOOL recIsMe = [message.session.sessionId isEqualToString:currentAccount]; // 收到消息是发给我的
-
- // 且发消息的人 是我们正在视频中的人
- BOOL recIsCurrRoom = [message.session.sessionId isEqualToString:youpaipto_uid] || [message.session.sessionId isEqualToString:youpaipfrom_uid];
- if(recIsCurrRoom){
- // asds
- YOUPAILCVideoChatMessageModel* msgModel = [[YOUPAILCVideoChatMessageModel alloc] init];
- msgModel.youpaiptype = 2;
- msgModel.youpaipcontent = message.text;
-
- if ([message.from isEqualToString:currentAccount]) { // 如果收到的消息 是自己发送的消息
- msgModel.youpaipfrom_nickname = @"我";
- msgModel.youpaipto_nickname = @"";
- msgModel.youpaipfrom_avatar = @"";
- msgModel.youpaipto_avatar = @"";
- msgModel.youpaipfrom_uid = [LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id; //
- }else{
- // 是对方发过来的
- msgModel.youpaipfrom_nickname = message.senderName; //发送消息人的名字
- msgModel.youpaipto_nickname = @"我";
- msgModel.youpaipfrom_avatar = @"";
- msgModel.youpaipto_avatar = @"";
- msgModel.youpaipfrom_uid = [self getRemoteSessionID]; //
- }
- NSLog(@"reciveTxt 消息类型 = %ld",msgModel.youpaiptype);
- NSLog(@"reciveTxt content = %@",msgModel.youpaipcontent);
-
-
- [self.youpaipchatArray insertObject:msgModel atIndex:0];
- [self.youpaipchatTableView beginUpdates];
- [self.youpaipchatTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:(UITableViewRowAnimationNone)];
- [self.youpaipchatTableView endUpdates];
- [self.youpaipchatTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:(UITableViewScrollPositionNone) animated:YES];
-
-
- }
- }
- /// 处理礼物
- - (void)youpaifeditGiftView{
- NSInteger maxCount = 2;
- NSInteger count = maxCount - self.youpaipgiftViews.count;
- if (count > self.youpaipgifts.count) {
- count = self.youpaipgifts.count;
- }
- if (count <= 0) {
- for (NSInteger i = 0; i < self.youpaipgiftViews.count; i ++) {
- if (self.youpaipgifts.count <= 0) {
- return;
- }
- YOUPAILZLiveGIftModel *giftModel = self.youpaipgifts[i];
- YOUPAILZChatRoomGiftView *giftView = nil;
- for (YOUPAILZChatRoomGiftView *f_giftView in self.youpaipgiftViews) {
- if (f_giftView.youpaipgiftModel.youpaipuser_id == giftModel.youpaipuser_id && f_giftView.youpaipgiftModel.youpaipgift_id == giftModel.youpaipgift_id && giftModel.youpaipgift_id != -1) {
- giftView = f_giftView;
- break;
- }
- }
- if (giftView != nil) {
- i --;
- [giftView youpaifupdateGiftCount:giftModel.youpaipgiftCount];
- [self.youpaipgifts removeObject:giftModel];
- if (giftModel.youpaipgift_type == 1 && ![giftModel.youpaipgift_svga isEqualToString:@""]) {
- [self.youpaipsvgas addObject:giftModel];
- [self youpaifstartPlaySvga];
- }
- [self.youpaipgifts removeObject:giftModel];
- }
- }
- }else{
- for (NSInteger i = 0; i < count; i ++) {
- if (self.youpaipgifts.count <= 0) {
- return;
- }
- YOUPAILZLiveGIftModel *giftModel = self.youpaipgifts[i];
- YOUPAILZChatRoomGiftView *giftView = nil;
- for (YOUPAILZChatRoomGiftView *f_giftView in self.youpaipgiftViews) {
- if (f_giftView.youpaipgiftModel.youpaipuser_id == giftModel.youpaipuser_id && f_giftView.youpaipgiftModel.youpaipgift_id == giftModel.youpaipgift_id && giftModel.youpaipgift_id != -1) {
- giftView = f_giftView;
- break;
- }
- }
- if (giftView != nil) {
- i --;
- [giftView youpaifupdateGiftCount:giftModel.youpaipgiftCount];
- [self.youpaipgifts removeObject:giftModel];
- if (giftModel.youpaipgift_type == 1 && ![giftModel.youpaipgift_svga isEqualToString:@""]) {
- [self.youpaipsvgas addObject:giftModel];
- [self youpaifstartPlaySvga];
- }
- }else{
- if (giftModel.youpaipgift_type == 1 && ![giftModel.youpaipgift_svga isEqualToString:@""]) {
- [self.youpaipsvgas addObject:giftModel];
- [self youpaifstartPlaySvga];
- }
- YOUPAILZChatRoomGiftView *giftView = [[YOUPAILZChatRoomGiftView alloc] initWithModel:giftModel];
- // [giftView addTarget:self action:@selector(youpaifgiftAnimationViewClick:) forControlEvents:UIControlEventTouchUpInside];
- NSInteger tag = 0;
- if (self.youpaipgiftViews.count == 1){
- if (self.youpaipgiftViews.lastObject.tag == 1) {
- tag = 0;
- }else{
- tag = 1;
- }
- }
- giftView.tag = tag;
- [self.youpaipinterView addSubview:giftView];
- [self.youpaipgiftViews addObject:giftView];
- if (giftView != nil) {
- UIView *view = self.youpaipgiftViews.lastObject;
- if (view != nil) {
- [giftView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.offset(-200.0f);
- if (view.tag == 0) {
- make.bottom.equalTo(self.youpaipchatTableView.mas_top).offset(-15.0f);
- }else{
- make.bottom.equalTo(self.youpaipchatTableView.mas_top).offset(-30.0f-40.0f);
- }
- make.height.offset(40.0f);
- }];
- }
-
- }
- [giftView.superview layoutIfNeeded];
- [giftView youpaifshowAnimation];
-
- giftView.delegate = self;
- [self.youpaipgifts removeObject:giftModel];
- }
- }
- }
- }
- - (void)youpaifanimatiomFinishWithView:(YOUPAILZChatRoomGiftView *)liveGiftView{
- [self.youpaipgiftViews removeObject:liveGiftView];
- [liveGiftView removeFromSuperview];
- [self youpaifeditGiftView];
- }
- - (void)youpaifstartPlaySvga{
-
- if (self.youpaipisPlaySvga == NO && self.youpaipsvgas.count != 0) {
- self.youpaipisPlaySvga = YES;
-
- YOUPAILZLiveGIftModel* giftModel = self.youpaipsvgas[0];
- [self.youpaipsvgaPlayer stopAnimation];
- if (giftModel.youpaipgift_type == 1 && ![giftModel.youpaipgift_svga isEqualToString:@""]) {
- self.youpaipsvgaPlayer.hidden = NO;
- }
- NSString* svgaName = [[giftModel.youpaipgift_svga componentsSeparatedByString:@"/"] lastObject];
- NSString* svgaCanchesPath= [[NSString alloc]initWithFormat:@"%@/%@/%@",CachesPath,@"SVGA",svgaName];
-
- if (![LCTools giftSVGAWithSvgaUrlStr:giftModel.youpaipgift_svga]){
- NSString* urlStr = [NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,giftModel.youpaipgift_svga];
-
- @weakify(self);
- [self.youpaipparser parseWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]] completionBlock:^(SVGAVideoEntity * _Nullable videoItem) {
- @strongify(self);
- if (videoItem != nil) {
- self.youpaipsvgaPlayer.hidden = NO;
- self.youpaipsvgaPlayer.videoItem = videoItem;
- [self.youpaipsvgaPlayer startAnimation];
- }
- } failureBlock:^(NSError * _Nullable error) {
- @strongify(self);
- self.youpaipsvgaPlayer.hidden = YES;
- self.youpaipisPlaySvga = NO;
- [self youpaifstartPlaySvga];
- }];
- [LCTools giftSVGAWithSvgaUrlStr:giftModel.youpaipgift_svga];
- }else{
- @weakify(self);
- [self.youpaipparser parseWithData:[LCTools giftSVGAWithSvgaUrlStr:giftModel.youpaipgift_svga] cacheKey:svgaCanchesPath completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
- @strongify(self);
- if (videoItem != nil) {
- self.youpaipsvgaPlayer.hidden = NO;
- self.youpaipsvgaPlayer.videoItem = videoItem;
- [self.youpaipsvgaPlayer startAnimation];
- }
- } failureBlock:^(NSError * _Nonnull error) {
- @strongify(self);
- self.youpaipsvgaPlayer.hidden = YES;
- self.youpaipisPlaySvga = NO;
- [self youpaifstartPlaySvga];
- }];
- }
- [self.youpaipsvgas removeObject:giftModel];
- }
- }
- - (NSMutableArray *)youpaipgifts{// 礼物数据
- if (!_youpaipgifts) {
- _youpaipgifts = [NSMutableArray array];
- }
- return _youpaipgifts;
- }
- - (NSMutableArray<YOUPAILZChatRoomGiftView *> *)youpaipgiftViews{// 礼物
- if (!_youpaipgiftViews) {
- _youpaipgiftViews = [NSMutableArray array];
- }
- return _youpaipgiftViews;
- }
- - (NSMutableArray *)youpaipsvgas{
- if (!_youpaipsvgas) {
- _youpaipsvgas = [NSMutableArray array];
- }
- return _youpaipsvgas;
- }
- #pragma mark - SVGAPlayerDelegate
- - (void)svgaPlayerDidFinishedAnimation:(SVGAPlayer *)player{
- self.youpaipsvgaPlayer.hidden = YES;
- self.youpaipisPlaySvga = NO;
- [self youpaifstartPlaySvga];
- }
- - (void)youpaifcloseBtnClick{
-
- LZAlertAction *cancelAction = [LZAlertAction actionWithTitle:@"取消" handler:^(LZAlertAction *action) {
-
- }];
- cancelAction.cornerRadius = 24.0f;
- cancelAction.color = LZ273145Color;
- cancelAction.bgColor = LZF5F4F7Color;
- @weakify(self);
- LZAlertAction *confimAction = [LZAlertAction actionWithTitle:@"确定" handler:^(LZAlertAction *action) {
- @strongify(self);
- [self.youpaipsocketManager sendHangup];
- }];
- confimAction.cornerRadius = 24.0f;
- confimAction.color = [UIColor whiteColor];
- confimAction.bgColor = [UIColor colorWithPatternImage:[LCTools ColorImage:CGSizeMake((KScreenWidth - 105.0f) / 2.0f, 48.0f) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:GradientLeftToRight]];
- LZAlertWindow *alert = [LZAlertWindow alertWithTitle:@"提示" content:@"确定挂断视频咨询?" action:@[cancelAction,confimAction]];
- alert.contentTextAlignment = NSTextAlignmentCenter;
- [self TFPresentVC:alert completion:^{}];
-
- }
- // 获取对方的id
- - (NSString *)getRemoteSessionID{
- NSString *youpaipto_uid = self.youpaipvideoModel.youpaipto_uid; //被叫者UID
- NSString *youpaipfrom_uid = self.youpaipvideoModel.youpaipfrom_uid; //呼叫者UID
- NSString *currentAccount = [[[NIMSDK sharedSDK] loginManager] currentAccount];
- if([currentAccount isEqualToString:youpaipto_uid]){
- return youpaipfrom_uid;
- }else{
- return youpaipto_uid;
- }
- }
- #pragma mark - interActive
- - (void)youpaifsendMsgBtnClick{
-
- NSString* sendText =[self.youpaipsendTextF.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
- if (sendText.length > 0) {
- // 组装消息体
- NIMMessage *message = [NIMMessageMaker msgWithText:sendText];
- NIMSession *session = [NIMSession session:[self getRemoteSessionID] type:(NIMSessionTypeP2P)];
-
- WeakSelf;
- [YOUPAILCIMTool sendMessage:message sessionid:session.sessionId completion:^(NIMMessage *resultMsg,NSInteger filter,NSString *contentStr) {
- if (filter==0) {
- [[[NIMSDK sharedSDK] chatManager] sendMessage:resultMsg toSession:session error:nil];
- }else{
- resultMsg.text = contentStr;
- [[[NIMSDK sharedSDK] chatManager] sendMessage:resultMsg toSession:session error:nil];
- }
- [self videoingRecMessage:message];
- }];
-
-
-
- self.youpaipsendTextF.text = @"";
- }else{
- [ZCHUDHelper showTitle:@"发送内容不能为空"];
- }
- }
- - (void)youpaiftimeStart{
- //v1.1.1断连重连
- __block NSInteger timeout = self.youpaipvideoModel.youpaipduration;
- @weakify(self);
- dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
- dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
- self.youpaiptimer = timer;
- dispatch_source_set_timer(timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
- dispatch_source_set_event_handler(timer, ^{
- timeout++;
- dispatch_async(dispatch_get_main_queue(), ^{
- @strongify(self);
- self.youpaiptimeLabel.text = [NSString stringWithFormat:@"通话时长: %@",[ZCUtils getHHMMSSFromSS:timeout]];
- kAppDelegate.logCallTime = self.youpaiptimeLabel.text;
- if (timeout >= 30 && timeout <= 40 && ![[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id isEqualToString:self.youpaipvideoModel.youpaipto_uid]) {
- self.youpaipgiftPopBtn.hidden = NO;
- }else{
- self.youpaipgiftPopBtn.hidden = YES;
- }
- });
-
- });
- dispatch_resume(timer);
- }
- - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
- UITouch* touch = [touches anyObject];
- UIView* view = [touch view];
- if (view == self.youpaipdemoBarBgV) {
- self.youpaipdemoBarBgV.hidden = YES;
- }
- [self.view endEditing:YES];
- }
- //- (void)youpaifinterHandel:(UITapGestureRecognizer*)interTap{
- // if (interTap.state == UIGestureRecognizerStateEnded) {
- // if (interTap.view == self.demoBarBgV) {
- // self.demoBarBgV.hidden = YES;
- // [self.view endEditing:YES];
- // }else{}
- // }
- //}
- - (void)youpaifdoubleTapHandel:(UITapGestureRecognizer*)tap{
- if (tap.state == UIGestureRecognizerStateEnded) {
- if (self.youpaipinterView.frame.origin.x == KScreenWidth) {
- [self youpaifmsgViewAnimWithX:0];
- }else{
- [self youpaifmsgViewAnimWithX:KScreenWidth];
- }
- }
- }
- - (void)youpaifmsgViewPanHandel:(UIPanGestureRecognizer*)panGesture{
- //移动两点之间的绝对距离
- [self.view endEditing:YES];
- CGPoint translation = [panGesture translationInView:self.youpaipinterView];
- if (self.youpaipinterView.frame.origin.x==0 && translation.x<0) {
-
- }else if(self.youpaipinterView.frame.origin.x==KScreenWidth && translation.x>0){
-
- }else {
- CGPoint endPosition;
- if (panGesture.state == UIGestureRecognizerStateBegan){
- self.youpaipstartPoint = [panGesture locationInView:self.youpaipinterView];
- }else if (panGesture.state == UIGestureRecognizerStateChanged){
-
- CGPoint origin = self.youpaipinterView.frame.origin;
- origin.x+=translation.x;
- if (origin.x<=0) {
- origin.x = 0;
- self.youpaipinterView.frame= CGRectMake(origin.x, 0, KScreenWidth, KScreenHeight);
- }else if(origin.x>=KScreenWidth){
- origin.x = KScreenWidth;
- self.youpaipinterView.frame= CGRectMake(origin.x, 0, KScreenWidth, KScreenHeight);
- }
-
- }else if (panGesture.state == UIGestureRecognizerStateEnded) {
- endPosition = [panGesture locationInView:self.youpaipinterView];
- if (endPosition.x-self.youpaipstartPoint.x>80) {//右移 小动画
- [self youpaifmsgViewAnimWithX:KScreenWidth];
- }else if(endPosition.x-self.youpaipstartPoint.x<-80){ //移
- [self youpaifmsgViewAnimWithX:0];
- }
- }
- }
-
- }
- - (void)youpaifmsgViewAnimWithX:(CGFloat)x{
- NSTimeInterval durtionTime = fabs(self.youpaipinterView.x-x)*0.5/KScreenWidth;
- [UIView animateWithDuration:durtionTime animations:^{
- self.youpaipinterView.frame = CGRectMake(x, 0, KScreenWidth, KScreenHeight);
- } completion:^(BOOL finished) {
- self.youpaipinterView.frame = CGRectMake(x, 0, KScreenWidth, KScreenHeight);
- }];
- }
- - (void)youpaifloaclVideoHandel:(UITapGestureRecognizer*)localTap{
- if (localTap.state == UIGestureRecognizerStateEnded) {
- if([self.youpaipremoteCanvas.view isEqual:self.youpaipremoteVideo.displayerOpenGLView]){
- self.youpaipremoteCanvas.view = self.youpaiplocalVideo.displayerOpenGLView;
- self.youpaiplocalCanvas.view = self.youpaipremoteVideo.displayerOpenGLView;
- [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
- [YOUPAIXLVideoShotTool sharedPusher].remoteVideo = self.youpaiplocalVideo.displayerOpenGLView;
- [YOUPAIXLVideoShotTool sharedPusher].localVideo = self.youpaipremoteVideo.displayerOpenGLView;
-
- // 默认
- // [YOUPAIXLVideoShotTool sharedPusher].localVideo = self.youpaiplocalVideo;
- // [YOUPAIXLVideoShotTool sharedPusher].remoteVideo = self.youpaipremoteVideo;
-
- }else{
- self.youpaipremoteCanvas.view = self.youpaipremoteVideo.displayerOpenGLView;
- self.youpaiplocalCanvas.view = self.youpaiplocalVideo.displayerOpenGLView;
- [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
-
- [YOUPAIXLVideoShotTool sharedPusher].remoteVideo = self.youpaipremoteVideo.displayerOpenGLView;
- [YOUPAIXLVideoShotTool sharedPusher].localVideo = self.youpaiplocalVideo.displayerOpenGLView;
-
- }
- }
- }
- #pragma mark - ButtonClick
- - (void)youpaifmsgBtnClick{
- [self.youpaipsendTextF becomeFirstResponder];
- }
- - (void)youpaifbeautyBtnClick{
- self.youpaipdemoBarBgV.hidden = NO;
- [self.view bringSubviewToFront:self.youpaipdemoBarBgV];
- }
- - (void)youpaifgiftBtnClick{
- self.youpaipgiftPopBtn.hidden = YES;
-
- YOUPAILZCommonGiftView *view = [YOUPAILZCommonGiftView new];
- view.isTouchDismiss = YES;
- view.youpaipisAnchor = NO;
-
- @weakify(self);
- [self TFPresentVC:view completion:^{
-
-
- }];
- [view setJumToWalletBlock1:^{
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [[NSNotificationCenter defaultCenter] postNotificationName:@"InsufficientBalanceNotice" object:nil userInfo:nil];
- // YOUPAIHRRechargePayWindow *payWindow = [YOUPAIHRRechargePayWindow new];
- // payWindow.isTouchDismiss = NO;
- // [self.navigationController TFPresentVC:payWindow completion:^{
- //
- // }];
- YMAccountBalanceViewModel *accountBalanceVM = [[YMAccountBalanceViewModel alloc]initWithParams:@{
- ParamsId:@([[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id intValue])
- }];
- YMAccountBalanceRechargePopupView *customView = [[YMAccountBalanceRechargePopupView alloc]init];
- [customView ym_bindViewModel:accountBalanceVM];
- YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:nil popStyle:YMPopupStyleSmoothFromBottom dismissStyle:YMDismissStyleSmoothToBottom];
- popupView.priority = 999;
- popupView.cornerRadius = adapt(10);
- popupView.rectCorners = UIRectCornerTopLeft|UIRectCornerTopRight;
- popupView.positionStyle = YMPositionStyleBottom;
- popupView.isClickBgDismiss = YES;
- popupView.isHideBg = NO;
- popupView.bgAlpha = 0.5;
- [popupView pop];
-
- @weakify(popupView)
- customView.dismissBlock = ^{
- @strongify(popupView)
- [popupView dismissWithStyle:YMDismissStyleSmoothToBottom duration:2.0];
- };
- });
- }];
- [view setYoupaiplzgiftblock:^(YOUPAILCGiftModel * _Nonnull giftModel, NSInteger count,NSString*categoryID) {
- @strongify(self);
- [UMengRecordTool umengEventCountWithId:GiveawayGiftVideo];
- [self.youpaipsocketManager sendGift:giftModel.youpaipid count:count tyID:categoryID];
-
-
- }];
- }
- - (void)youpaifswitchBtnClick:(UIButton*)btn{
- [_youpaipmCamera changeCameraInputDeviceisFront:!_youpaipmCamera.isFrontCamera];
- [self.youpaipagoraKit switchCamera];
- [[FUManager shareManager] onCameraChange];
- }
- - (void)youpaifvoiceBtnClick:(UIButton*)btn{
- btn.selected = !btn.selected;
- if (btn.selected == YES) {
- [self.youpaipagoraKit disableAudio];
- }else{
- [self.youpaipagoraKit enableAudio];
- }
- }
- - (void)youpaifcameraBtnClick:(UIButton*)btn{
- btn.selected = !btn.selected;
- if (btn.selected == YES) {
- self.youpaiplocalCanvas.view = self.youpaiplocalVideo.displayerOpenGLView;
- self.youpaipremoteCanvas.view = self.youpaipremoteVideo.displayerOpenGLView;
- [self.youpaipagoraKit setupLocalVideo:self.youpaiplocalCanvas];
- [self.youpaipagoraKit setupRemoteVideo:self.youpaipremoteCanvas];
- [self.youpaipagoraKit muteLocalVideoStream:YES];
- self.youpaiplocalVideo.hidden = YES;
- }else{
- [self.youpaipagoraKit muteLocalVideoStream:NO];
- self.youpaiplocalVideo.hidden = NO;
- }
- }
- //仙女棒
- -(void)youpaifxianNvBangBtnClick
- {
-
- YOUPAIZYXianNvBangVC *VC= [[YOUPAIZYXianNvBangVC alloc]init];
- // VC.delegate = self;
- VC.vWidth = KScreenWidth *(320.0/375.0);
- VC.vHeight = (VC.vWidth*137)/320.0+165;
- VC.youpaipinfoModel = self.youpaipvideoModel.youpaipfairy;
- VC.youpaipuser_id = self.youpaipvideoModel.youpaipto_uid;
- VC.youpaiproomid = self.youpaipvideoModel.youpaiproom_id;
- VC.youpaipisRoom = YES;
- VC.isTouchDismiss = YES;
- if(VC.youpaipinfoModel!=nil)
- [self TFPresentVC:VC completion:^{
-
- }];
-
-
- }
- //add by leo 视频中守护v1.0.8
- -(void)youpaifguardBtnClick
- {
- YOUPAILPGuardHerVC *VC= [[YOUPAILPGuardHerVC alloc]init];
- VC.youpaipdelegate = self;
- VC.vWidth = KScreenWidth-54;
- VC.vHeight = ((KScreenWidth-54)*165)/321.0+261.5;
- VC.youpaipinfoModel = self.youpaipvideoModel.youpaipguard;
- VC.youpaiproomid = self.youpaipvideoModel.youpaiproom_id;
- VC.youpaipuser_id = self.youpaipvideoModel.youpaipto_uid;
- VC.youpaipisRoom = YES;
- VC.isTouchDismiss = YES;
- [self TFPresentVC:VC completion:^{
-
- }];
- }
- #pragma mark - TableViewDelegate
- -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
-
- return 1;
- }
- -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
-
- return self.youpaipchatArray.count;
- }
- -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
- YOUPAILCVideoChatMessageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"YOUPAILCVideoChatMessageCell"];
- if (cell == nil) {
- cell = [[YOUPAILCVideoChatMessageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"YOUPAILCVideoChatMessageCell"];
- }
-
- // YOUPAILCVideoChatMessageCell *cell = [[YOUPAILCVideoChatMessageCell alloc]initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:@"YOUPAILCVideoChatMessageCell"];
- cell.youpaipmsgModel = self.youpaipchatArray[indexPath.row];
- cell.youpaipdelegate = self;
- return cell;
-
- }
- //- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
- //{
- // YOUPAILCVideoChatMessageModel* model = (YOUPAILCVideoChatMessageModel*)self.chatArray[indexPath.row];
- // return [YOUPAILCVideoChatMessageCell youpaifcellHeightWithModel:model];
- //}
- //
- //- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
- // return 40;
- //}
- //- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
- // YOUPAILCVideoChatMessageModel* model =self.chatArray[indexPath.row];
- // if (model.link_type==1) {
- // ZCBaseWebVC* web = [[ZCBaseWebVC alloc]init];
- // web.contentUrl = model.link_url;
- // [self.navigationController pushViewController:web animated:YES];
- // }else if (model.link_type==2){
- // [self youpaifpageToStr:model.link_url];
- // }
- //}
- - (void)youpaifcontentClicked:(YOUPAILCVideoChatMessageModel *)model{
- if (model.youpaiplink_type==1) {
- if (model.youpaiplink_url.length>0) {
- ZCBaseWebVC* web = [[ZCBaseWebVC alloc]init];
- web.contentUrl = model.youpaiplink_url;
- [self.navigationController pushViewController:web animated:YES];
- }
- }else if (model.youpaiplink_type==2){
- if (model.youpaiplink_url.length>0) {
- [self youpaifpageToStr:model.youpaiplink_url];
- }
- }
- }
- #pragma mark - 键盘交互事件
- - (void)youpaifwillResignActive {
- [_youpaipmCamera stopCapture];
-
- }
- #pragma mark - FUAPIDemoBarDelegate
- -(void)restDefaultValue:(int)type{
- if (type == 1) {//美肤
- [[FUManager shareManager] setBeautyDefaultParameters:FUBeautyModuleTypeSkin];
- }
-
- if (type == 2) {
- [[FUManager shareManager] setBeautyDefaultParameters:FUBeautyModuleTypeShape];
- }
-
- }
- -(void)filterValueChange:(FUBeautyParam *)param{
- int handle = [[FUManager shareManager] getHandleAboutType:FUNamaHandleTypeBeauty];
- [FURenderer itemSetParam:handle withName:@"filter_name" value:[param.mParam lowercaseString]];
- [FURenderer itemSetParam:handle withName:@"filter_level" value:@(param.mValue)]; //滤镜程度
-
- [FUManager shareManager].seletedFliter = param;
- }
- -(void)beautyParamValueChange:(FUBeautyParam *)param{
- if (_youpaipdemoBar.selBottomIndex == 3) {//风格栏
- if (param.beautyAllparams) {
- [[FUManager shareManager] setStyleBeautyParams:param.beautyAllparams];
- [FUManager shareManager].currentStyle = param;
- }else{// 点击无
- [FUManager shareManager].currentStyle = param;
- [[FUManager shareManager] loadFilter];
- }
-
- return;
- }
-
- if ([param.mParam isEqualToString:@"cheek_narrow"] || [param.mParam isEqualToString:@"cheek_small"]){//程度值 只去一半
- [[FUManager shareManager] setParamItemAboutType:FUNamaHandleTypeBeauty name:param.mParam value:param.mValue * 0.5];
- }else if([param.mParam isEqualToString:@"blur_level"]) {//磨皮 0~6
- [[FUManager shareManager] setParamItemAboutType:FUNamaHandleTypeBeauty name:param.mParam value:param.mValue * 6];
- }else{
- [[FUManager shareManager] setParamItemAboutType:FUNamaHandleTypeBeauty name:param.mParam value:param.mValue];
- }
- }
- - (void)willEnterForeground {
- [_youpaipmCamera startCapture];
- // if (self.voiceBtn.selected == NO) {
- // [self.agoraKit enableAudio];
- // [self.agoraKit disableAudio];
- // }else{
- // [self.agoraKit disableAudio];
- // [self.agoraKit enableAudio];
- // }
- }
- - (void)didBecomeActive {
- [_youpaipmCamera startCapture];
- }
- //键盘即将隐藏
- - (void)youpaifkeyboardWillHide:(NSNotification *)note{
- // CGRect keyboardF = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
- [UIView animateWithDuration:0.25 animations:^{
- //KScreenHeight-KScreenHeight/3-60
- self.youpaiptextToolView.mj_y = KScreenHeight;
- // self.chatTableView.frame = CGRectMake(10, KScreenHeight-KScreenHeight/4-70, 3*KScreenWidth/4, KScreenHeight/4);
- [self.youpaipchatTableView mas_updateConstraints:^(MASConstraintMaker *make) {
- make.bottom.offset(-(52.0f+SafeHeight+6.0f+29.0f+14.0f));
- }];
- }];
-
- }
- //键盘即将弹出
- - (void)youpaifkeyboardWillShow:(NSNotification *)note{
- CGRect keyboardF = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
- CGFloat keyboardH = keyboardF.size.height;
- [UIView animateWithDuration:0.25 animations:^{
- self.youpaiptextToolView.mj_y = KScreenHeight-keyboardH-65;
- [self.youpaipchatTableView mas_updateConstraints:^(MASConstraintMaker *make) {
- make.bottom.offset(-(52.0f+SafeHeight+6.0f+29.0f+14.0f)-keyboardH/*(52.0f+6.0f+29.0f+14.0f+keyboardH-48+6.0f)*/);
- }];
- }];
-
- }
- //add by leo 防止录屏
- #pragma mark - 监听录制
- /**
- 监听屏幕录制
- iOS 11.0 版本以上
- */
- - (void)youpaifmonitorRecordVideo {// 监听屏幕录制
- @weakify(self);
- // 监测设备的录制状态
- if (@available(iOS 11.0, *)) {
- [[NSNotificationCenter defaultCenter] addObserverForName:UIScreenCapturedDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
- @strongify(self);
- NSLog(@"屏幕录制 ...");
- //用self就会循环引用
- if(self.youpaipisRecordScreen)
- {
- [self youpaifshowPromptWarningView:NO];
- }
- else
- {
- [self youpaifshowPromptWarningView:YES];
- //add by leo 录屏上报
- [self youpaifshotCheck:2];
- }
- }];
- } else {
- // Fallback on earlier versions
- }
-
- }
- /**
- 提示视图
- */
- - (void)youpaifshowPromptWarningView:(BOOL)warning {
- if(warning)
- {
- _youpaipisRecordScreen = YES;
- [_youpaiprecoderHideView setFrame:self.youpaipremoteVideo.bounds];
- [_youpaiprecoderHideView setHidden:NO];
- NSLog(@"正在录屏");
- [ZCHUDHelper showTitle:@"请勿录制屏幕" showtime:1];
- }
- else
- {
- NSLog(@"录屏取消了");
- _youpaipisRecordScreen =NO;
- [_youpaiprecoderHideView setHidden:YES];
- }
-
- }
- #pragma mark 防止截屏
- - (void)youpaifmonitorShot
- {
- @weakify(self);
- [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationUserDidTakeScreenshotNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
- @strongify(self);
- NSLog(@"屏幕截图 ...");
-
- if(![[ZCUtils getCurrentVC] isKindOfClass:[YOUPAILCBaseVideoCallVC class]])
- {
- return;
- }
- [self youpaifshotCheck:1];
- }];
- }
- - (void)userDidTakeScreenshot {
-
- NSLog(@"检测到截屏");
- UIView *backView = [[UIView alloc]initWithFrame:self.youpaipremoteVideo.bounds];
- [backView setBackgroundColor:HexColorFromRGBA(0xffffff, 1.0)];
- [self.youpaipremoteVideo addSubview:backView];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [backView removeFromSuperview];
- });
- [ZCHUDHelper showTitle:@"尊重隐私,请勿截屏" showtime:1];
-
- //人为操作,获取截屏图片数据
- /*
- UIImage *image = [self youpaifimageWithScreenshot];
-
- NSLog(@"userDidTakeScreenshot:\n%@", image);
-
-
-
- UIImageView *imageScreenshot = [[UIImageView alloc] initWithImage:image];// 此处 image 资源可根据实际需求进行操作,展示当前截屏图片或者替换成一张固定的图片方式等等等!
-
- imageScreenshot.frame = self.remoteVideo.bounds;
- [imageScreenshot setBackgroundColor:[UIColor whiteColor]];
- [self.remoteVideo addSubview:imageScreenshot];// 展示在当前 View 层级
- */
-
- }
- /**
-
- 返回截屏数据
-
- @return 返回截屏数据
-
- */
- - (UIImage *)youpaifimageWithScreenshot {
-
- NSData *imageData = [self youpaifdataWithScreenshotInPNGFormat];
-
- return [UIImage imageWithData:imageData];
-
- }
- /**
-
- 获取当前屏幕
-
- @return 获取当前屏幕
-
- */
- - (NSData *)youpaifdataWithScreenshotInPNGFormat {
-
- // Source (Under MIT License):
-
- CGSize imageSize = CGSizeZero;
-
- UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
-
- if (UIInterfaceOrientationIsPortrait(orientation)) {
-
- imageSize = CGSizeMake(KScreenWidth,KScreenHeight);
-
- }
-
- else {
-
- imageSize = CGSizeMake(KScreenHeight, KScreenWidth);
-
- }
-
- // 传入的View.frame.size是0的话,直接返回nil,防止 UIGraphicsBeginImageContext() 传入0,导致崩溃
- if (CGSizeEqualToSize(imageSize, CGSizeZero)) {
- return nil;
- }
-
- UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
-
- CGContextRef context = UIGraphicsGetCurrentContext();
-
- for (UIWindow *window in [[UIApplication sharedApplication] windows]) {
-
- CGContextSaveGState(context);
-
- CGContextTranslateCTM(context, window.center.x, window.center.y);
-
- CGContextConcatCTM(context, window.transform);
-
- CGContextTranslateCTM(context, -window.bounds.size.width * window.layer.anchorPoint.x, -window.bounds.size.height * window.layer.anchorPoint.y);
-
-
-
- // Correct for the screen orientation
-
- if (orientation == UIInterfaceOrientationLandscapeLeft) {
-
- CGContextRotateCTM(context, M_PI_2);
-
- CGContextTranslateCTM(context, 0, -imageSize.width);
-
- }
-
- else if (orientation == UIInterfaceOrientationLandscapeRight) {
-
- CGContextRotateCTM(context, -M_PI_2);
-
- CGContextTranslateCTM(context, -imageSize.height, 0);
-
- }
-
- else if (orientation == UIInterfaceOrientationPortraitUpsideDown) {
-
- CGContextRotateCTM(context, M_PI);
-
- CGContextTranslateCTM(context, -imageSize.width, -imageSize.height);
-
- }
-
-
-
- if ([window respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
-
- [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES];
-
- }
-
- else {
-
- [window.layer renderInContext:context];
-
- }
-
-
-
- CGContextRestoreGState(context);
-
- }
-
-
-
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
-
- UIGraphicsEndImageContext();
-
-
-
- return UIImagePNGRepresentation(image);
-
- }
- //add by leo 截屏上报
- -(void)youpaifshotCheck:(NSInteger)type
- {
- @weakify(self);
- [LCHttpHelper requestWithURLString:ScreenShtoCheck parameters:@{@"type":@(type)} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- @strongify(self);
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- NSString *message =[dict objectForKey:@"message"];
- if (code==0) {//成功
-
- [self.youpaipsocketManager sendHangup];
-
- }
-
- // [ZCHUDHelper showTitle:message];
- LZAlertAction *confimAction = [LZAlertAction actionWithTitle:@"我知道了" handler:^(LZAlertAction *action) {
-
- }];
- confimAction.cornerRadius = 24.0f;
- confimAction.color = [UIColor whiteColor];
- confimAction.bgColor = [UIColor colorWithPatternImage:[LCTools ColorImage:CGSizeMake(KScreenWidth - 148.0f, 48.0f) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:GradientLeftToRight]];
- LZAlertWindow *alert = [LZAlertWindow alertWithTitle:@"提示" content:message action:@[confimAction]];
- [self TFPresentVC:alert completion:^{}];
- } failure:^(NSError *error) {
-
- }];
- if(type ==2)
- {
- /*
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.socketManager youpaifsendHangup];
- });
- */
-
- }
- }
- //add by leo v1.0.8 视频中守护回调
- -(void)youpaifaddGuardSuccess
- {
-
- }
- //add by leo v1.0.8 弱网警告
- -(void)autoHangUp
- {
- if(self.youpaipsocketManager)
- {
- //确定退出视频咨询
- UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"您的网络状况糟糕" message:@"为了良好的视频体验,建议您先挂断视频" preferredStyle:UIAlertControllerStyleAlert];
- UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
- }];
- UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
- [self videoEnd:5];
- }];
- [alertController addAction:cancelAction];
- [alertController addAction:okAction];
- [self presentViewController:alertController animated:YES completion:nil];
- }
-
- }
- @end
|