1、聊天室接口开发说明

从v5.3.2开始、sdk增加直播聊天室功能、推出直播领域消息解决方案。

聊天室跟普通的IM群(微信群,QQ群等)相比最大的不同点在于它是一个比较开放的虚拟组织。我们可以将直播聊天室比喻成一个广场,广场是开放无边界的,所有的人都可以随进随出,而群就像一个房间,是一个有边界有容量上限的私密组织,并且进入这个房间需要一定条件,一般是主动申请加入或被邀请加入。

1.1、相关接口:

直播sdk相关接口分2大类别:

1.1.1 后台Rest提供接口。具体参考文档地址://www.yuntongxun.com/doc/sdk/server/2_5_1_8.html

(1) 创建聊天室

(2) 切换聊天室状态(开启/关闭)

1.1.2 SDK接口文档(本页面提供)

IOS SDK内部提供的接口: 进入聊天室、聊天室内发送消息、获取聊天室信息、获取聊天室成员列表、获取成员信息、对成员进行禁言/拉黑、踢出、修改个人信息、修改聊天室信息、退出聊天室等接口。

1.2、直播聊天室三种成员角色:创建者(权限最高)>管理员>普通成员(权限高的能对权限低的做相应处理)。

(1) 创建者:可以对所有成员进行管理,禁言/解除禁言/拉黑/从黑名单移除/踢出/修改聊天室信息。

(2) 管理员:只能对成员进行管理,禁言/解除禁言/拉黑/从黑名单移除/踢出。

(3) 普通成员:无权限

2、聊天室操作代码示例:

