從v5.3.2開(kāi)始、sdk增加直播聊天室功能、推出直播領(lǐng)域消息解決方案。
聊天室跟普通的IM群(微信群,QQ群等)相比最大的不同點(diǎn)在于它是一個(gè)比較開(kāi)放的虛擬組織。我們可以將直播聊天室比喻成一個(gè)廣場(chǎng),廣場(chǎng)是開(kāi)放無(wú)邊界的,所有的人都可以隨進(jìn)隨出,而群就像一個(gè)房間,是一個(gè)有邊界有容量上限的私密組織,并且進(jìn)入這個(gè)房間需要一定條件,一般是主動(dòng)申請(qǐng)加入或被邀請(qǐng)加入。
直播sdk相關(guān)接口分2大類(lèi)別:
1.1.1 后臺(tái)Rest提供接口。具體參考文檔地址://www.hvjhxrn.cn/doc/sdk/server/2_5_1_8.html
(1) 創(chuàng)建聊天室,參考demo中的CreateRoomUI 類(lèi)。
(2) 切換聊天室狀態(tài)(開(kāi)啟/關(guān)閉),參考demo中的ECLIveChatRoomListUI 類(lèi)。
1.1.2 SDK接口文檔(本頁(yè)面提供)
安卓sdk內(nèi)部提供的接口: 進(jìn)入聊天室、聊天室內(nèi)發(fā)送消息、獲取聊天室信息、獲取聊天室成員列表、獲取成員信息、對(duì)成員進(jìn)行禁言/拉黑、踢出、修改個(gè)人信息、修改聊天室信息、退出聊天室等接口。
(1) 創(chuàng)建者:可以對(duì)所有成員進(jìn)行管理,包括禁言/解除禁言/拉黑/從黑名單移除/踢出/修改聊天室信息。
(2) 管理員:只能對(duì)成員進(jìn)行管理,禁言/解除禁言/拉黑/從黑名單移除/踢出。
(3) 普通成員:無(wú)權(quán)限
? 進(jìn)入聊天室 — 用戶(hù)要在聊天室內(nèi)說(shuō)話(huà),必須先調(diào)用接口進(jìn)入此聊天室,之后便可以進(jìn)行溝通。代碼如下:
/**構(gòu)建進(jìn)入聊天室透?jìng)餍畔?duì)象、設(shè)置昵稱(chēng)與透?jìng)餍畔ⅰe的用戶(hù)可以通過(guò)調(diào)用查詢(xún)聊天室成員信息接口進(jìn)行獲取*/ 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) { //進(jìn)入房間成功 // do 業(yè)務(wù)邏輯 } else { //進(jìn)入房間失敗 // do 業(yè)務(wù)邏輯 } } });
? 聊天室內(nèi)發(fā)送消息 — 目前只支持發(fā)送文本消息,其他消息暫不支持,用戶(hù)如果想發(fā)送其他消息,可以用userdata發(fā)送自定義消息。代碼如下:
ECMessage msg = ECMessage.createECMessage(ECMessage.Type.TXT); // 創(chuàng)建一個(gè)文本消息體,并添加到消息對(duì)象中 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){ } } });
? 獲取聊天室信息 — 通過(guò)查詢(xún)聊天室信息、獲取當(dāng)前在線(xiàn)人數(shù)、聊天室名稱(chēng)等信息用于界面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) { //查詢(xún)成功 } else { //查詢(xún)失敗 } } });
? 修改聊天室信息 — 創(chuàng)建者可以修改當(dāng)前聊天室的展示信息。代碼如下:
//構(gòu)建修改聊天室對(duì)象 ECLiveChatRoomModifyBuilder builder = new ECLiveChatRoomModifyBuilder(聊天室id, 聊天室昵稱(chēng), 聊天室描述, 聊天室透?jìng)髡故拘畔? 聲音模式); ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager(); if(roomManager==null) { return; } ECLiveNotifyWrapper notifyWrapper = new ECLiveNotifyWrapper(設(shè)置通知透?jìng)餍畔? 是否通知其他人); roomManager.modifyLiveChatRoomInfo(builder, notifyWrapper, new ECLiveCallBack.OnUpdateLiveChatRoomListener() { @Override public void onResult(ECError ecError) { } });
? 獲取聊天室成員列表 — 此接口可以遠(yuǎn)程獲取聊天室成員列表,SDK不會(huì)緩存聊天室成員列表和查詢(xún)單個(gè)成員信息,開(kāi)發(fā)者需要根據(jù)業(yè)務(wù)自己做好緩存。代碼如下:
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, ArrayListlist){ if(error.errorCode==SdkErrorCode.REQUEST_SUCCESS){ }else{ } } }); }
? 獲取成員信息 — 當(dāng)用戶(hù)需要查看自己或者其他成員信息時(shí),可以調(diào)用此接口,訪(fǎng)問(wèn)其他人的信息。代碼如下:
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){ } });
? 修改個(gè)人信息 — 在當(dāng)前聊天室房間中設(shè)置昵稱(chēng)、透?jìng)餍畔ⅰ4a如下:
ECLiveChatRoomMemberInfoBuilder modifySelfInfo = new ECLiveChatRoomMemberInfoBuilder(昵稱(chēng),透?jìng)餍畔?; 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 業(yè)務(wù)邏輯 } else { // do 業(yè)務(wù)邏輯 } } });
? 對(duì)聊天室成員進(jìn)行禁言/解除禁言 — 創(chuàng)建者、管理員可以對(duì)成員進(jìn)行禁言/解除禁言/加入黑名單/從黑名單移除處理。代碼如下:
ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager(); if(roomManager==null){ return; } ECLiveControlOption option = new ECLiveControlOption(時(shí)長(zhǎng)[在禁言狀態(tài)有效],state); roomManager.forbidLiveChatRoomMember(room.roomId, userId, option, wrapper, new ECLiveCallBack.OnControlMemberStateListener() { @Override public void onResult(ECError ecError) { } });
? 拉黑/移除黑名單 — 角色權(quán)限高的用戶(hù)可以對(duì)角色權(quán)限低的用戶(hù)設(shè)置拉黑狀態(tài),設(shè)置拉黑后的用戶(hù)將不能發(fā)送消息,不能接收消息,并且若被移除聊天室,被拉黑的用戶(hù)將不能加入此房間。代碼如下:
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) { } } });
? 踢出 — 創(chuàng)建者/管理員可以將成員從該聊天室中踢出。代碼如下:
ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager(); if(roomManager==null){ return; } ECLiveNotifyWrapper notifyWrapper = new ECLiveNotifyWrapper(設(shè)置通知透?jìng)餍畔? 是否通知其他人); roomManager.kickLiveChatRoomMember(聊天室id, 被踢的成員userid, notifyWrapper, new ECLiveCallBack.OnLiveChatRoomKickMemberListener() { @Override public void onResult(ECError ecError) { } });
? 退出聊天室 — 用戶(hù)主動(dòng)退出聊天室,調(diào)用此接口。代碼如下:
ECLiveChatRoomManager roomManager = ECDevice.getECLiveChatRoomManager(); if(roomManager==null){ return; } ECLiveNotifyWrapper notifyWrapper = new ECLiveNotifyWrapper(設(shè)置通知透?jìng)餍畔? 是否通知其他人); roomManager.exitLiveChatRoom(room.roomId, notifyWrapper, new ECLiveCallBack.OnExitLiveChatRoomListener() { @Override public void onResult(ECError ecError) { if (ecError.errorCode == SdkErrorCode.REQUEST_SUCCESS) { } else { } } });
? 接收聊天室消息及通知接口 — 當(dāng)用戶(hù)加入,退出,被禁言,被踢出,被拉黑,變更角色等,聊天室內(nèi)的成員都會(huì)收到通知消息。
public interface OnLiveChatRoomListener{ /** * 接收聊天室消息 * @param message */ void OnReceiveLiveChatRoomMessage(ECMessage message); /** * 接收聊天室通知消息 * @param notice */ void OnReceiveLiveChatRoomNotification(ECLiveChatRoomNotification notice); ///**通知類(lèi)型*/ 根據(jù)type獲取不同的通知類(lèi)型 //public ECLiveEnums.ECNoticeType noticeType; }
文檔更新時(shí)間:2017年7月10日