关于融云聊天室KV 值的正确使用
在使用融云集成即时通信的过程当中,根据产品业务逻辑,咱们使用了融云聊天室场景,由于咱们主要作的是直播聊天室的业务;在使用聊天室的过程当中,了解到融云这边是有针对聊天室属性作处理的,这样的话,更加方便产品的某些功能点的实现,好比说 人数的动态变化等等;html
现就我这边了解到的聊天室的KV 对你们作一个说明,增进对KV 使用的了解; 首先,要获取聊天室的属性,咱们固然应该加入聊天室,加入聊天室的方式以下所示:android
RongIM.getInstance().joinChatRoom(roomId, 20, new RongIMClient.OperationCallback() { @Override public void onSuccess() { } @Override public void onError(RongIMClient.ErrorCode errorCode) { } });
以上方法无需多言,调用便可加入聊天室,具体参数文档能够参考融云文档。ide
固然,要获取聊天室属性获取以前,确定要知道如何设置聊天室属性的,如下方式主要展现客户端的设置方式:ui
RongIMClient.getInstance().setChatRoomEntry(chatRoomId, key, value, sendNotification, isAutoDel, notificationExtra, new RongIMClient.OperationCallback() { /** * 成功回调 */ @Override public void onSuccess() { } /** * 失败回调 * @param errorCode 错误码 */ @Override public void onError(RongIMClient.ErrorCode errorCode) { }
});spa
接下来就是获取的方式了,这块是我在集成过程当中花费时间比较久的,在获取以前,须要先了解融云对于聊天室KV 的总体流程设置:code
-
加入聊天室以后,经过设置的监听 setKVStatusListener 来获取到服务KV 的变化,而后在收到变化以后,在调用 getChatRoomEntry 来获取KV 值便可 。htm
注意:前提条件是设置监听获取到KV 变化以后,才去获取,由于这个变化是服务发出的,也就是说这是一个通知状态;文档
监听的设置方式:get
RongIMClient.getInstance().setKVStatusListener(new RongIMClient.KVStatusListener() { @Override public void onChatRoomKVSync(String roomId) { } @Override public void onChatRoomKVUpdate(String roomId, Map<String, String> chatRoomKvMap) { } @Override public void onChatRoomKVRemove(String roomId, Map<String, String> chatRoomKvMap) { } });
当服务的KV 发送变化时候,会在 onChatRoomKVUpdate 中回调到的,回调中的Map 就是变化得KV 值,固然能够用户主动调用来进行获取,方式以下:直播
RongIMClient.getInstance().getAllChatRoomEntries(roomId, new RongIMClient.ResultCallback<Map<String, String>>() { @Override public void onSuccess(Map<String, String> stringStringMap) { } @Override public void onError(RongIMClient.ErrorCode e) { } });
经过以上步骤便可完成聊天室属性的设置,以及获取;