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) 创建聊天室,参考demo中的CreateRoomUI 类。

(2) 切换聊天室状态(开启/关闭),参考demo中的ECLIveChatRoomListUI 类。

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

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

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

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

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

(3) 普通成员:无权限

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

? 进入聊天室 — 用户要在聊天室内说话,必须先调用接口进入此聊天室,之后便可以进行沟通。代码如下:

	/**构建进入聊天室透传信息对象、设置昵称与透传信息、别的用户可以通过调用查询聊天室成员信息接口进行获取*/
        ECLiveChatRoomMemberInfoBuilder infoBuilder = 
			new ECLiveChatRoomMemberInfoBuilder(CCPAppManager.getUserId(),
					CCPAppManager.getUserId()+":infoext");					
         ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();		 
         if(roomManager==null){
             return;
         }
         roomManager.joinLiveChatRoom(room.roomId, infoBuilder, SDKCoreHelper.buildNotify(), 
					new ECLiveCallBack.OnEnterLiveChatRoomListener() {
             @Override
             public void onEnterResult(ECError error, ECLiveChatRoom liveChatRoom,
						ECLiveChatRoomMember member) {
                 if (error.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
                    //进入房间成功
                   // do 业务逻辑    
                 } else {
                     //进入房间失败
                  // do 业务逻辑
                 }
             }
         });
                    

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

					
ECMessage msg = ECMessage.createECMessage(ECMessage.Type.TXT);
// 创建一个文本消息体,并添加到消息对象中
ECTextMessageBody msgBody = new ECTextMessageBody(text.toString());
msg.setBody(msgBody);

	ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
        if(roomManager==null){
            return;
        }
     roomManager.sendLiveChatRoomMessage(msg, new OnSendLiveChatRoomMessageListener() {
            @Override
            public void onSendResult(ECError error, ECMessage message){
                if (error.errorCode == SdkErrorCode.REQUEST_SUCCESS){                   
                }
            }
        });
                    

? 获取聊天室信息 — 通过查询聊天室信息、获取当前在线人数、聊天室名称等信息用于界面UI展示。代码如下:


ECLiveChatRoomManager roomManager =  ECDevice.getECLiveChatRoomManager();
        if(roomManager==null){
            return;
        }
    roomManager.queryLiveChatRoomInfo(房间id, new ECLiveCallBack.OnQueryLiveChatRoomInfoListener() {
            @Override
            public void onQueryLiveChatRoom(ECError error, ECLiveChatRoom liveChatRoom) {
                if (error.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
                             //查询成功
                   } else {
                           //查询失败
                          }
				   }
              });			
                

? 修改聊天室信息 — 创建者可以修改当前聊天室的展示信息。代码如下:

		//构建修改聊天室对象        
        ECLiveChatRoomModifyBuilder builder = new ECLiveChatRoomModifyBuilder(聊天室id,
		 聊天室昵称, 聊天室描述, 聊天室透传展示信息, 声音模式);
        ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
        if(roomManager==null)
		{
            return;
        }
        ECLiveNotifyWrapper notifyWrapper = new ECLiveNotifyWrapper(设置通知透传信息, 是否通知其他人);
        roomManager.modifyLiveChatRoomInfo(builder, notifyWrapper, 
			new ECLiveCallBack.OnUpdateLiveChatRoomListener() {
            @Override
            public void onResult(ECError ecError) {
                }
        });
				
                

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

 ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
                        if(roomManager==null){
                            return;
                        }
ECLiveSearchMembersConditionBuilder builder = new ECLiveSearchMembersConditionBuilder(room.roomId,"", 
					ECLiveEnums.ECRole.ECRole_CREATE,10);
   roomManager.queryLiveChatRoomMembers(builder,new ECLiveCallBack.OnQueryLiveChatRoomMembersListener(){
            @Override
            public void onQueryResult(ECError error, ArrayList list){
                if(error.errorCode==SdkErrorCode.REQUEST_SUCCESS){
                    }else{
                }
            }
        });
    }
				
                

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

ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
                        if(roomManager==null){
                            return;
                        }
roomManager.queryLiveChatRoomMember(room.roomId, member.userId, 
				new ECLiveCallBack.OnQuerySingleLiveChatRoomMembersListener() {
            @Override
            public void onQueryResult(ECError error, ECLiveChatRoomMember member){
            }
        });
                

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

ECLiveChatRoomMemberInfoBuilder modifySelfInfo = new ECLiveChatRoomMemberInfoBuilder(昵称,透传信息);
                   ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
                    if(roomManager==null){
                        return;
                    }
                    roomManager.modifyLiveChatRoomSelfInfo(聊天室id, modifySelfInfo, 
					new ECLiveCallBack.OnUpdateSelfInfoListener() {
                             @Override
                             public void onResult(ECError error) {
                    if (error.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
                          // do 业务逻辑    
                     } else {
                         // do 业务逻辑
                            }
                     }
                   });
                

? 对聊天室成员进行禁言/解除禁言 — 创建者、管理员可以对成员进行禁言/解除禁言/加入黑名单/从黑名单移除处理。代码如下:

	ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
        if(roomManager==null){
            return;
        }
ECLiveControlOption option = new ECLiveControlOption(时长[在禁言状态有效],state);
roomManager.forbidLiveChatRoomMember(room.roomId, userId, option, wrapper,
			new ECLiveCallBack.OnControlMemberStateListener() {
                           @Override
                            public void onResult(ECError ecError) {								
                                }
                        });
                

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

	ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
        if(roomManager==null){
            return;
        }
  roomManager.dfriendLiveChatRoomMember(room.roomId, userId, 拉黑/移除黑名单, 
					wrapper, new ECLiveCallBack.OnControlMemberStateListener() {
                            @Override
                            public void onResult(ECError ecError) {
                                if (ecError.errorCode == SdkErrorCode.REQUEST_SUCCESS) {                                    
                                }
                             }
                        });
                

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

 ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
                        if(roomManager==null){
                            return;
                        }
             ECLiveNotifyWrapper notifyWrapper = new ECLiveNotifyWrapper(设置通知透传信息, 是否通知其他人);
             roomManager.kickLiveChatRoomMember(聊天室id, 被踢的成员userid, 
		notifyWrapper, new ECLiveCallBack.OnLiveChatRoomKickMemberListener() {
                            @Override
                            public void onResult(ECError ecError) {

                               }
                        });
                

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

	ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager();
        if(roomManager==null){
            return;
         }
ECLiveNotifyWrapper notifyWrapper = new ECLiveNotifyWrapper(设置通知透传信息, 是否通知其他人);
        roomManager.exitLiveChatRoom(room.roomId, notifyWrapper,
						new ECLiveCallBack.OnExitLiveChatRoomListener() {

            @Override
            public void onResult(ECError ecError) {
                if (ecError.errorCode == SdkErrorCode.REQUEST_SUCCESS) {
                    } else {
                }
         }
        });
                

? 接收聊天室消息及通知接口 — 当用户加入,退出,被禁言,被踢出,被拉黑,变更角色等,聊天室内的成员都会收到通知消息。

public interface OnLiveChatRoomListener{
    /**
     * 接收聊天室消息
     * @param message
     */
    void OnReceiveLiveChatRoomMessage(ECMessage message);
    /**
     * 接收聊天室通知消息
     * @param notice
     */
    void OnReceiveLiveChatRoomNotification(ECLiveChatRoomNotification notice);
    ///**通知类型*/ 根据type获取不同的通知类型
    //public ECLiveEnums.ECNoticeType noticeType;	
}
                

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