在 RTCRoom 中发送自定义消息(前提是用户都在 RTCRoom 中)
发送端
-
继承 MessageContent 生成自定义消息类
示例代码:注意,flag 必须指定为 MessageTag.STATUS
@MessageTag(value = "SealRTC:SetRTCRoom", flag = MessageTag.STATUS) public class RTCRoomMessage extends MessageContent { private String userId; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public int getType() { return type; } public void setType(int type) { this.type = type; } private int type; public RTCRoomMessage(String userId, int type) { this.userId = userId; this.type = type; } public RTCRoomMessage(byte[] data) { try { JSONObject jsonObject = new JSONObject(new String(data)); userId = jsonObject.getString("userId"); type = jsonObject.getInt("type"); } catch (JSONException e) { e.printStackTrace(); } } @Override public byte[] encode() { try { JSONObject jsonObject = new JSONObject(); jsonObject.put("userId", userId); jsonObject.put("type", type); return jsonObject.toString().getBytes(); } catch (JSONException e) { e.printStackTrace(); } return new byte[0]; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(userId); dest.writeInt(type); } public RTCRoomMessage(Parcel parcel) { userId = parcel.readString(); type = parcel.readInt(); } public static final Creator<RTCRoomMessage> CREATOR = new Creator<RTCRoomMessage>() { @Override public RTCRoomMessage createFromParcel(Parcel source) { return new RTCRoomMessage(source); } @Override public RTCRoomMessage[] newArray(int size) { return new RTCRoomMessage[size]; } }; }
-
在初始化的地方注册自定义消息:
RongIMClient.registerMessageType(RTCRoomMessage.class)
-
加入房间成功后,发送自定义消息:
rtcRoom.sendMessage(messageContent, callback)
接收端
-
实现发送端的步骤 1 和 2;
-
注册 IRCRTCRoomEventsListener 回调,并在 onReceiveMessage(Message) 方法中处理自定义消息,示例代码如下:
MessageContent messageContent = message.getContent(); if (messageContent instanceof RTCRoomMessage){ RTCRoomMessage rtcRoomMessage = (RTCRoomMessage) messageContent; String userId = rtcRoomMessage.getUserId(); int type = rtcRoomMessage.getType(); }
用 IMLib 来发送自定义消息
比如您想发送会议的音视频邀请来通知用户加入会议,就需要用 IMLib 的发送消息方式,可参考开发文档