提交
This commit is contained in:
775
QXLive/Manager/QXRoomMessageManager.m
Normal file
775
QXLive/Manager/QXRoomMessageManager.m
Normal file
@@ -0,0 +1,775 @@
|
||||
//
|
||||
// QXRoomMessageManager.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/6/10.
|
||||
//
|
||||
|
||||
#import "QXRoomMessageManager.h"
|
||||
#import <ImSDK_Plus/ImSDK_Plus.h>
|
||||
#import "QXMineNetwork.h"
|
||||
#import "QXGiftPlayerManager.h"
|
||||
#import <AgoraRtcKit/AgoraRtcEngineKit.h>
|
||||
|
||||
@interface QXRoomMessageManager() <V2TIMGroupListener,V2TIMSimpleMsgListener,V2TIMAdvancedMsgListener>
|
||||
@property (nonatomic,strong)NSString *groupId;
|
||||
@property (nonatomic,strong)NSString *roomId;
|
||||
@end
|
||||
@implementation QXRoomMessageManager
|
||||
+ (instancetype)shared {
|
||||
static QXRoomMessageManager *global = nil;
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
global = [[self alloc] init];
|
||||
});
|
||||
return global;
|
||||
}
|
||||
-(void)joinGroupWithRoomId:(NSString *)roomId{
|
||||
MJWeakSelf
|
||||
if (self.groupId) {
|
||||
[self quitGroupWithRoomId:self.groupId];
|
||||
}
|
||||
[[V2TIMManager sharedInstance] addGroupListener:self];
|
||||
[[V2TIMManager sharedInstance] addSimpleMsgListener:self];
|
||||
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
|
||||
NSString *groupId = [NSString stringWithFormat:@"room%@",roomId];
|
||||
[[V2TIMManager sharedInstance] joinGroup:groupId msg:@"大家好,我来啦" succ:^{
|
||||
QXLOG(@"腾讯IM加入聊天室成功");
|
||||
weakSelf.groupId = groupId;
|
||||
weakSelf.roomId = roomId;
|
||||
} fail:^(int code, NSString *desc) {
|
||||
// 加入群组失败
|
||||
QXLOG(@"腾讯IM加入聊天室失败-code%d-原因%@",code,desc);
|
||||
}];
|
||||
}
|
||||
-(void)quitGroupWithRoomId:(NSString *)roomId{
|
||||
MJWeakSelf
|
||||
self.groupId = nil;
|
||||
self.roomId = nil;
|
||||
[[V2TIMManager sharedInstance] removeGroupListener:self];
|
||||
[[V2TIMManager sharedInstance] removeSimpleMsgListener:self];
|
||||
[[V2TIMManager sharedInstance] removeAdvancedMsgListener:self];
|
||||
NSString *groupId = [NSString stringWithFormat:@"room%@",roomId];
|
||||
[[V2TIMManager sharedInstance] quitGroup:groupId succ:^{
|
||||
|
||||
} fail:^(int code, NSString * _Nullable desc) {
|
||||
|
||||
}];
|
||||
}
|
||||
// 新成员加入
|
||||
-(void)onMemberEnter:(NSString *)groupID memberList:(NSArray<V2TIMGroupMemberInfo *> *)memberList{
|
||||
|
||||
}
|
||||
// 有人离开
|
||||
-(void)onMemberLeave:(NSString *)groupID member:(V2TIMGroupMemberInfo *)member{
|
||||
|
||||
}
|
||||
- (void)onRecvNewMessage:(V2TIMMessage *)msg {
|
||||
if (msg.isBroadcastMessage) {
|
||||
// 收到了广播消息
|
||||
NSData *data = msg.customElem.data;
|
||||
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
QXLOG(@"收到广播消息---%@",jsonStr);
|
||||
QXHeadLineModel *headline = [QXHeadLineModel yy_modelWithJSON:jsonStr];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(recieveHeadline:)]) {
|
||||
[self.delegate recieveHeadline:headline];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 收到系统消息
|
||||
-(void)onReceiveRESTCustomData:(NSString *)groupID data:(NSData *)data{
|
||||
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
|
||||
NSString *groupId = [NSString stringWithFormat:@"room%@",msg.RoomId];
|
||||
if ([groupId isEqualToString:self.groupId]) {
|
||||
// 处理逻辑
|
||||
NSInteger meesageType = msg.MsgType.integerValue;
|
||||
switch (meesageType) {
|
||||
case QXRoomMessageTypeSystem:{
|
||||
/// 系统消息
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeJoin:{
|
||||
/// 用户进入房间
|
||||
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.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
if ([model.FromUserInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||
return;
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomOnlineNumberDidChangedIsAdd:)]) {
|
||||
[self.delegate roomOnlineNumberDidChangedIsAdd:YES];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeQuit:{
|
||||
/// 用户退出房间
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomOnlineNumberDidChangedIsAdd:)]) {
|
||||
[self.delegate roomOnlineNumberDidChangedIsAdd:NO];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeGift:{
|
||||
/// 收到礼物
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeGift;
|
||||
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
|
||||
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
|
||||
|
||||
if (model.ToUserInfos.count>0) {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfos:)]) {
|
||||
[self.delegate didRecieveGiftWithWithUserInfos:model.ToUserInfos];
|
||||
}
|
||||
}else{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfo:)]) {
|
||||
[self.delegate didRecieveGiftWithWithUserInfo:model.ToUserInfo];
|
||||
}
|
||||
}
|
||||
if (model.text.length == 0) {
|
||||
return;
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case QXRoomMessageTypeAplayPitModeDidChanged:{
|
||||
/// 上麦模式发生变化
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(aplayPitModeDidChanged:)]) {
|
||||
NSString* room_up_pit_type = [NSString stringWithFormat:@"%@",msg.Text[@"room_up_pit_type"]];
|
||||
[self.delegate aplayPitModeDidChanged:room_up_pit_type];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeUpSeat:{
|
||||
/// 用户上麦
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:)]) {
|
||||
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
|
||||
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:YES pit_number:pit_number.integerValue];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeDownSeat:{
|
||||
/// 用户下麦
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:)]) {
|
||||
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
|
||||
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:NO pit_number:pit_number.integerValue];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeSwicthSong:{
|
||||
/// 点歌
|
||||
NSString *action = [NSString stringWithFormat:@"%@",msg.Text[@"action"]];
|
||||
if (action.intValue == 1) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(applySongWaitAgreeWithUserNickname:)]) {
|
||||
[self.delegate applySongWaitAgreeWithUserNickname:model.FromUserInfo.nickname];
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (action.intValue == 2) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(nextSongDidStartWithSongInfo:nextInfo:)]) {
|
||||
[self.delegate nextSongDidStartWithSongInfo:model.songInfo nextInfo:model.nextInfo];
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (action.intValue == 4) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(applySongNoAgreeWithUserId:)]) {
|
||||
[self.delegate applySongNoAgreeWithUserId:model.FromUserInfo.user_id];
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (action.intValue == 3) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(nextSongDidChangedWithNextSong:)]) {
|
||||
[self.delegate nextSongDidChangedWithNextSong:model.nextInfo];
|
||||
}
|
||||
return;
|
||||
}
|
||||
// @{
|
||||
// @"action":@"1", // 1有人发起点歌 主持人同意点歌走房间类型变化推送 2 切歌 3 下一首歌有变化 4 拒绝
|
||||
//
|
||||
// // 有人发起点歌时 前端收到推送为1 根据当前自己所在的麦位是否为主持麦,为主持麦时弹出有人申请点歌弹窗,其余人不处理该条推送
|
||||
//
|
||||
// @"songInfo":@{ // 仅在切歌时有该条消息
|
||||
// @"song_code":@"歌曲code",
|
||||
// @"song_name":@"歌曲名称",
|
||||
// @"singer":@"演唱者",
|
||||
// @"poster":@"歌曲封面",
|
||||
// @"duration":@"歌曲时长",
|
||||
//
|
||||
// @"user_id":@"点唱用户id",
|
||||
// @"nickname":@"点唱用户昵称",
|
||||
// @"avatar":@"点唱用户头像",
|
||||
// @"dress":@"点唱用户装扮",
|
||||
// @"charm":@"点唱用户魅力",
|
||||
// }
|
||||
// }
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomTypeChanged:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomTypeDidChanged)]) {
|
||||
[self.delegate roomTypeDidChanged];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeCharmRankList:{
|
||||
/// 点唱房魅力发生变化
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(songRoomCharmRankListDidChanged:)]) {
|
||||
NSArray *list = [NSArray yy_modelArrayWithClass:[QXRoomPitModel class] json:msg.Text[@"userCharmList"]];
|
||||
[self.delegate songRoomCharmRankListDidChanged:list];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeRoomInfoChanged:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomInfoDidChanged:)]) {
|
||||
QXRoomInfoModel *model = [QXRoomInfoModel yy_modelWithJSON:msg.Text[@"RoomInfo"]];
|
||||
[self.delegate roomInfoDidChanged:model];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeSetManage:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSetManagerOrCompere:isManager:isAdd:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[self.delegate roomSetManagerOrCompere:model.FromUserInfo isManager:YES isAdd:YES];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeSetCompere:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSetManagerOrCompere:isManager:isAdd:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[self.delegate roomSetManagerOrCompere:model.FromUserInfo isManager:NO isAdd:YES];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeCompereIsDelete:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSetManagerOrCompere:isManager:isAdd:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[self.delegate roomSetManagerOrCompere:model.FromUserInfo isManager:NO isAdd:NO];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeManagerIsDelete:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSetManagerOrCompere:isManager:isAdd:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[self.delegate roomSetManagerOrCompere:model.FromUserInfo isManager:YES isAdd:NO];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
|
||||
case QXRoomMessageTypeTakeOff:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(userDidTakeOffWithUserInfo:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[self.delegate userDidTakeOffWithUserInfo:model.FromUserInfo];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeRoomClearCharm:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomClearCharm)]) {
|
||||
[self.delegate roomClearCharm];
|
||||
}
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeSeatMute:{
|
||||
/// 房间麦位位被禁麦
|
||||
}
|
||||
break;;
|
||||
case QXRoomMessageTypeSeatLock:{
|
||||
/// 房间被锁麦
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSeatStatusDidChangedIsLock:pit_number:)]) {
|
||||
NSString *is_lock = [NSString stringWithFormat:@"%@",msg.Text[@"is_lock"]];
|
||||
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
|
||||
[self.delegate roomSeatStatusDidChangedIsLock:is_lock pit_number:pit_number];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomUserMute:{
|
||||
/// 用户被禁言
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(userMuteStatusDidChanged:isMute:isMutePit:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
NSString *is_mute = [NSString stringWithFormat:@"%@",msg.Text[@"is_mute"]];
|
||||
NSString *is_mute_pit = [NSString stringWithFormat:@"%@",msg.Text[@"is_mute_pit"]];
|
||||
[self.delegate userMuteStatusDidChanged:model.FromUserInfo isMute:is_mute isMutePit:is_mute_pit];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case QXRoomMessageTypeRoomAuctionUpSeat:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(auctionUpSeatWithUserInfo:isUpSeat:)]) {
|
||||
NSString *type = [NSString stringWithFormat:@"%@",msg.Text[@"type"]];
|
||||
/// 1 上麦 2 下麦
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[self.delegate auctionUpSeatWithUserInfo:model.FromUserInfo isUpSeat:type.intValue==1];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomAuctionStart:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(auctionStartOrEndIsStart:user:getUser:)]) {
|
||||
QXRoomAuctionUser *user = [QXRoomAuctionUser yy_modelWithJSON:msg.Text[@"auction_user"]];
|
||||
[self.delegate auctionStartOrEndIsStart:YES user:user getUser:nil];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomAuctionPitChanged:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(auctionListDidChanged:)]) {
|
||||
NSArray *list = [NSArray yy_modelArrayWithClass:[QXRoomPitModel class] json:msg.Text[@"auction_list"]];
|
||||
[self.delegate auctionListDidChanged:list];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomAuctionEnd:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(auctionStartOrEndIsStart:user:getUser:)]) {
|
||||
QXRoomAuctionUser *user = [QXRoomAuctionUser yy_modelWithJSON:msg.Text[@"auction_user"]];
|
||||
QXRoomAuctionUser *getUser = [QXRoomAuctionUser yy_modelWithJSON:msg.Text[@"recipient"]];
|
||||
[self.delegate auctionStartOrEndIsStart:NO user:user getUser:getUser];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomAuctionDelayTime:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(auctionTimeDelayWithEndTime:)]) {
|
||||
NSString *endTime = [NSString stringWithFormat:@"%@",msg.Text[@"duration"]];
|
||||
[self.delegate auctionTimeDelayWithEndTime:endTime];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomAuctionTypeDidChanged:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(auctionTypeDidChanged:)]) {
|
||||
NSString *endTime = [NSString stringWithFormat:@"%@",msg.Text[@"type"]];
|
||||
[self.delegate auctionTypeDidChanged:endTime];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomCabinRoomValueChanged:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(cabinRoomValueDidChanged:)]) {
|
||||
NSString *hot_value = [NSString stringWithFormat:@"%@",msg.Text[@"hot_value"]];
|
||||
[self.delegate cabinRoomValueDidChanged:hot_value];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomRecieveInvitePk:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(recievePKInviteWithSendRoomId:AcceptRoomId:PkId:message:)]) {
|
||||
NSString *SendRoomId = [NSString stringWithFormat:@"%@",msg.Text[@"SendRoomId"]];
|
||||
NSString *AcceptRoomId = [NSString stringWithFormat:@"%@",msg.Text[@"AcceptRoomId"]];
|
||||
NSString *PkId = [NSString stringWithFormat:@"%@",msg.Text[@"PkId"]];
|
||||
NSString *message = [NSString stringWithFormat:@"%@",msg.Text[@"text"]];
|
||||
[self.delegate recievePKInviteWithSendRoomId:SendRoomId AcceptRoomId:AcceptRoomId PkId:PkId message:message];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomPKAgreeOrRefuse:{
|
||||
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(agreeOrRefusePKIsAgree:user_id:room_id:pk_id:)]) {
|
||||
NSString *type = [NSString stringWithFormat:@"%@",msg.Text[@"type"]];
|
||||
NSString *room_id = [NSString stringWithFormat:@"%@",msg.Text[@"room_id"]];
|
||||
NSString *pk_id = [NSString stringWithFormat:@"%@",msg.Text[@"pk_id"]];
|
||||
[self.delegate agreeOrRefusePKIsAgree:type.intValue==1 user_id:user_id room_id:room_id pk_id:pk_id];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model userId:user_id];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomPKStart:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(pkStartWithPkEndTimes:pk_id:)]) {
|
||||
NSString *pk_end_times = [NSString stringWithFormat:@"%@",msg.Text[@"pk_end_times"]];
|
||||
NSString *pk_id = [NSString stringWithFormat:@"%@",msg.Text[@"pk_id"]];
|
||||
[self.delegate pkStartWithPkEndTimes:pk_end_times pk_id:pk_id];
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomPKEnd:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(pkResultWithIsVictory:end_time:victory_name:victory_cover:defeated_name:defeated_cover:)]) {
|
||||
NSString *type = [NSString stringWithFormat:@"%@",msg.Text[@"type"]];
|
||||
NSString *victory_name = [NSString stringWithFormat:@"%@",msg.Text[@"victory_name"]];
|
||||
NSString *victory_cover = [NSString stringWithFormat:@"%@",msg.Text[@"victory_cover"]];
|
||||
NSString *defeated_name = [NSString stringWithFormat:@"%@",msg.Text[@"defeated_name"]];
|
||||
NSString *defeated_cover = [NSString stringWithFormat:@"%@",msg.Text[@"defeated_cover"]];
|
||||
NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"end_time"]];
|
||||
[self.delegate pkResultWithIsVictory:type.intValue end_time:end_time victory_name:victory_name victory_cover:victory_cover defeated_name:defeated_name defeated_cover:defeated_cover];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomPKDisconnect:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(pkDisConnect)]) {
|
||||
[self.delegate pkDisConnect];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypePKValueDidChanged:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomPKValueDidChangedWithRoomIdA:create_value_a:room_id_b:receive_value_b:)]) {
|
||||
NSString *room_id_a = [NSString stringWithFormat:@"%@",msg.Text[@"room_id_a"]];
|
||||
NSString *room_id_b = [NSString stringWithFormat:@"%@",msg.Text[@"room_id_b"]];
|
||||
NSString *create_value_a = [NSString stringWithFormat:@"%@",msg.Text[@"create_value_a"]];
|
||||
NSString *receive_value_b = [NSString stringWithFormat:@"%@",msg.Text[@"receive_value_b"]];
|
||||
[self.delegate roomPKValueDidChangedWithRoomIdA:room_id_a create_value_a:create_value_a room_id_b:room_id_b receive_value_b:receive_value_b];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case QXRoomMessageTypeRoomInLineNumber:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(aplayMicInLineNumberDidChanged:)]) {
|
||||
NSString *count = [NSString stringWithFormat:@"%@",msg.Text[@"count"]];
|
||||
[self.delegate aplayMicInLineNumberDidChanged:count];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomOnlineNumber:{
|
||||
NSString *online_number = [NSString stringWithFormat:@"%@",msg.Text[@"online_number"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomOnlineNumberDidChangedOnlineNumber:)]) {
|
||||
[self.delegate roomOnlineNumberDidChangedOnlineNumber:online_number];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case QXRoomMessageTypeRoomPkNeedAgree:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomPKRecieveLoserWantToRunRoadWithUserInfo:)]) {
|
||||
[self.delegate roomPKRecieveLoserWantToRunRoadWithUserInfo:model.FromUserInfo];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case QXRoomMessageTypeRoomBlindBox:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeGift;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomUserInfoDidChanged:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
model.messageType = QXRoomChatMessageTypeChat;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomUserInfoDidChanged:)]) {
|
||||
[self.delegate roomUserInfoDidChanged:model.FromUserInfo];
|
||||
}
|
||||
}
|
||||
break;
|
||||
/// 交友房
|
||||
case QXRoomMessageTypeRoomFriendPartDidChanged:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendPartDidChangedWithType:friend_id:end_time:relationModel:)]) {
|
||||
[self.delegate friendPartDidChangedWithType:model.step friend_id:model.friend_id end_time:model.end_time relationModel:model.friend_user];
|
||||
}
|
||||
if (model.step.intValue != 3) {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomFriendDelayTime:{
|
||||
NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"end_time"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendTimeDelayWithTime:)]) {
|
||||
[self.delegate friendTimeDelayWithTime:end_time];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeSeatDidChanged:{
|
||||
NSArray *pitArray = [NSArray yy_modelArrayWithClass:[QXRoomPitModel class] json:msg.Text[@"list"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendSeatDidChanged:)]) {
|
||||
[self.delegate friendSeatDidChanged:pitArray];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeHeartDidChanged:{
|
||||
NSArray *heartArray = [NSArray yy_modelArrayWithClass:[QXRoomFriendHeartListModel class] json:msg.Text[@"list"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendHeartNumberDidChanged:)]) {
|
||||
[self.delegate friendHeartNumberDidChanged:heartArray];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomFriendCreateRelation:{
|
||||
QXRoomFriendRelationModel *relationModel = [QXRoomFriendRelationModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendRelationIsCreatedWithrelationModel:)]) {
|
||||
[self.delegate friendRelationIsCreatedWithrelationModel:relationModel];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeFriendRoomQuit:{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendCabinRoomIsQuit)]) {
|
||||
[self.delegate friendCabinRoomIsQuit];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeCabinTimeDelay:{
|
||||
NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"time_day"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(friendCabinRoomTimeDelayWithTime:)]) {
|
||||
[self.delegate friendCabinRoomTimeDelayWithTime:end_time];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeMeetActivityProgressUpdate:{
|
||||
NSDictionary *progressDict = msg.Text;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(meetActivityProgressIsUpdate:)]) {
|
||||
[self.delegate meetActivityProgressIsUpdate:progressDict];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeMeetActivityDrawGift:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(meetActivityGiftInfoIsUpdate:)]) {
|
||||
[self.delegate meetActivityGiftInfoIsUpdate:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomDidFire:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
NSInteger fromPitNumber = [msg.Text[@"from_pit_number"] integerValue];
|
||||
NSInteger toPitNumber = [msg.Text[@"to_pit_number"] integerValue];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSeatExchangedWithFromPitNumber:toPitNumber:userInfo:)]) {
|
||||
[self.delegate roomSeatExchangedWithFromPitNumber:fromPitNumber toPitNumber:toPitNumber userInfo:model.FromUserInfo];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
model.messageType = QXRoomChatMessageTypeSystem;
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case QXRoomMessageTypeRoomClearUserCharm:{
|
||||
NSString *userId = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomClearUserCharmWithUserId:)]) {
|
||||
[self.delegate roomClearUserCharmWithUserId:userId];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeRoomUserOnlineStatus:{
|
||||
NSString *userId = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
|
||||
// 1 在线 2离线
|
||||
NSInteger type = 1;
|
||||
type = [msg.Text[@"type"] integerValue];
|
||||
BOOL isOnline = type == 1?YES:NO;
|
||||
// if (self.delegate && [self.delegate respondsToSelector:@selector(roomUserOnlineStatusDidChanged:userId:)]) {
|
||||
// [self.delegate roomUserOnlineStatusDidChanged:YES userId:userId];
|
||||
// }
|
||||
NSDictionary *parm = @{
|
||||
@"user_id":userId,
|
||||
@"is_online":[NSNumber numberWithBool:isOnline],
|
||||
};
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:noticeRoomUserOnlineStatusDidChanged object:parm];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
/// 有人向我发起pk
|
||||
QXRoomMessageTypeRoomRecieveInvitePk = 1029,
|
||||
/// 拒绝或接受pk
|
||||
QXRoomMessageTypeRoomPKAgreeOrRefuse = 1030,
|
||||
/// pk开始
|
||||
QXRoomMessageTypeRoomPKStart = 1031,
|
||||
/// pk结束 惩罚时间
|
||||
QXRoomMessageTypeRoomPKEnd = 1032,
|
||||
/// pk断开
|
||||
QXRoomMessageTypeRoomPKDisconnect = 1033,
|
||||
|
||||
*/
|
||||
|
||||
|
||||
-(void)onRecvC2CTextMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info text:(NSString *)text{
|
||||
|
||||
}
|
||||
-(void)onRecvC2CCustomMessage:(NSString *)msgID sender:(V2TIMUserInfo *)info customData:(NSData *)data{
|
||||
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
|
||||
NSInteger meesageType = msg.MsgType.integerValue;
|
||||
if (meesageType == QXRoomMessageTypeMuteRemoteAudio){
|
||||
NSString *json = [NSString stringWithFormat:@"%@",msg.Text[@"text"]];
|
||||
NSDictionary *dict = [json jsonValueDecoded];
|
||||
NSInteger is_mute = [[dict objectForKey:@"is_mute"] integerValue];
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(pkMuteRemoteAudio:fromUserInfo:)]) {
|
||||
[self.delegate pkMuteRemoteAudio:is_mute==1 fromUserInfo:model.FromUserInfo];
|
||||
}
|
||||
}
|
||||
}
|
||||
-(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]) {
|
||||
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:)]) {
|
||||
[self.delegate didInsertMessge:model];
|
||||
}
|
||||
}else if (meesageType == QXRoomMessageTypeClearMessage) {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClearAllMessage)]) {
|
||||
[self.delegate didClearAllMessage];
|
||||
}
|
||||
}else if (meesageType == QXRoomMessageTypeSongLrc){
|
||||
NSString *json = [NSString stringWithFormat:@"%@",msg.Text[@"text"]];
|
||||
NSDictionary *dict = [json jsonValueDecoded];
|
||||
NSInteger positionMs = [[dict objectForKey:@"position"] integerValue];
|
||||
if (positionMs<=0) {
|
||||
return;
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(roomSongLrcProgress:)]) {
|
||||
[self.delegate roomSongLrcProgress:positionMs];
|
||||
}
|
||||
QXLOG(@"收到歌词进度userID--%@---positionMs---%ld",info.userID,positionMs);
|
||||
}else if (meesageType == QXRoomMessageTypeMuteLocalAudio){
|
||||
NSString *json = [NSString stringWithFormat:@"%@",msg.Text[@"text"]];
|
||||
NSDictionary *dict = [json jsonValueDecoded];
|
||||
NSInteger is_mute = [[dict objectForKey:@"is_mute"] integerValue];
|
||||
QXUserHomeModel *userModel = [QXUserHomeModel yy_modelWithJSON:msg.Text[@"FromUserInfo"]];
|
||||
AgoraRtcAudioVolumeInfo *userInfo = [[AgoraRtcAudioVolumeInfo alloc] init];
|
||||
userInfo.uid = userModel.user_id.longLongValue;
|
||||
userInfo.volume = 0;
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:noticeUserSpeak object:userInfo];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage{
|
||||
NSDictionary *dict = @{
|
||||
@"RoomId":self.roomId?self.roomId:@"",
|
||||
@"MsgType":[NSNumber numberWithInteger:messageType],
|
||||
@"Text":@{
|
||||
@"FromUserInfo":@{
|
||||
@"user_id":[QXGlobal shareGlobal].loginModel.user_id?[QXGlobal shareGlobal].loginModel.user_id:@"",
|
||||
@"nickname":[QXGlobal shareGlobal].loginModel.nickname?[QXGlobal shareGlobal].loginModel.nickname:@"",
|
||||
@"avatar":[QXGlobal shareGlobal].loginModel.avatar?[QXGlobal shareGlobal].loginModel.avatar:@"",
|
||||
@"icon":[QXGlobal shareGlobal].loginModel.icon?[QXGlobal shareGlobal].loginModel.icon:@"",
|
||||
},
|
||||
@"text":message
|
||||
}
|
||||
};
|
||||
if (needInsertMessage) {
|
||||
QXRoomChatListModel *model = [[QXRoomChatListModel alloc] init];
|
||||
model.text = message;
|
||||
QXUserHomeModel *userInfo = [[QXUserHomeModel alloc] init];
|
||||
userInfo.avatar = [QXGlobal shareGlobal].loginModel.avatar;
|
||||
userInfo.nickname = [QXGlobal shareGlobal].loginModel.nickname;
|
||||
userInfo.user_id = [QXGlobal shareGlobal].loginModel.user_id;
|
||||
userInfo.icon = [QXGlobal shareGlobal].loginModel.icon;
|
||||
model.FromUserInfo = userInfo;
|
||||
model.messageType = QXRoomChatMessageTypeChat;
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
|
||||
[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:^{
|
||||
QXLOG(@"发送自定义消息成功");
|
||||
} fail:^(int code, NSString * _Nullable desc) {
|
||||
QXLOG(@"发送自定义消息失败");
|
||||
}];
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
-(void)sendC2CMessage:(NSString *)message messageType:(QXRoomMessageType)messageType userId:(NSString *)userId{
|
||||
NSDictionary *dict = @{
|
||||
@"RoomId":self.roomId?self.roomId:@"",
|
||||
@"MsgType":[NSNumber numberWithInteger:messageType],
|
||||
@"Text":@{
|
||||
@"FromUserInfo":@{
|
||||
@"user_id":[QXGlobal shareGlobal].loginModel.user_id?[QXGlobal shareGlobal].loginModel.user_id:@"",
|
||||
@"nickname":[QXGlobal shareGlobal].loginModel.nickname?[QXGlobal shareGlobal].loginModel.nickname:@"",
|
||||
@"avatar":[QXGlobal shareGlobal].loginModel.avatar?[QXGlobal shareGlobal].loginModel.avatar:@"",
|
||||
@"icon":[QXGlobal shareGlobal].loginModel.icon?[QXGlobal shareGlobal].loginModel.icon:@"",
|
||||
},
|
||||
@"text":message
|
||||
}
|
||||
};
|
||||
NSString *jsonStr = [dict jsonStringEncoded];
|
||||
NSData *data =[jsonStr dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSString*toUserId = [NSString stringWithFormat:@"u%@",userId];
|
||||
// [[V2TIMManager sharedInstance] sendC2CCustomMessage:data to:toUserId succ:^{
|
||||
//
|
||||
// } fail:^(int code, NSString * _Nullable desc) {
|
||||
//
|
||||
// }];
|
||||
V2TIMMessage *message1 = [[V2TIMManager sharedInstance] createCustomMessage:data];
|
||||
message1.isExcludedFromUnreadCount = YES;
|
||||
message1.isExcludedFromContentModeration = YES;
|
||||
[[V2TIMManager sharedInstance] sendMessage:message1 receiver:toUserId groupID:nil priority:(V2TIM_PRIORITY_HIGH) onlineUserOnly:YES offlinePushInfo:nil progress:^(uint32_t progress) {
|
||||
|
||||
} succ:^{
|
||||
|
||||
} fail:^(int code, NSString * _Nullable desc) {
|
||||
|
||||
}];
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation QXRoomMessage
|
||||
|
||||
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user