// // GiGaFlingCommitVC.m // GIGA // // Created by lianxiang on 2018/8/28. // Copyright © 2018年 com.giga.ios. All rights reserved. // #import "GiGaFlingCommitVC.h" #import "GiGaFlyingCommitInputView.h" #import "LXDanMuManager.h" #import "GiGaCommentView.h" #import "GiGaCommentModel.h" #import "LXDanMuManagerConfig.h" #import "IQKeyboardManager.h" #import #import "NSString+Unicode.h" #import "GIGAMBHUDHelper.h" #import "LXCustomSwith.h" //弹幕控制器 @interface GiGaFlingCommitVC () @property (nonatomic,strong) GiGaFlyingCommitInputView *commitInputView; @property (nonatomic,strong) SocketIOClient *client; @property (nonatomic,strong) SocketManager *manager; @property (nonatomic,strong) LXCustomSwith *danmuSwitch; @end @implementation GiGaFlingCommitVC - (LXCustomSwith *)danmuSwitch{ if (!_danmuSwitch) { _danmuSwitch = [[LXCustomSwith alloc] initWithFrame:CGRectMake(KMainW - 50 - 25 , 64 + PhoneX_TopMargin +10, 50, 18)]; [_danmuSwitch setOffthumTitle:@"弹幕"]; [_danmuSwitch setOnthumTitle:@"弹幕"]; [_danmuSwitch setOnTintColor:GIGARGB(91, 0, 2, 1)]; [_danmuSwitch setTintColor:GIGARGB(91, 0, 2, 1)]; [_danmuSwitch setThumbTintColor:GIGARGB(203, 42, 50, 1)]; _danmuSwitch.on = YES; _danmuSwitch.thumbLabel.font = GIGA_TEXTFONTMEDIUM(10); _danmuSwitch.thumbLabel.textColor = [UIColor whiteColor]; [_danmuSwitch addTarget:self action:@selector(mycuntomSwitchAction:) forControlEvents:UIControlEventValueChanged]; } return _danmuSwitch; } - (GiGaFlyingCommitInputView *)commitInputView{ if (!_commitInputView) { _commitInputView = [[GiGaFlyingCommitInputView alloc] initWithFrame:self.view.bounds]; [_commitInputView setPalceholderText:@"请输入弹幕"]; } return _commitInputView; } //弹幕按钮 -(void)mycuntomSwitchAction:(id)sender{ LXCustomSwith *nkswitch = (LXCustomSwith *)sender; if (nkswitch.isOn) NSLog(@"switchPressed ON"); else [self.manager disconnectSocket:self.client]; [self.manager disconnect]; [self.client disconnect]; self.client = nil; self.manager = nil; [self dismissViewControllerAnimated:YES completion:nil]; NSLog(@"switchPressed OFF"); } -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NC_ADD_TARGET_NAME_OBJECT(self, @selector(maskTimeEnd), kUserNoti_MASKEND, nil); [IQKeyboardManager sharedManager].enable = NO; [[IQKeyboardManager sharedManager] setEnableAutoToolbar:NO]; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; NC_REMOVE_NAME(self, kUserNoti_MASKEND, nil); [IQKeyboardManager sharedManager].enable = YES; [[IQKeyboardManager sharedManager] setEnableAutoToolbar:YES]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self.view addSubview: self.commitInputView]; [self.view addSubview:self.danmuSwitch]; [self.view bringSubviewToFront:self.danmuSwitch]; weakify(self); self.commitInputView.SendCommentHandler = ^(NSString *content) { GILog(@"发送->:%@",content); NSArray *arr = @[@{ @"content":content, @"room":@"", @"sendUserName":@"lianxiang" }]; [weakSelf.client emit:@"talk" with:arr]; }; //开启弹幕 [[LXDanMuManager shareInstance] createDanmuWithTrackSpeedArray:@[@1.00,@1.00,@3.00,@4.00] centerY:KMainH / 4 trackWidth:KMainW showInView:self.view]; [[LXDanMuManager shareInstance] start]; //socket [self connetction]; } -(void)connetction{ NSURL* url = [[NSURL alloc] initWithString:@"http://wsyts.s1.natapp.cc"]; SocketManager *manager = [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @NO, @"forcePolling": @YES,@"connectParams":@{@"token":@""}}]; _manager = manager; _client = manager.defaultSocket; [self.manager connect]; weakify(self); [self.client on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack) { GIGA_WIndowTost(@"客户端上线"); NSLog(@"*************\n\niOS客户端上线\n\n*************"); }]; [self.client on:@"connectedSocket" callback:^(NSArray * _Nonnull event, SocketAckEmitter * _Nonnull ack) { [GIGAMBHUDHelper messageAddto:self.view title:@"弹幕链接成功"]; NSLog(@"connectedSocket:%@",event); }]; [self.client on:@"onTalk" callback:^(NSArray * _Nonnull data, SocketAckEmitter * _Nonnull ack) { NSString *json =data[0]; NSLog(@"callback json***:%@",json); NSDictionary *dic = [GiGaHelper dictionaryWithJsonString:json]; if (dic == nil) { NSLog(@"解析失败"); }else{ GiGaCommentModel *commentModel = [[GiGaCommentModel alloc] initWithDictionary:dic error:nil]; GILog(@"接收->:%@",[dic[@"content"] replaceUnicode:dic[@"content"]]); [weakSelf showDanMuWith:commentModel]; } }]; [self.client on:@"disconnect" callback:^(NSArray * _Nonnull event, SocketAckEmitter * _Nonnull ack) { GIGA_WIndowTost(@"客户端下线"); NSLog(@"*************\n\niOS客户端下线\n\n*************%@",event?event[0]:@""); }]; [self.client on:@"error" callback:^(NSArray * _Nonnull event, SocketAckEmitter * _Nonnull ack) { [GIGAMBHUDHelper messageAddto:self.view title:@"连接弹幕"]; // NSString *htmlString =event[0]; // htmlString = [self htmlEntityDecode:htmlString]; // // UIWebView * webView = [[UIWebView alloc]initWithFrame:CGRectMake(20, 300, self.view.frame.size.width - 40, 400)]; // [webView loadHTMLString:htmlString baseURL:nil]; // [self.view addSubview:webView]; // // NSLog(@"*************\n\n%@\n\n*************",event?event[0]:@""); GILog(@"请求超时"); }]; } //弹幕插入 -(void)showDanMuWith:(GiGaCommentModel *)model{ NSArray *classArray = @[@"GiGaCommentView",@"GiGaCommentView"]; int classRandomIndex = arc4random() % 2; GiGaCommentView *customView = [[NSClassFromString(classArray[classRandomIndex]) alloc] initWithMsgModel:model height:TRACK_HEIGHT]; [[LXDanMuManager shareInstance] appendDanMuWithCustomView:customView toTrackIndex:-1]; } -(void)maskTimeEnd{ [[LXDanMuManager shareInstance] destory]; [self dismissViewControllerAnimated:YES completion:nil]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(void)dealloc{ NSLog(@"dealloc"); } @end