This commit is contained in:
启星
2026-01-08 18:31:27 +08:00
parent 5ab030701c
commit 796f64f5e3
129 changed files with 5425 additions and 230 deletions

View File

@@ -561,7 +561,7 @@
@"position":[NSNumber numberWithInteger:positionMs],
};
NSString *jsonStr = [dict jsonStringEncoded];
[[QXRoomMessageManager shared] sendChatMessage:jsonStr messageType:(QXRoomMessageTypeSongLrc) needInsertMessage:NO];
[[QXRoomMessageManager shared] sendChatMessage:jsonStr messageType:(QXRoomMessageTypeSongLrc) needInsertMessage:NO isSuperRoom:NO];
// if (self.roomInfo.is_xiangqin == 1){

View File

@@ -166,6 +166,15 @@ typedef NS_ENUM(NSInteger) {
/// 爆币推送特效
QXRoomMessageTypeCoinBoomEffect = 1100,
/// 撩人礼物特效
QXRoomMessageTypeSeductionEffect = 1200,
/// 约她成功
QXRoomMessageTypeJoinBarCabinRoom = 1201,
/// 收到要被抱上麦
QXRoomMessageTypeBarRoomHugPit = 1202,
/// 麦上用户设置了自定义礼物
QXRoomMessageTypeBarRoomSetCustomGift = 1203,
}QXRoomMessageType;
NS_ASSUME_NONNULL_BEGIN
@protocol QXRoomMessageManagerDelegate <NSObject>
@@ -176,7 +185,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 根据用户userid 插入消息
-(void)didInsertMessge:(QXRoomChatListModel*)message userId:(NSString*)userId;
/// 上下麦
-(void)didUpDownSeatWithUser:(QXUserHomeModel*)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number isPK:(BOOL)isPK;
-(void)didUpDownSeatWithUser:(QXUserHomeModel*)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number isPK:(BOOL)isPK end_time:(NSString*)end_time;
/// 上麦模式发生变化 2 自由麦 | 1 排麦
-(void)aplayPitModeDidChanged:(NSString*)upMicType;
/// 排麦人数发生变化
@@ -323,6 +332,18 @@ NS_ASSUME_NONNULL_BEGIN
/// 主持邀请上签约麦
-(void)signSeatInviteWithUserId:(NSString*)userId content:(NSString*)content;
/// 酒吧房
/// 收到撩他特效
-(void)barRoomSeductionEffectWithModel:(QXRoomChatListModel*)model;
/// 需要进入小黑屋
-(void)barRoomJoinCabinRoomWithRoomId:(NSString*)room_id user_id:(NSString*)user_id meet_user_id:(NSString*)meet_user_id;
/// 收到要被抱上麦了
-(void)barRoomHugPitWithUserId:(NSString*)userId pit_number:(NSString*)pit_number;
/// 设置了自定义礼物
-(void)barRoomSetCustomGiftWithUserId:(NSString*)userId had_custom_gift:(BOOL)had_custom_gift;
@end
@interface QXRoomMessageManager : NSObject
@property (nonatomic,weak)id<QXRoomMessageManagerDelegate>delegate;
@@ -334,12 +355,16 @@ NS_ASSUME_NONNULL_BEGIN
/// 加入房间群组
-(void)joinGroupWithRoomId:(NSString*)roomId;
-(void)joinExGroupWithRoomId:(NSString*)roomId;
/// 退出
-(void)quitExGroup;
/// 退出房间群组
-(void)quitGroupWithRoomId:(NSString*)roomId removeListener:(BOOL)removeListener;
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage;
/// 发送消息
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage isSuperRoom:(BOOL)isSuperRoom;
/// 发送表情
-(void)sendChatEmoji:(QXEmojiModel *)emoji;
-(void)sendChatEmoji:(QXEmojiModel *)emoji isSuperRoom:(BOOL)isSuperRoom;
-(void)sendC2CMessage:(NSString *)message messageType:(QXRoomMessageType)messageType userId:(NSString*)userId;

View File

