当主叫向指定用户发送呼叫邀请时,如果被叫用户已有一个呼叫进入或被叫用户正在接听另一个电话,主叫如何通过声网 RTM SDK 的呼叫邀请功能得知对方正在忙线中?
声网 RTM SDK 的呼叫邀请功能仅提供了呼叫邀请的控制逻辑实现,即该功能只负责控制通话的开始。如需完整实现一个通话场景,必须将声网 RTM SDK 与其他音视频 SDK(比如声网 RTC SDK)结合使用。
声网建议在 app 层面为每个用户设立邀请状态标志 inviteState 和通话状态标志 callState 监听用户的接听状态。所有标志位默认初始状态为 false,只要用户的任一状态标志变为 true 时不能接受新的呼叫。
inviteState |
callState |
忙线状态 |
|---|---|---|
false |
false |
用户空闲 |
true |
false |
用户忙 |
false |
true |
用户忙 |
onRemoteInvitationReceived 时,将状态标志 inviteState 设为 true:inviteState 设回 false 表示本次呼叫邀请结束而通话并未开始,不必进行后面的步骤。onRemoteInvitationRefused:呼叫邀请已被被叫拒绝;onRemoteInvitationCanceled:呼叫邀请已被主叫取消;onRemoteInvitationFailure:呼叫邀请过程因其他原因失败。onRemoteInvitationAccepted 回调(被叫已接受呼叫邀请)时,将状态标志 inviteState 设回 false,并将 callState 设为 true 表示本次呼叫邀请结束而通话即将开始。onConnectionStateChanged 回调监听 connectionState 的状态:connectionState 处于以下状态时保持状态标志 callState 为 true,表示用户正在建立通话或正在通话中:CONNECTING: 建立网络连接中;CONNECTED: 网络连接已建立;RECONNECTING: 网络重连中。connectionState 处于以下状态时将通话状态标志设回 false, 表示用户不在通话中:DISCONNECTED: 网络连接断开;FAILED: 网络连接失败。refuseRemoteInvitation 方法拒绝呼叫邀请并在收到的 RemoteInvitation 内设置 response 属性为 "busy"。