进入房间的时候关闭音频流的发布

我进入频道的时候调用muteLocalAudioStream(true)关闭音频流的发送,当我在发布音频的时候调用muteLocalAudioStream(false),远端用户在rtcEngine(_ engine: AgoraRtcEngineKit, remoteAudioStateChangedOfUid uid: UInt, state: AgoraAudioRemoteState, reason: AgoraAudioRemoteStateReason, elapsed: Int)接受到的消息是AgoraAudioRemoteReasonInternal而不是AgoraAudioRemoteReasonRemoteUnmuted,我的目的是在代理方法来更新远端用户的状态

是当你调用 muteLocalAudioStream(false) 时,返回的 reason 的值是 AgoraAudioRemoteReasonInternal 吗?你打印看下 state 返回的是什么?

第一次打印的顺序是AgoraAudioRemoteStateStarting->AgoraAudioRemoteReasonInternal->AgoraAudioRemoteStateDecoding->AgoraAudioRemoteReasonInternal,之后再调用muteLocalAudioStream开关返回的状态就是正常的了

一开始远端用户加入频道时,你的音频就是在发送状态的是么?那么这个时候sdk是无法检测到你的音频mute状态的变化的,只能获知到音频流的状态,所以reason会返回AgoraAudioRemoteReasonInternal,而不是AgoraAudioRemoteReasonRemoteUnmuted。

我们一般不建议通过 onRemoteAudioStateChanged 来判断远程用户的音频状态,因为这个回调,只有当【音频状态有变更】时才会触发。
一般是建议自己通过业务逻辑实现【本地用户如何判断远程用户的音频状态】,这样才能实现精准判断。例如:可以通过 RTM 的用户属性来实现,当本地的 mute 状态变更时,调用 addOrUpdateLocalUserAttributes 添加或更新本地用户的 mute 相关属性,远端用户加入频道后,可以通过 getUserAttributesByKeys 方法获取指定用户指定属性名的属性,从而获知 mute 状态。

你看下这篇帖子,和你的是同一个问题么?