此文档基于 Android RTM、RTC SDK,其他平台API 基本一致,可供参考。
RTM:用于搭建呼叫的一整套流程、信令交互
RTC:用于呼叫流程通了之后的音视频交互
由于呼叫和音视频是完全分开的两个 sdk,所以在开发的时候需要注意的情况很多。
点对点呼叫
点对点呼叫就是2个人的通话,基本的通话场景中包含发起呼叫、拒绝呼叫、同意呼叫、视频呼叫转语音接听、呼叫正忙等。
下面我将一一介绍这几个功能的实现以及需要注意的地方。
以下功能默认你已基本阅读过 RTM RTC 文档且登录成功了 RTM SDK,RTC SDK 也已经准备好。
主叫
发起呼叫
- 创建 LocalInvitation 对象
val localInvitation = rtmCallManager.createLocalInvitation(userId)
上述方法用于创建一个呼叫对象,⏰ 其中参数 userId 为对方的登录 RTM sdk 的 userId
- 添加自定义信息
发起呼叫的时候,通常我们都需要告诉对方本次是视频呼叫还是音频呼叫,是否多人呼叫,或者其他跟业务相关的信息。这时候就可以在上面创建的 localInvitation 对象中添加自定义信息。
localInvitation.setContent("自定义的消息体")
//通常我们都会选择发送json格式字符串,例如
"mediaType":0 //0视频 1 音频
"isMeeting":1 //0 多人模式 1 p2p
"rtcChannelId":"10000"//⚠️这个参数尤为重要,这个参数通常都由主叫生成,在呼叫的时候带给被叫。该参数的作用是告诉对方我们这次呼叫将进入哪个 RTC 的频道,两个人进入同一个 RTC 频道时,音视频才会通。
- 发送呼叫
rtmCallManager.sendLocalInvitation(localInvitation, null)
有了以上两步,就可以发送呼叫了。主叫发送呼叫之后会收到相关的回调如下,建议将注释copy到代码中去,方便处理业务。
//对方已收到你的呼叫
void onLocalInvitationReceivedByPeer(