声网 RTM SDK 支持呼叫邀请功能,包含通用呼叫场景中的以下行为:
声网 RTM SDK 提供的呼叫邀请功能仅实现了呼叫邀请的基本控制逻辑,即发送、取消、接受和拒绝呼叫邀请。声网 RTM SDK 不会处理邀请接通之后的动作,也不会管理整个会话的生命周期。你需要根据自己的业务逻辑自行实现。
呼叫邀请可应用于以下场景:
在一个完整的呼叫邀请过程中,主叫和被叫的呼叫邀请状态分别由 LocalInvitation
和 RemoteInvitation
来定义。
发送呼叫邀请的步骤如下:
createLocalInvitation
创建 LocalInvitation
。此时 LocalInvitation
生命周期开始。sendLocalInvitation
发送呼叫邀请。被叫收到 onRemoteInvitationReceived
回调,此时 RemoteInvitation
生命周期开始。主叫收到 onLocalInvitationReceivedByPeer
回调。发送呼叫邀请的示例代码如下:
// 获取 RtmCallManager 实例
RtmCallManager = RtmClient.getRtmCallManager();
void inviteCall(final String peerUid, final String channel) {
//创建 LocalInvitation
LocalInvitation invitation = RtmCallManager.createLocalInvitation(peerUid);
invitation.setContent(channel);
//发送呼叫邀请
RtmCallManager.sendLocalInvitation(invitation);
}
主叫调用 cancelLocalInvitation
取消呼叫邀请。被叫收到 onRemoteInvitationCanceled
回调,此时 RemoteInvitation
生命周期结束。主叫收到 onLocalInvitationCanceled
回调,此时 LocalInvitation
生命周期结束。
取消呼叫邀请的示例代码如下:
//取消呼叫邀请
void cancelLocalInvitation() {
if (RtmCallManager != null && invitation != null) {
RtmCallManager.cancelLocalInvitation(invitation);
}
}
被叫从 onRemoteInvitationReceived
回调获取 RemoteInvitation
并调用 acceptRemoteInvitation
接受呼叫邀请。被叫收到 onRemoteInvitationAccepted
回调,此时 RemoteInvitation
生命周期结束。主叫收到 onLocalInvitationAccepted
回调,此时 LocalInvitation
生命周期结束。
接受呼叫邀请的示例代码如下:
// 接受呼叫邀请
void answerCall(final RemoteInvitation invitation) {
if (RtmCallManager != null && invitation != null) {
RtmCallManager.acceptRemoteInvitation(invitation);
}
}
被叫从 onRemoteInvitationReceived
回调获取 RemoteInvitation
并调用 refuseRemoteInvitation
拒绝呼叫邀请。被叫收到 onRemoteInvitationRefused
回调,此时 RemoteInvitation
生命周期结束。主叫收到 onLocalInvitationRefused
回调,此时 LocalInvitation
生命周期结束。
拒绝呼叫邀请的示例代码如下:
// 拒绝呼叫邀请
void refuseRemoteInvitation(@NonNull RemoteInvitation invitation) {
if (RtmCallManager != null) {
RtmCallManager.refuseRemoteInvitation(invitation);
}
}
API 详见呼叫邀请 API 文档。
我们在 GitHub 提供一个开源的示例项目,你也可以前往下载体验并参考源代码。