SDKsAndroid
发送自定义信令
使用 Android SDK 在通话房间中发送和接收自定义信令。
signalingSendCustomSignal() 用于在指定通话房间内发送少量与通话相关的业务信息,例如举手、切换布局提示或临时状态同步。它不是聊天消息接口,也不适合发送大量数据或文件。
发送信令
roomID 与 customInfo 都是必填字符串。需要传递结构化数据时,应定义稳定的数据格式并序列化为 JSON。
JSONObject signal = new JSONObject();
signal.put("version", 1);
signal.put("eventID", eventID);
signal.put("type", "hand-raised");
signal.put("userID", currentUserID);
signal.put("sentAt", System.currentTimeMillis());
OpenIMClient.getInstance().signalingManager.signalingSendCustomSignal(
new OnBase<String>() {
@Override
public void onSuccess(String result) {
// 信令发送请求已完成。
}
@Override
public void onError(int code, String error) {
// code 和 error 说明失败原因。
}
},
roomID,
signal.toString()
);成功回调只表示发送请求已完成,不表示其他参与者已收到或处理该信令。customInfo 可以包含协议版本和唯一的 eventID,以便接收方识别重复消息。自定义信令适合轻量、临时的通话协商,不提供大文件、聊天记录或长期状态的传输与保存能力。
接收信令
收到自定义信令时,OnSignalingListener.onReceiveCustomSignal 会返回 CustomSignalingInfo。先确认它属于当前房间并校验数据格式,再更新界面:
@Override
public void onReceiveCustomSignal(CustomSignalingInfo info) {
// 先检查 info.getRoomID(),再按业务协议解析 info.getCustomInfo()。
}如果业务需要避免重复处理,可以在自定义信令中携带唯一事件 ID,并在接收端记录已处理的事件。消息可能不会按发送顺序到达,因此不要依赖到达顺序决定业务状态。
将 onReceiveCustomSignal 与其他通话回调一起注册到处理通话事件中的 listener。SignalingManager 只保留一个 listener;重新设置会覆盖已有的其他通话回调。
自定义信令不是可重放的长期状态记录。连接恢复后,如需校准房间或业务状态,可重新查询房间信息或业务数据。
这个页面有帮助吗?