@@ -19,6 +19,8 @@
@interface QXRoomMessageManager() <V2TIMGroupListener,V2TIMSimpleMsgListener,V2TIMAdvancedMsgListener>
@property (nonatomic,strong)NSString *groupId;
@property (nonatomic,strong)NSString *roomId;
@property (nonatomic,strong)NSString *exRoomId;
@property (nonatomic,strong)NSString *exGroupId;
@end
@implementation QXRoomMessageManager
+ (instancetype)shared {
@@ -60,6 +62,24 @@
[QXLogger infoWithTag:@"房间日志" format:@"腾讯IM加入聊天室失败-code%d-原因%@",code,desc];
}];
}
-(void)joinExGroupWithRoomId:(NSString *)roomId{
[[V2TIMManager sharedInstance] addGroupListener:self];
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
NSString *exGroupId = [NSString stringWithFormat:@"room%@",roomId];
self.exGroupId = exGroupId;
self.exRoomId = roomId;
[[V2TIMManager sharedInstance] joinGroup:exGroupId msg:@"大家好,我来啦" succ:^{
QXLOG(@"腾讯IM小黑屋加入聊天室成功");
// weakSelf.groupId = groupId;
// weakSelf.roomId = roomId;
[QXLogger infoWithTag:@"房间日志" format:@"腾讯IM小黑屋加入聊天室成功房间id=%@",roomId];
} fail:^(int code, NSString *desc) {
//
QXLOG(@"腾讯IM小黑屋加入聊天室失败-code%d-原因%@",code,desc);
[QXLogger infoWithTag:@"房间日志" format:@"腾讯IM小黑屋加入聊天室失败-code%d-原因%@",code,desc];
}];
}
-(void)quitGroupWithRoomId:(NSString *)roomId removeListener:(BOOL)removeListener{
if (removeListener) {
self.groupId = nil;
@@ -75,6 +95,10 @@
}];
}
-(void)quitExGroup{
self.exGroupId = nil;
self.exRoomId = nil;
}
//
-(void)onMemberEnter:(NSString *)groupID memberList:(NSArray<V2TIMGroupMemberInfo *> *)memberList{
@@ -103,7 +127,8 @@
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
NSString *groupId = [NSString stringWithFormat:@"room%@",msg.RoomId];
[QXLogger infoWithTag:@"推送日志" format:@"房间id=%@收到系统推送%@",msg.RoomId,jsonStr];
if ([groupId isEqualToString:self.groupId]) {
if ([groupId isEqualToString:self.groupId] || [groupId isEqualToString:self.exGroupId]) {
BOOL isSuperRoom = [self.exGroupId isEqualToString:groupId];
//
NSInteger meesageType = msg.MsgType.integerValue;
switch (meesageType) {
@@ -116,15 +141,23 @@
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
NSString *jia_jia = [NSString stringWithFormat:@"%@",msg.Text[@"jia_jia"]];
if (([jia_jia hasPrefix:@"http"] || [jia_jia hasPrefix:@"https"]) && ([jia_jia hasSuffix:@"svga"] || [jia_jia hasSuffix:@"mp4"])) {
// QXGiftModel *md = [[QXGiftModel alloc] init];
// md.play_image = jia_jia;
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
if ([self.exRoomId isExist] && [self.roomId isExist]) {
///
if ([groupId isEqualToString:self.groupId]){
if (([jia_jia hasPrefix:@"http"] || [jia_jia hasPrefix:@"https"]) && ([jia_jia hasSuffix:@"svga"] || [jia_jia hasSuffix:@"mp4"])) {
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
}
}
}else{
if (([jia_jia hasPrefix:@"http"] || [jia_jia hasPrefix:@"https"]) && ([jia_jia hasSuffix:@"svga"] || [jia_jia hasSuffix:@"mp4"])) {
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
}
}
if ([model.FromUserInfo.enter_image isExist]) {
[[QXDrifNobilityJoinRoomView shareView] addNobilityUserModel:model];
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
if ([model.FromUserInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
@@ -146,11 +179,21 @@
///
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeGift;
if ([model.GiftInfo.play_image isExist]) {
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
if ([self.exRoomId isExist] && [self.roomId isExist]) {
///
if ([groupId isEqualToString:self.groupId]){
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
[[QXGiftDisplayManager sharedManager] receiveGift:model];
}
}else{
if ([model.GiftInfo.play_image isExist]) {
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
}
[[QXGiftDisplayManager sharedManager] receiveGift:model];
}
[[QXGiftDisplayManager sharedManager] receiveGift:model];
if (model.ToUserInfos.count>0) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfos:)]) {
[self.delegate didRecieveGiftWithWithUserInfos:model.ToUserInfos];
@@ -164,6 +207,7 @@
return;
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -184,12 +228,13 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
if (!model.is_pk) {
// pk
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:)]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:end_time:)]) {
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:YES pit_number:pit_number.integerValue isPK:model.is_pk];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:YES pit_number:pit_number.integerValue isPK:model.is_pk end_time:model.end_time];
}
}
break;
@@ -200,12 +245,13 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
if (!model.is_pk) {
// pk
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:)]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:end_time:)]) {
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:NO pit_number:pit_number.integerValue isPK:model.is_pk];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:NO pit_number:pit_number.integerValue isPK:model.is_pk end_time:model.end_time];
}
}
break;
@@ -744,10 +790,54 @@
NSString *jia_jia = [NSString stringWithFormat:@"%@",msg.Text[@"play_image"]];
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
break;
case QXRoomMessageTypeSeductionEffect:{
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomSeductionEffectWithModel:)]) {
[self.delegate barRoomSeductionEffectWithModel:model];
}
}
break;
case QXRoomMessageTypeJoinBarCabinRoom:{
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
NSString *cabinRoomId = [NSString stringWithFormat:@"%@",msg.Text[@"room_id"]];
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
NSString *meet_user_id = [NSString stringWithFormat:@"%@",msg.Text[@"meet_user_id"]];
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomJoinCabinRoomWithRoomId:user_id:meet_user_id:)]) {
[self.delegate barRoomJoinCabinRoomWithRoomId:cabinRoomId user_id:user_id meet_user_id:meet_user_id];
}
}
break;
case QXRoomMessageTypeBarRoomHugPit:{
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomHugPitWithUserId:pit_number:)]) {
[self.delegate barRoomHugPitWithUserId:user_id pit_number:pit_number];
}
}
break;
case QXRoomMessageTypeBarRoomSetCustomGift:{
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
NSString *type = [NSString stringWithFormat:@"%@",msg.Text[@"type"]];
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomSetCustomGiftWithUserId:had_custom_gift:)]) {
[self.delegate barRoomSetCustomGiftWithUserId:user_id had_custom_gift:type.intValue==1];
}
}
break;
default:
break;
}
@@ -871,12 +961,16 @@
-(void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData *)data{
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
if ([groupID isEqualToString:self.groupId]) {
NSString *groupId = [NSString stringWithFormat:@"room%@",msg.RoomId];
[QXLogger infoWithTag:@"推送日志" format:@"房间id=%@收到系统推送%@",msg.RoomId,jsonStr];
if ([groupId isEqualToString:self.groupId] || [groupId isEqualToString:self.exGroupId]) {
BOOL isSuperRoom = [self.exGroupId isEqualToString:groupId];
NSInteger meesageType = msg.MsgType.integerValue;
if (meesageType == QXRoomMessageTypeText) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeChat;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}else if (meesageType == QXRoomMessageTypeClearMessage) {
@@ -907,6 +1001,7 @@
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeEmoji;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -914,9 +1009,9 @@
}
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage{
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage isSuperRoom:(BOOL)isSuperRoom{
NSDictionary *dict = @{
@"RoomId":self.roomId?self.roomId:@"",
@"RoomId":isSuperRoom?self.exRoomId?:@"":self.roomId?:@"",
@"MsgType":[NSNumber numberWithInteger:messageType],
@"Text":@{
@"FromUserInfo":@{
@@ -945,22 +1040,23 @@
model.FromUserInfo = userInfo;
model.messageType = QXRoomChatMessageTypeChat;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
NSString *jsonStr = [dict jsonStringEncoded];
NSData *data =[jsonStr dataUsingEncoding:NSUTF8StringEncoding];
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:self.groupId priority:V2TIM_PRIORITY_NORMAL succ:^{
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:isSuperRoom?self.exGroupId?:@"":self.groupId?:@"" priority:V2TIM_PRIORITY_NORMAL succ:^{
QXLOG(@"发送自定义消息成功");
} fail:^(int code, NSString * _Nullable desc) {
QXLOG(@"发送自定义消息失败");
}];
}
-(void)sendChatEmoji:(QXEmojiModel *)emoji{
-(void)sendChatEmoji:(QXEmojiModel *)emoji isSuperRoom:(BOOL)isSuperRoom{
NSDictionary *dict = @{
@"RoomId":self.roomId?self.roomId:@"",
@"RoomId":isSuperRoom?self.exRoomId?:@"":self.roomId?:@"",
@"MsgType":[NSNumber numberWithInteger:QXRoomMessageTypeEmoji],
@"Text":@{
@"FromUserInfo":@{
@@ -993,11 +1089,12 @@
model.messageType = QXRoomChatMessageTypeEmoji;
model.emoji = emoji;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
NSString *jsonStr = [dict jsonStringEncoded];
NSData *data =[jsonStr dataUsingEncoding:NSUTF8StringEncoding];
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:self.groupId priority:V2TIM_PRIORITY_NORMAL succ:^{
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:isSuperRoom?self.exGroupId?:@"":self.groupId?:@"" priority:V2TIM_PRIORITY_NORMAL succ:^{
QXLOG(@"发送自定义消息成功");
} fail:^(int code, NSString * _Nullable desc) {
QXLOG(@"发送自定义消息失败");