「Agora RTM SDK」FAQ 大汇总

RTM 常见FAQ


更多 Agora RTM SDK 相关链接:

Agora RTM 官网FAQ
Agora GitHub 链接1: 可下载demo
Agora GitHub 链接2: 可下载demo
Agora GitHub 社区


论坛内常见FAQ相关链接:

RTC 常见FAQ:论坛链接
Web 常见FAQ:论坛链接
小知识 常见FAQ:论坛链接
云端录制 常见FAQ:论坛链接
本地录制 常见FAQ:论坛链接
小程序 常见FAQ:论坛链接
灵动课堂 常见FAQ:论坛链接

点击问题展开答案


Q1. 呼叫邀请的适用场景和主要功能

使用 Agora RTC SDK 搭配 RTM SDK 可以进行呼叫控制的功能。当业务设计符合以下内容时,可以集成呼叫邀请来实现需求。

  1. 呼叫邀请的主要行为:
  • 主叫发送呼叫邀请;
  • 主叫取消呼叫邀请;
  • 被叫接受收到的呼叫邀请;
  • 被叫拒绝收到的呼叫邀请。
  1. Agora RTM SDK 支持:
  • 主叫在发送邀请时提供附加信息,比如:媒体频道名(channelId)和 content;
  • 被叫在接受或拒绝邀请时提供相应内容(response);
  • 单个主叫同时发送多个呼叫邀请(支持向同一或多个被叫同时发送多个呼叫邀请)。
  1. 呼叫邀请的应用场景包含:
  • APP 的呼叫邀请的响铃功能;
  • 邀请对方结合 Agora Native SDK 进行屏幕共享;
  • 两个用户之间同时或先后发起视频呼叫和白板共享功能;
  • 需要同步状态的呼叫场景
  • 语聊房管理员静音和控制麦序等功能

呼叫邀请相关文档:
https://docs.agora.io/cn/Real-time-Messaging/rtm_invite_android?platform=Android

呼叫邀请相关 API 参考:
https://docs.agora.io/cn/Real-time-Messaging/API%20Reference/RTM_java/index.html#callinvitation

呼叫邀请 Demo:

GitHub


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

参考文档:官网文档解释


Q3. RTM/信令后台保活问题

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

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


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

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


Q5. 直播场景下,如何监听远端观众用户加入/离开频道的事件?

参考文档:官网文档解释

由于 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 频道。


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

参考文档:官网文档解释
RTM 的 Token 和 RTC 的 Token 是不相同的,两种 Token 的生成方式是不一样的。

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


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

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


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

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

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

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

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

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


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

参考文档:官网文档解释

在实际应用场景中,你可以结合 Agora RTM SDK 的消息发送与频道属性功能,和 Agora RTC SDK 的切换用户角色功能,实现主播对观众的上下麦操作。


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

参考文档:官网文档解释

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

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