221 lines
7.2 KiB
Objective-C
221 lines
7.2 KiB
Objective-C
//
|
|
// 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 <SocketIO/SocketIO-Swift.h>
|
|
#import "NSString+Unicode.h"
|
|
#import "GIGAMBHUDHelper.h"
|
|
#import "LXCustomSwith.h"
|
|
#import "GiGaUserDefault.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
|
|
[[LXDanMuManager shareInstance] destory];
|
|
[self destorySocket];
|
|
[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];
|
|
|
|
//显示隐藏输入框
|
|
BOOL isUserLogin = [GiGaUserDefault isUserLogin];
|
|
if (!isUserLogin) {
|
|
self.commitInputView.hidden = YES;
|
|
}
|
|
|
|
}
|
|
|
|
-(void)connetction{
|
|
|
|
NSURL* url = [[NSURL alloc] initWithString:@"http://wsyts.s1.natapp.cc"];
|
|
//@"connectParams":@{@"token":@""}
|
|
NSString *token = [GiGaUserDefault getCurentToken];
|
|
if (!token) {
|
|
token = @"";
|
|
}
|
|
SocketManager *manager = [[SocketManager alloc] initWithSocketURL:url config:@{@"log": @NO, @"forcePolling": @YES,@"extraHeaders":@{@"device":@"ios"},@"token":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];
|
|
//关闭socket
|
|
[self destorySocket];
|
|
[self dismissViewControllerAnimated:YES completion:nil];
|
|
}
|
|
|
|
- (void)didReceiveMemoryWarning {
|
|
[super didReceiveMemoryWarning];
|
|
}
|
|
|
|
-(void)dealloc{
|
|
NSLog(@"弹幕销毁 聊天关闭");
|
|
}
|
|
-(void)destorySocket{
|
|
|
|
[self.manager disconnectSocket:self.client];
|
|
[self.manager disconnect];
|
|
[self.client disconnect];
|
|
self.client = nil;
|
|
self.manager = nil;
|
|
}
|
|
|
|
@end
|