常见问题
常见问题
1. 如何处理频道相关常见问题?
网络环境差时,SDK 会强行让用户自动退出频道么?
SDK 不会让用户自动退出频道,除非用户自己主动退出,例如 App 调用 LeaveChannel 。
在每个房间,每个频道内,通话中是否有管理员?
没有管理员的概念,管理员是属于业务管理层的范围。可以由信令层实现,由信令服务器主动下发命令,调用 SDK 的接口来实现通话管理。
客户端是否需要维护频道?
频道是自动创建和删除的,客户端无需处理和维护。当所有客户端都离开一个频道时,频道自动被删除。
如何监听频道内谁在说话?
在 Unity 项目中可以通过 OnAudioVolumeIndication 回调方法提示了频道内谁在说话,以及说话者的音量。
该提醒默认为关闭状态。如需启用,请调用 EnableAudioVolumeIndication 方法进行配置。
2. 如何将指定用户移出频道?
在实时音视频互动场景中,通常会有将指定用户移出频道的需求。声网根据实际场景需求,提供如下三种解决方案:
方案一
场景:通话结束后,用户(多见于 Web 用户)忘记离开频道。虽然没有实际通话,但会产生用量。
方案:为防止这种情况发生,可以使用音量提示回调(OnAudioVolumeIndication,或在 App 层监测用户在一段时间内是否发布音频流,来确定用户是否在通话中。如否,则在 App 逻辑中,调用 LeaveChannel 主动下线。
方案二
场景:在直播间,如果遇到连麦用户发表不良言论等情况,房主需要让该用户离开直播间。
方案:你可以搭配使用 RTM 的点对点消息功能。通过 sendMessageToPeer 发送下线通知,对方通过 onMessageReceived 回调收到该消息后,主动调用 RTC SDK 的 LeaveChannel 方法离开频道。
3. 为什么用 Unity 组件播放背景音乐会无声?
问题描述
在 iOS 设备中,用 Unity 组件(AudioSource 和 AudioClip)播放背景音乐,你可能会遇到以下问题:
- 加入频道前可以听见背景音乐,但加入频道后听不见。
- 加入频道后可以听见背景音乐,但离开频道后听不见。
问题原因
当你在频道外使用 Unity 组件播放背景音乐时,系统的 AudioSession 为 active 状态。在你加入频道或离开频道后,Unity SDK 会将系统的 AudioSession 改为 deactive 状态,所以你在加入频道或离开频道后无法听到背景音乐。
解决方案
在加入频道前调用 mRtcEngine.SetParameters("{"che.audio.keep.audiosession":true}"); 接口,保证系统的 AudioSession 状态不被改变。之后,即使你多次进出频道,也都能听到背景音乐。
4. 如何处理 Token 相关错误码?
由于 Token 具有一定的时效性,因此 App 在运行过程中,你有可能会收到如下与 Token 相关的错误码或事件回调。本文对这些事件进行了梳理,提供触发的原因以及解决方法,帮助你在 App 出现异常时进行问题排查。
109:Token 已过期
问题描述
Native 端:调用 JoinChannel 方法加入频道时,SDK 回调 OnError 事件,并报告错误码 ERR_TOKEN_EXPIRED(109)。
问题原因
Token 过期。
解决方案
Token 一旦过期,你就需要在服务端重新生成一个 Token,然后调用 RenewToken 方法尝试重新加入频道。
110:Token 无效
问题描述
Native 端:调用 JoinChannel 方法加入频道时,SDK 回调 OnError 事件,并报告错误码 ERR_INVALID_TOKEN(110)。
问题原因
生成的 Token 无效。加入频道时却未传入 Token 或 你初始化和加入频道时填入频道名不匹配
解决方案
需要确认是否传入Token,并且生成 Token 的频道名和加入频道时填入的频道名一致。
Token 过期相关事件回调
为保证通信体验,声网提供如下两个回调,提醒用户 Token 即将过期或已经过期:
- OnTokenPrivilegeWillExpire:该回调表示 Token 即将在 30 秒内失效。收到这个回调时,你需要在服务端重新生成 Token,然后调用 RenewToken 方法,将新生成的 Token 传给 SDK。
- OnRequestToken:该回调表示 Token 已经失效。收到这个回调时,你需要在服务端重新生成 Token,然后调用 JoinChannel 方法重新尝试加入频道。
各语言 Token 错误码对照表
| 错误码 | Java/C++/C# | Objective-C |
|---|---|---|
| 109 | ERR_TOKEN_EXPIRED | AgoraErrorCodeTokenExpired |
| 110 | ERR_INVALID_TOKEN | AgoraErrorCodeInvalidToken |
5. 如何处理音频卡顿问题?
卡顿的问题可能涉及到网络,设备,物理环境等原因。比较常见的是客户端的网络较差导致。
步骤1
通过声网水晶球自检操作
- 检查网络状况是否良好。可以换到 4G 或更稳定的 Wi-Fi 环境下再尝试。
- UOS即将支持声网水晶球分析系统,尽情期待!通过声网提供的水晶球服务,可以确认用户的网络、设备 CPU 使用是否正常。
步骤2:联系技术支持
如果问题仍旧存在,请 联系我们 获取技术支持,并提供以下信息,方便快速定位问题:
| 信息类型 | 详情 |
|---|---|
| 必要信息 | - 用户听到语音卡顿的频道名 - 哪些用户听到了语音卡顿,提供他们的用户 ID - 哪些用户造成了语音卡顿,提供他们的用户 ID - 录音文件(如果有的话) |
| 可选信息 | - 如果是直播场景,卡顿是否来自于主播 - 如果频道内显示了视频,检查视频播放是否流畅、清晰 |