✾ 进入聊天室 — 用户要在聊天室内说话,必须先调用接口进入此聊天室。用户进入聊天室后,不会收到此聊天室的历史消息推送。如有历史消息需求,可以调用消息查询接口进行显示。代码如下:

 - (void)joinLiveChatRoom:(ECJoinLiveChatRoomRequest *)request completion:(void(^)(ECError *error,
					ECLiveChatRoomInfo *roomInfo,ECLiveChatRoomMember *member))completion;
  ECJoinLiveChatRoomRequest *request = [[ECJoinLiveChatRoomRequest alloc] init];
  request.roomId = @"聊天室房间id";
  request.nickName = @”昵称”;
  [[ECDevice sharedInstance].liveChatRoomManager joinLiveChatRoom:request completion:^(ECError *error, 
				    ECLiveChatRoomInfo *roomInfo, ECLiveChatRoomMember *member) {
  if (error.errorCode ==ECErrorType_NoError) {// 加入成功之后做跳转逻辑
      } else {
           // 加入的错误码,详见错误码介绍
   }];
                    

✾ 聊天室内发送消息和接收聊天室消息 — 目前只支持发送文本消息,其他消息暂不支持,用户如果想发送其他消息,可以用userdata发送自定义消息。代码如下:

(1)聊天室内发送消息,代码如下:

[[ECDevice sharedInstance].liveChatRoomManager sendLiveChatRoomMessage:message progress:
	                           self completion:^(ECError *error, ECMessage *amessage) {
 if (error.errorCode == ECErrorType_LiveChatRoom_Forbid) {
      }
	return message;
	}
    
                    

(2)接收消息 — 详见DeviceDelegateHelper+LiveChatRoom.h。代码如下:

- (void)onReceiveLiveChatRoomMessage:(ECMessage *)message {
if (message.from.length==0) return;
if (message.timestamp) {
	NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];
	NSTimeInterval tmp =[date timeIntervalSince1970]*1000;
	message.timestamp = [NSString stringWithFormat:@"%lld", (long long)tmp];}
	[[NSNotificationCenter defaultCenter] postNotificationName:
	KNOTIFICATION_onLiveChatRoomMesssageChanged object:message];
	}          
                    

✾ 获取聊天室信息 — 此接口可以远程获取聊天室信息,SDK不会缓存聊天室信息,开发者需要根据业务自己做好缓存。代码如下:


[[ECDevice sharedInstance].liveChatRoomManager queryLiveChatRoomInfo:@”聊天室房间id” 
	        completion:^(ECError *error, ECLiveChatRoomInfo *roomInfo) {
if (error.errorCode == ECErrorType_NoError) {
     }
}];				
                

✾ 修改聊天室信息 — 只有创建者才能修改房间信息,创建者可以修改公告,房间昵称,是否全员禁言等功能。代码如下:


ECModifyLiveChatRoomInfoRequest *request = [[ECModifyLiveChatRoomInfoRequest alloc] init];
request.roomId =@”聊天室房间id”;
request.roomName = @”房间名称”;
request.announcement = @”公告”;
request.isAllMuteMode = 是否全员禁言;
request.roomExt = @"透传字段";
[[ECDevice sharedInstance].liveChatRoomManager modifyLiveChatRoomInfo:request 
		           completion:^(ECError *error, ECLiveChatRoomInfo *roomInfo) {
      if (error.errorCode == ECErrorType_NoError) {
     } else {}
}];
				
                

✾ 获取聊天室成员列表 — 此接口可以远程获取聊天室成员列表,SDK不会缓存聊天室成员列表和查询单个成员信息,开发者需要根据业务自己做好缓存。代码如下:


 NSString *userId = self.listArray.lastObject;(为空第一页)
  [[ECDevice sharedInstance].liveChatRoomManager queryLiveChatRoomMembers:@”聊天室房间id” userId:nil pageSize:10 completion:^(ECError *error, NSArray *userArray) {
   if (error.errorCode == ECErrorType_NoError) {
        [self.listArray removeAllObjects];
        [self.listArray addObjectsFromArray:userArray];
        [self.collectionView reloadData];
        }
       }];

				
                

✾ 获取成员信息 — 当用户需要查看自己或者其他成员信息时,可以调用此接口,访问其他人的信息。代码如下:

NSString *roomId = @”聊天室房间id”;
NSString *userId = @”用户id”;
[[ECDevice sharedInstance].liveChatRoomManager queryLiveChatRoomMember:roomId userId:
		        useId completion:^(ECError *error, ECLiveChatRoomMember *amember) {
     if (error.errorCode == ECErrorType_NoError) {
      }
}];
                

✾ 修改个人信息 — 在当前聊天室房间中设置昵称、透传信息。代码如下:

ECModifyLiveChatRoomMemberInfoRequest *request = [[ECModifyLiveChatRoomMemberInfoRequest alloc] init];
    request.roomId =@”聊天室房间id”;
    request.nickName = @”昵称”;
     request.infoExt = @"透传字段(可以是头像信息等)";
     [[ECDevice sharedInstance].liveChatRoomManager modifyLiveChatRoomSelfInfo:
		       request completion:^(ECError *error, ECLiveChatRoomMember *member) {
            if (error.errorCode == ECErrorType_NoError) {
            } else {}
        }];
                

✾ 禁言 — 角色权限高的用户可以对角色权限低的用户设置禁言状态,设置禁言后的用户将不能发送消息,但可以接收消息。代码如下:

	ECForbidLiveChatRoomMemberRequest *request =
      	[[ECForbidLiveChatRoomMemberRequest alloc] init];
	request.roomId = @”聊天室房间id”;
	request.userId = @”用户id”;
	request.isMute = @”是否禁言”;
	request.muteDuration = @”禁言时长”;
	[[ECDevice sharedInstance].liveChatRoomManager forbidLiveChatRoomMember:
		           request completion:^(ECError *error, ECLiveChatRoomMember *member) {
        if (error.errorCode == ECErrorType_NoError) {}
		}];
                

✾ 拉黑 — 角色权限高的用户可以对角色权限低的用户设置拉黑状态,设置拉黑后的用户将不能发送消息,不能接收消息,并且若被移除聊天室,被拉黑的用户将不能加入此房间。代码如下:

	ECDefriendLiveChatRoomMemberRequest *request = 
		      [[ECDefriendLiveChatRoomMemberRequest alloc] init];
	request.roomId =@”房间id”;
	request.userId =@”将要拉黑的用户id”;
	request.isBlack = @”是否拉黑”;
	[[ECDevice sharedInstance].liveChatRoomManager dfriendLiveChatRoomMember:
	      request completion:^(ECError *error, ECLiveChatRoomMember *member) {
      if (error.errorCode == ECErrorType_NoError) {}
	}];

                

✾ 踢出 — 创建者/管理员可以将成员从该聊天室中进行踢出。代码如下:

	ECKickLiveChatRoomMemberRequest *request = [[ECKickLiveChatRoomMemberRequest alloc] init];
	request.roomId = @”聊天室id”;
	request.userId = @”用户id”;
	[[ECDevice sharedInstance].liveChatRoomManager kickLiveChatRoomMember:
	        request completion:^(ECError *error, NSString *userId) {
       if (error.errorCode == ECErrorType_NoError) {}
	}];
                

✾ 退出聊天室 — 用户主动退出聊天室,调用此接口。代码如下:

	ECExitLiveChatRoomRequest *request = [[ECExitLiveChatRoomRequest alloc] init];
        request.roomId =@”聊天室id”;
        [[ECDevice sharedInstance].liveChatRoomManager exitLiveChatRoom:request completion:^(ECError *error,
      		NSString *roomId) {
            if (error.errorCode != ECErrorType_NoError) {
            }
        }];
                

✾ 聊天室内的通知消息 — 当用户加入,退出,被禁言,被踢出,被拉黑,变更角色等,聊天室内的成员都会收到通知消息. 在聊天室中所有的通知都以消息 ECLiveChatRoomNoticeMessage 的形式展示,内部 ECLiveChatRoomNoticeType为不同类型的通知。代码如下:

/**
	收到聊天室的通知消息
	@param msg 通知消息体
*/
- (void)onReceiveLiveChatRoomNoticeMessage:(ECLiveChatRoomNoticeMessage *)msg;
通过ECLiveChatRoomNoticeMessage 的type字段区分不同的通知消息体类型.

                

文档更新时间:2017年7月11日