ミュート状態の共有および制御
ミュートとは、マイクに入力されたオーディオの送信を無効にすることをいいます。ローカルオーディオのミュート/ミュート解除を操作し、アプリケーションのミュート状態をピアと共有できます。また、特定のピアもしくはすべてのピアにミュート/ミュート解除をリクエストすることもできます。
PlanetKit 6.0以前では、ミュートの制御がマイクの作動に直接的な影響を及ぼすことはありませんでした。しかし、PlanetKit 6.0からミュートの制御が次のようにマイクを制御します。
- ローカルオーディオをミュートにすると、PlanetKitがマイクをオフにしてオーディオ送信を無効にするため、マイクインジケーター(microphone indicator)がオフになります。
- ローカルオーディオのミュートを解除すると、PlanetKitがマイクをオンにしてオーディオ送信を有効にするため、マイクインジケーターがオンになります。
ローカルオーディオのミュート制御および共有
通話タイプ別にローカルオーディオをミュートまたはミュート解除する方法について説明します。
1対1通話
1対1通話でローカルオーディオをミュートまたはミュート解除するには、muteMyAudio()を使用します。ローカルオーディオのミュート状態の変更は、peerMicDidMuteまたはpeerMicDidUnmuteを介してピアに転送されます。
次の図は、1対1通話でローカルオーディオをミュートまたはミュート解除するフローを示しています。
関連するサンプルコードは次のとおりです。
ローカルオーディオをミュートまたはミュート解除する
// mute: true for mute, false for unmute
func muteMyAudioExample(call: PlanetKitCall, mute: Bool) {
call.muteMyAudio(mute) { success in
print("muteMyAudio(mute=\(mute)) result: \(success)")
}
}
ピア側で関連イベントを処理する
extension CallDelegateExample : PlanetKitCallDelegate {
...
func peerMicDidMute(_ call: PlanetKitCall) {
// This is called when the peer changed their microphone status to be muted.
// Write your own code here.
}
func peerMicDidUnmute(_ call: PlanetKitCall) {
// This is called when the peer changed their microphone status to be unmuted.
// Write your own code here.
}
}
グループ通話
グループ通話でローカルオーディオをミュートまたはミュート解除するには、muteMyAudio()を使用します。ローカルオーディオのミュート状態の変更は、peersMicDidMuteまたはpeersMicDidUnmuteを介してピアに転送されます。
次の図は、グループ通話でローカルオーディオをミュートまたはミュート解除するフローを示しています。
関連するサンプルコードは次のとおりです。
ローカルオーディオをミュートまたはミュート解除する
// mute: true for mute, false for unmute
func muteMyAudioExample(conference: PlanetKitConference, mute: Bool) {
conference.muteMyAudio(mute) { success in
print("muteMyAudio(mute=\(mute)) result: \(success)")
}
}
ピア側で関連イベントを処理する
extension ConferenceDelegateExample : PlanetKitConferenceDelegate {
...
func peersMicDidMute(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer]) {
// This is called when one or more peers changed their microphone status to be muted.
// Write your own code here.
}
func peersMicDidUnmute(_ conference: PlanetKitConference, peers: [PlanetKitConferencePeer]) {
// This is called when one or more peers changed their microphone status to be unmuted.
// Write your own code here.
}
}
リモートオーディオにおけるミュートのリクエスト
通話タイプ別にリモートオーディオのミュートまたはミュート解除をリクエストする方法について説明します。
ピアがリクエストを受けた際にオーディオをミュート/ミュート解除するかどうかは、実装によって異なります。
以下の例では、ピアがリクエストに応じてミュートまたはミュート解除を行うと仮定します。
1対1通話
1対1通話でピアにミュートまたはミュート解除をリクエストするには、requestPeerMute()を使用します。このリクエストはmyMuteRequestedByPeerを介してピアに転送され、リモートオーディオのミュート状態の変更はpeerMicDidMuteまたはpeerMicDidUnmuteを介してローカルユーザーに転送されます。
次の図は、1対1通話でリモートオーディオのミュートまたはミュート解除をリクエストするフローを示しています。
関連するサンプルコードは次のとおりです。
リモートオーディオのミュートまたはミュート解除をリクエストする
// mute: true for mute, false for unmute
func requestPeerMuteExample(call: PlanetKitCall, mute: Bool) {
call.requestPeerMute(mute) { success in
print("requestPeerMute(mute=\(mute)) result: \(success)")
}
}
ピア側で関連イベントを処理する
extension CallDelegateExample : PlanetKitCallDelegate {
...
func myMuteRequestedByPeer(_ call: PlanetKitCall, mute: Bool) {
// This is called when the peer requests the local user to mute or unmute the microphone.
call.muteMyAudio(mute) { success in
print("muteMyAudio(mute=\(mute)) result: \(success)")
}
}
}
グループ通話
グループ通話では、特定のピアまたはすべてのピアにオーディオをミュートまたはミュート解除するようにリクエストできます。
- 特定のピアにミュートまたはミュート解除をリクエストするには、
requestPeerMute()を使用します。 - すべてのピアにミュートまたはミュート解除をリクエストするには、
requestPeersMute()を使用します。
このリクエストはmyMuteRequestedByPeerを介してピアに転送され、リモートオーディオのミュート状態の変更はpeersMicDidMuteまたはpeersMicDidUnmuteを介してローカルユーザーに転送されます。
次の図は、グループ通話でリモートオーディオのミュートまたはミュート解除をリクエストするフローを示しています。
関連するサンプルコードは次のとおりです。
リモートオーディオのミュートまたはミュート解除をリクエストする
// Request mute for single peer
// mute: true for mute, false for unmute
func requestPeerMuteExample(conference: PlanetKitConference, mute: Bool, peerId: PlanetKitUserId) {
conference.requestPeerMute(mute, peerId: peerId) { success in
print("requestPeerMute(mute=\(mute), peerId=\(peerId)) result: \(success)")
}
}
// Request mute for all peers
// mute: true for mute, false for unmute
func requestPeersMuteExample(conference: PlanetKitConference, mute: Bool) {
conference.requestPeersMute(mute) { success in
print("requestPeersMute(mute=\(mute)) result: \(success)")
}
}
ピア側で関連イベントを処理する
extension ConferenceDelegateExample : PlanetKitConferenceDelegate {
...
func myMuteRequestedByPeer(_ conference: PlanetKitConference, peer: PlanetKitConferencePeer, mute: Bool) {
// This is called when a peer requests the local user to mute or unmute the microphone.
conference.muteMyAudio(mute) { success in
print("muteMyAudio(mute=\(mute)) result: \(success)")
}
}
}
関連API
ミュートの制御とミュート状態の共有に関連するAPIは次のとおりです。
1対1通話
メソッド
イベント
-
PlanetKitCallDelegateのpeerMicDidMute(_:) -
PlanetKitCallDelegateのpeerMicDidUnmute(_:) -
PlanetKitCallDelegateのmyMuteRequestedByPeer(_:mute:)
グループ通話
メソッド
-
PlanetKitConferenceのmuteMyAudio(_:completion:) -
PlanetKitConferenceのrequestPeerMute(_:peerId:completion:) -
PlanetKitConferenceのrequestPeersMute(_:completion:)