你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
没有找到相关结果
融云技术支持
说明
要实现不依赖群组的多人实时音视频通话,需要开发者的客户端和服务器端分别实现对应的逻辑。
融云客户端SDK发送消息有频率限制,1s内允许最大发送5条IM消息,此方案的核心思想是由app server帮助客户端 发送多人音视频通话涉及的IM信令消息。
app server端
开发者的app server端需要提供2个接口给客户端(2.9.0版本以上SDK提供1个发送单聊消息的接口即可)
1.生成mediaId
mediaId要求一个全局唯一的整数,且 0 < mediaId < 0x7ffffff
注意,此接口供融云 SDK 2.8.32以下版本使用(agora引擎),2.9.0以上版本SDK可以不实现(blink引擎和rtc引擎)
关于不同引擎说明,可参考知识库(https://support.rongcloud.cn/ks/ODg5)
2.发送单聊消息
发送单聊消息的IM Server API文档为(https://www.rongcloud.cn/docs/server.html#message_private_publish)
发送单聊消息的参数由开发者的客户端提供
调用IM Server API 通过private消息发送实时音视频相关IM信令消息,需要特别注意以下参数:
fromUserId=当前用户(自己)的id toUserId=参会者1&toUserId=参会者2 // 除自己外的,所有参会者拼在一起 isPersisted=0 isCounted=0 isIncludeSender=0
客户端
1.实现io.rong.calllib.IRongCallSignalSender接口,实现时应当调用开发者的app server端api,参考代码如下:
public class CallSignalSender implements IRongCallSignalSender { private final static String MEDIA_ID = "/call/voip/media_id"; private final static String MESSAGE_SENDER = "/misc/messages"; HttpClientHelper httpClientHelper; public CallSignalSender(HttpClientHelper httpClientHelper) { this.httpClientHelper = httpClientHelper; } public void getMediaId(final IRongCallSignalSender.GetMediaIdCallback callback) { //调用app server接口获取meidaId,2.9.0以上SDK可以不实现此接口,直接返回0 //注意,接口不实现时,也必须回调callback.onGotMediaId(0 + ""); //callback.onGotMediaId(0 + ""); httpClientHelper.get(MEDIA_ID, new HttpClientHelper.Callback() { @Override public void onSuccess(Integer mediaIdInfo) { callback.onGotMediaId("" + mediaIdInfo); } @Override public void onFail(RceErrorCode errorCode) { callback.onError(-1); } }); } public void sendSignal(List targetUserIds, Message message, String pushContent, String pushData, final IRongCallSignalSender.SendSignalCallback callback) { //调用app server接口发送IM信令消息 //map数据为app server调用IM server api发送IM单聊消息的参数,客户端直接复制此段代码即可 Map map = new HashMap<>(); map.put("conversation_type", Conversation.ConversationType.PRIVATE.getValue() + ""); map.put("target_ids", targetUserIds); map.put("object_name", message.getObjectName()); map.put("content", new String(message.getContent().encode())); map.put("push_content", pushContent); map.put("push_data", pushData); map.put("persisted", false); map.put("include_sender", 0); httpClientHelper.post(MESSAGE_SENDER, map, new HttpClientHelper.Callback() { @Override public void onSuccess(GsonBaseInfo gsonBaseInfo) { if (callback != null) { callback.onSuccess(); } } @Override public void onFail(RceErrorCode errorCode) { if (callback != null) { callback.onError(-1); } } }); } }
2.设置CallSignalSender
在融云SDK init之后调用接口
RongCallClient.setCallSignalSender(IRongCallSignalSender signalSender)
3.如果使用calllib或者开发者实现通话界面
则调用如下方法开始不基于群组的多人voip:
//converationType必须传NONE,targeId为null即可,invitedList为多人音视频通话的参与者 RongCallClient.getInstance().startCall(Conversation.ConversationType.NONE, null, invitedList,null, RongCallCommon.CallMediaType.VIDEO, null);
4.使用callkit的通话界面 调用如下方法即可
/** * 发起的多人通话,不依赖群、讨论组等 * * @param context * @param mediaType * @return */ public static void startMultiCall(final Context context, ArrayList userIds, final CallMediaType mediaType)
5.注意,2.9.0以上SDK app server可以不实现MEDIA_ID接口,但是android端必须回调
callback.onGotMediaId(0 + "");通知融云 SDK层
6.注意,客户端不基于群组的多人音视频通话,不止主叫需要实现IRongCallSignalSender,被叫端也一样需要实现这个接口,主叫和被叫需要实现1,2中相同的逻辑
要回复问题请先登录或注册
1 个回复
融云技术支持
说明
要实现不依赖群组的多人实时音视频通话,需要开发者的客户端和服务器端分别实现对应的逻辑。
融云客户端SDK发送消息有频率限制,1s内允许最大发送5条IM消息,此方案的核心思想是由app server帮助客户端
发送多人音视频通话涉及的IM信令消息。
app server端
开发者的app server端需要提供2个接口给客户端(2.9.0版本以上SDK提供1个发送单聊消息的接口即可)
1.生成mediaId
mediaId要求一个全局唯一的整数,且 0 < mediaId < 0x7ffffff
注意,此接口供融云 SDK 2.8.32以下版本使用(agora引擎),2.9.0以上版本SDK可以不实现(blink引擎和rtc引擎)
关于不同引擎说明,可参考知识库(https://support.rongcloud.cn/ks/ODg5)
2.发送单聊消息
发送单聊消息的IM Server API文档为(https://www.rongcloud.cn/docs/server.html#message_private_publish)
发送单聊消息的参数由开发者的客户端提供
调用IM Server API 通过private消息发送实时音视频相关IM信令消息,需要特别注意以下参数:
客户端
1.实现io.rong.calllib.IRongCallSignalSender接口,实现时应当调用开发者的app server端api,参考代码如下:
2.设置CallSignalSender
在融云SDK init之后调用接口
3.如果使用calllib或者开发者实现通话界面
则调用如下方法开始不基于群组的多人voip:
4.使用callkit的通话界面
调用如下方法即可
5.注意,2.9.0以上SDK app server可以不实现MEDIA_ID接口,但是android端必须回调
callback.onGotMediaId(0 + "");通知融云 SDK层
6.注意,客户端不基于群组的多人音视频通话,不止主叫需要实现IRongCallSignalSender,被叫端也一样需要实现这个接口,主叫和被叫需要实现1,2中相同的逻辑