「Agora RTM SDK」FAQ 汇总

本文总结了开发者在集成 Agora RTM SDK 过程中遇到的常见问题及答案。


更多 Agora RTM SDK 相关链接:
RTM /实时消息 Demo 下载链接
RTM /实时消息 SDK 官方文档

1赞

RTM 对同时在线人数是否有限制?单个频道内并发人数可以支持到多少?

Agora RTM SDK 对于并发人数以及单频道并发人数的支持没有上限。

  • 如果单频道并发人数低于 1000 人,建议把该频道的消息数控制在每秒 200 条以内;
  • 如果低于 10000 人,建议把该频道的消息数控制在每秒 100 条以内;
  • 如果单频道人数超过 10000 人,建议把该频道的消息数控制在 30 条以下,并请联系我们的支持团队沟通具体使用场景。

当呼叫某用户时,如何判断该用户是否正在通话中?

Agora 建议在 app 层面为每个用户设立邀请状态标志 inviteState 和通话状态标志 callState 监听用户的接听状态。所有标志位默认初始状态为 false ,只要用户的任一状态标志变为 true 时不能接受新的呼叫。详情请参考官网文档: 如何实现忙线拒接功能?

RTM/信令后台保活问题

Agora RTM SDK 只保证在前台的服务,在后台可能会有被系统挂起或杀进程的情况,后台的要用手机推送功能。

这主要是因为 Agora RTM SDK 是长连接(TCP),可能会由于手机操作系统策略导致关闭 TCP 或者被终止进程。建议通过集成第三方信令来实现推送功能。

如何监听直播模式远端观众用户加入频道 / 离开频道的事件?

详情请参考官网文档:直播场景下,如何监听远端观众用户加入/离开频道的事件?


由于 RTC SDK 的 onUserJoinedonUserOffline 回调只能监听远端用户(通信模式)/主播(直播模式)加入当前频道 / 离开当前频道的事件,无法监听远端观众的事件。故在此推荐两种可行方案:

1、可以通过消息通知服务提供的对应事件获知观众加入/离开频道的动作,请参考:
https://docs-preview.agoralab.co/cn/Agora%20Platform/rtc_eventtype?platform=All%20Platforms
https://docs-preview.agoralab.co/cn/Agora%20Platform/ncs

2、可以通过集成信令系统(例如 Agora RTM SDK),监听观众加入/离开频道的事件
https://docs.agora.io/cn/Real-time-Messaging/API%20Reference/RTM_java/index.html#joinorleavechannel

实现示例:同一个用户分别加入 RTC 频道和 RTM 频道(频道名一致),由于加入两个频道的动作是绑定的(在代码里写死),所以当 RTM 监听到该用户加入频道时,说明该用户也加入了 RTC 频道。

如何实现呼叫邀请?

Agora RTC SDK 提供的是实时视频/语音通话功能,而视频呼叫邀请属于信令系统的功能之一。
开发者可以通过同时集成 Agora RTC SDK 和 Agora RTM SDK 来实现呼叫邀请的功能。

请参考相关 API 文档:https://docs.agora.io/cn/Real-time-Messaging/API%20Reference/RTM_java/index.html#callinvitation
视频呼叫邀请 Demo:https://github.com/AgoraIO-Usecase/Video-Calling

关于离线呼叫邀请说明:
当双方都在线时,被叫可通过 acceptRemoteinvitation 方法接受来自对方的呼叫邀请;当被叫不在线时,SDK 会在被叫不在线时不断重发呼叫邀请。若消息发送 30 秒后被叫仍未上线,SDK 会返回 LOCAL_INVITATION_ERR_PEER_OFFLINE 错误码。
Agora RTM SDK 暂不支持离线推送功能。需要集成第三方信令来实现推送功能。

为什么使用同一个 Token,可以成功加入 RTC 的频道,但是 RTM login 就失败了?

RTM 的 Token 和 RTC 的 Token 是不相同的,两种 Token 的生成方式是不一样的。
请参考如何生成 RTM Token:https://docs.agora.io/cn/Real-time-Messaging/rtm_token?platform=All%20Platforms

另外,临时 Token 目前不适用于 Agora RTM SDK。

Linux C++ 平台和 Linux Java 平台的 glibc 版本要求是什么样的?

glibc 版本必须至少为 2.14,否则会出现 so 库加载错误(报错"version ‘GLIBC_2.14’ not found" 或 “NoClassDefFoundError"),可尝试通过升级 glibc 版本解决。

你们提到的 调用频率限制 / qps 是针对单个 SDK 的还是针对单个实例?

qps 是 queries per second 的缩写。所有的 qps 都是针对单个 RtmClient 实例而言,而非针对单个 Agora RTM SDK。

  • 在 Native 平台,你可以通过创建多实例提高 API 的调用频率;
  • 在 Web 平台,我们 暂不建议 通过创建多实例提高 API 的调用频率。

实时消息 SDK 和原来的信令 SDK 有什么区别?

实时消息系统将逐步替代信令。除了高可靠、高并发、全球化部署等优势之外,Agora RTM SDK 将会持续更新,不断推出更多更丰富的功能和场景应用。

对 Agora Signaling SDK 的维护已于 2019 年第四季度停止。我们不再修复老信令 SDK 故障, 服务端只提供日常最低限度维护以保障信令 SDK 仍然可用。请尽快升级到 Agora RTM SDK。详情请参考信令维护计划及兼容性说明
可参考 “升级到 RTM” 文档,帮助你更快速的迁移到 Agora RTM SDK。

如何实现禁麦、连麦等语聊房相关场景?

在实际应用场景中,你可以结合 Agora RTM SDK 的消息发送与频道属性功能,和 Agora RTC SDK 的切换用户角色功能,实现主播对观众的上下麦操作。详情请参考官网文档: 如何实现主播对观众进行上下麦操作?

如何发送图片、文件等富媒体消息?

你可以使用 Agora RTM SDK 发送和接收图片或文件消息。

Agora RTM SDK 支持上传下载大小不超过 30 MB 的任意文件格式的非空图片或文件。每份上传到 Agora 服务器的图片或文件都对应一个 media ID,在服务端保存 7 天。你可以通过 media ID 在 7 天有效期内从 Agora 服务器下载对应的图片或文件。

详情请参考官网文档: 发送和接收图片或文件消息