API Overview Document
Agora Real-time Messaging (RTM) SDK 提供了稳定可靠、低延时、高并发的全球消息云服务,帮助你快速构建实时场景。
如无特别说明,本页列出的大多数 RTM 核心业务方法都应在调用 loginByToken 方法成功收到 AgoraRtmLoginErrorOk
错误码后调用。
Agora RTM SDK 提供以下功能:
登录登出相关
SDK 与 RTM 服务器的连接状态是 RTM 开发过程需要理解的核心概念,详见
点对点消息
查询用户在线状态
订阅或取消订阅单个或多个指定用户的在线状态
用户属性增删改查
频道属性增删改查
查询单个或多个频道的成员人数
加入离开频道相关
频道消息
获取频道成员列表
呼叫邀请管理
更新 Token
日志设置与版本查询
定制方法
区域限制和云代理
状态码
SDK 与 Agora RTM 系统的连接状态。
状态码 |
描述 |
AgoraRtmConnectionStateDisconnected |
1: 初始状态。SDK 未连接到 Agora RTM 系统。 App 调用 loginByToken 方法后,SDK 开始登录 Agora RTM 系统,触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateConnecting 。 |
AgoraRtmConnectionStateConnecting |
2: SDK 正在登录 Agora RTM 系统。如果 SDK 登录成功,会触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateConnected 。如果 SDK 登录失败,会触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateDisconnected 。 |
AgoraRtmConnectionStateConnected |
3: SDK 已登录 Agora RTM 系统。如果 SDK 由于网络原因断开与 Agora RTM 系统的连接,SDK 触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateReconnecting 。如果 SDK 由于重复登录而被服务器踢出,SDK 触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateAborted 。如果 App 调用 logoutWithCompletion 方法成功登出系统,SDK 触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateDisConnected 。 |
AgoraRtmConnectionStateReconnecting |
4: SDK 与 Agora RTM 系统连接由于网络原因出现中断,SDK 正在尝试自动重连 Agora RTM 系统。如果 SDK 登录成功,SDK 触发 connectionStateChanged 回调,连接状态变为 AgoraRtmConnectionStateConnected 。SDK 会自动加入中断时用户所在频道,并自动将本地用户属性同步到服务端。如果 SDK 登录失败,SDK 会保持 AgoraRtmConnectionStateReConnecting 状态,继续自动重连。 |
AgoraRtmConnectionStateAborted |
5: SDK 放弃登录 Agora RTM 系统。 可能原因:另一实例已经以同一用户 ID 登录 Agora RTM 系统。 在此之后,SDK 需要调用 logoutWithCompletion 方法退出登录,再视情况调用 loginByToken 方法重新登录系统。 |
SDK 与 Agora RTM 系统的连接状态发生改变的原因。
状态码 |
描述 |
AgoraRtmConnectionChangeReasonLogin |
1: SDK 正在登录 Agora RTM 系统。 |
AgoraRtmConnectionChangeReasonLoginSuccess |
2: SDK 成功登录 Agora RTM 系统。 |
AgoraRtmConnectionChangeReasonLoginFailure |
3: SDK 登录失败。 |
AgoraRtmConnectionChangeReasonLoginTimeout |
4: SDK 未在 12 秒内登录 Agora RTM 系统,登录超时。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmConnectionChangeReasonInterrupted |
5: SDK 和 Agora RTM 系统的连接由于网络问题而断开超过 4 秒。 |
AgoraRtmConnectionChangeReasonLogout |
6: 用户已调用 logoutWithCompletion 方法登出 Agora RTM 系统。 |
AgoraRtmConnectionChangeReasonBannedByServer |
7: 登录被 Agora RTM 服务器禁止。 |
AgoraRtmConnectionChangeReasonRemoteLogin |
8: 本账号异地登陆,本地断开连接。 |
消息类别。
状态码 |
描述 |
AgoraRtmMessageTypeUndefined |
0: 未定义的消息类别。 |
AgoraRtmMessageTypeText |
1: 文本消息。 |
AgoraRtmMessageTypeRaw |
2: 自定义二进制消息。 |
订阅类型。
状态码 |
描述 |
AgoraRtmPeerSubscriptionOnlineStatus |
0: 订阅指定用户的在线状态。 |
AgoraPeerOnlineState
用户在线状态类型。
状态码 |
描述 |
AgoraRtmPeerOnlineStateOnline |
0: 用户在线。 |
AgoraRtmPeerOnlineStateUnreachable |
1: 连接状态不稳定(服务器连续 6 秒未收到来自 SDK 的数据包)。 |
AgoraRtmPeerOnlineStateOffline |
2: 用户不在线(用户未登录或已登出 Agora RTM 系统,或服务器连续 30 秒未收到来自 SDK 的数据包)。 |
返回给主叫的呼叫邀请状态码。
状态码 |
描述 |
AgoraRtmLocalInvitationStateIdle |
0: 返回给主叫的呼叫邀请状态码:初始状态。 |
AgoraRtmLocalInvitationStateSentToRemote |
1:仅供内部使用。 |
AgoraRtmLocalInvitationStateReceivedByRemote |
2:返回给主叫的呼叫邀请状态码:被叫已收到呼叫邀请。 |
AgoraRtmLocalInvitationStateAcceptedByRemote |
3:返回给主叫的呼叫邀请状态码:被叫已接受呼叫邀请。 |
AgoraRtmLocalInvitationStateRefusedByRemote |
4:返回给主叫的呼叫邀请状态码:被叫已拒绝呼叫邀请。 |
AgoraRtmLocalInvitationStateCanceled |
5:返回给主叫的呼叫邀请状态码:已成功取消呼叫邀请。 |
AgoraRtmLocalInvitationStateFailure |
6:返回给主叫的呼叫邀请状态码:呼叫邀请过程失败。 |
返回给被叫的呼叫邀请状态码。
状态码 |
描述 |
AgoraRtmRemoteInvitationStateIdle |
0:返回给被叫的呼叫邀请状态码:被叫收到的邀请的初始状态。 |
AgoraRtmRemoteInvitationStateInvitationReceived |
1:返回给被叫的呼叫邀请状态码:收到了来自主叫的呼叫邀请。 |
AgoraRtmRemoteInvitationStateAcceptSentToLocal |
2:仅供内部使用。 |
AgoraRtmRemoteInvitationStateRefused |
3:返回给被叫的呼叫邀请状态码:已拒绝来自主叫的呼叫邀请。 |
AgoraRtmRemoteInvitationStateAccepted |
4:返回给被叫的呼叫邀请状态码:已接受来自主叫的呼叫邀请。 |
AgoraRtmRemoteInvitationStateCanceled |
5:返回给被叫的呼叫邀请状态码:主叫已取消呼叫邀请。 |
AgoraRtmRemoteInvitationStateFailure |
6:返回给被叫的呼叫邀请状态码:呼叫邀请过程失败。 |
日志输出等级。
状态码 |
描述 |
AgoraRtmLogFilterOff |
0: 不输出日志信息。 |
AgoraRtmLogFilterInfo |
0x000f: 输出 CRITICAL、ERROR、WARNING 和 INFO 级别的日志信息。 我们推荐你将日志级别设为该等级。 |
AgoraRtmLogFilterWarn |
0x000e: 输出 CRITICAL、ERROR 和 WARNING 级别的日志信息。 |
AgoraRtmLogFilterError |
0x000c: 输出 CRITICAL 和 ERROR 级别的日志信息。 |
AgoraRtmLogFilterCritical |
0x0008: 输出 CRITICAL 级别的日志信息。 |
AgoraRtmLogFilterMask |
0x80f: 预留 |
错误码
查询单个或多个指定频道成员人数的相关错误码。
错误码 |
描述 |
AgoraRtmChannelMemberCountErrorOk |
0: 获取指定频道成员人数成功。 |
AgoraRtmChannelMemberCountErrorFailure |
1: 通用未知错误。 |
AgoraRtmChannelMemberCountErrorInvalidArgument |
2: 频道 ID 无效 |
AgoraRtmChannelMemberCountErrorTooOften |
3: 方法调用过于频繁。超过每秒 1 次的限制。 |
AgoraRtmChannelMemberCountErrorTimeout |
4: 服务器响应超时。当前的当前的超时设定为 5 秒。 |
AgoraRtmChannelMemberCountErrorExceedLimit |
5: 查询频道数超过 32 条上限。 |
AgoraRtmChannelMemberCountErrorNotInitialized |
101: Agora RTM 服务未完成初始化。 |
AgoraRtmChannelMemberCountErrorNotLoggedIn |
102: 本次操作前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
获取频道成员列表的相关错误码。
错误码 |
描述 |
AgoraRtmGetMembersErrorOk |
0: 频道成员列表获取成功。 |
AgoraRtmGetMembersErrorFailure |
1: 频道成员列表获取失败。 |
AgoraRtmGetMembersErrorRejected |
2: 预留错误码 |
AgoraRtmGetMembersErrorTimeout |
3: 获取频道内成员列表超时。当前的超时设置为 5 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmGetMembersErrorTooOften |
4: 方法调用频率超过 5 次每 2 秒的上限。 |
AgoraRtmGetMembersErrorNotInChannel |
5: 用户不在频道内。 |
AgoraRtmGetMembersErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmGetMembersErrorNotLoggedIn |
102: 获取频道成员列表前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
呼叫邀请的相关 API 调用的错误码。
错误码 |
描述 |
AgoraRtmInvitationApiCallErrorOk |
0:呼叫邀请相关 API 调用成功。 |
AgoraRtmInvitationApiCallErrorInvalidAugment |
1:呼叫邀请相关 API 调用失败:参数错误。 |
AgoraRtmInvitationApiCallErrorNotStarted |
2:呼叫邀请相关 API 调用失败:未开始。 |
AgoraRtmInvitationApiCallErrorAlreadyEnd |
3:呼叫邀请相关 API 调用结果:已结束。 |
AgoraRtmInvitationApiCallErrorAlreadyAccept |
4:呼叫邀请相关 API 调用结果:已接受邀请。 |
AgoraRtmInvitationApiCallErrorAlreadySent |
5:呼叫邀请相关 API 调用结果:呼叫邀请已发送。 |
用户加入频道相关错误码。
错误码 |
描述 |
AgoraRtmJoinChannelErrorOk |
0: 用户成功加入频道。 |
AgoraRtmJoinChannelErrorFailure |
1: 用户加入频道失败。 |
AgoraRtmJoinChannelErrorRejected |
2: 预留错误码 |
AgoraRtmJoinChannelErrorInvalidArgument |
3: 用户无法加入频道。因为参数无效。 |
AgoraRtmJoinChannelErrorTimeout |
4: 用户加入频道超时。当前的超时设置为 5 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmJoinChannelErrorExceedLimit |
5: 同时加入的频道数超过 20 上限。 |
AgoraRtmJoinChannelErrorAlreadyJoined |
6: 用户正在加入频道或已成功加入频道。 |
AgoraRtmJoinChannelErrorTooOften |
7: 方法调用超过 50 次每 3 秒的上限。 |
AgoraRtmJoinSameChannelErrorTooOften |
8: 加入相同频道的频率超过每 5 秒 2 次的上限。 |
AgoraRtmJoinChannelErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmJoinChannelErrorNotLoggedIn |
102: 用户加入频道前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
用户离开频道相关错误码。
错误码 |
描述 |
AgoraRtmLeaveChannelErrorOk |
0: 用户成功离开频道。 |
AgoraRtmLeaveChannelErrorFailure |
1: 用户离开频道失败。 |
AgoraRtmLeaveChannelErrorRejected |
2: 预留错误码 |
AgoraRtmLeaveChannelErrorNotInChannel |
3: 用户已不在频道内。 |
AgoraRtmLeaveChannelErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmLeaveChannelErrorNotLoggedIn |
102: 用户在离开频道前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
登录相关错误码。
错误码 |
描述 |
AgoraRtmLoginErrorOk |
0: 登录成功。没有错误。 |
AgoraRtmLoginErrorUnknown |
1: 登录失败。原因未知。 |
AgoraRtmLoginErrorRejected |
2: 预留错误码 |
AgoraRtmLoginErrorInvalidArgument |
3: 登录参数无效。 |
AgoraRtmLoginErrorInvalidAppId |
4: App ID 无效。 |
AgoraRtmLoginErrorInvalidToken |
5: Token 无效。 |
AgoraRtmLoginErrorTokenExpired |
6: Token 已过期,登录被拒绝。 |
AgoraRtmLoginErrorNotAuthorized |
7: 登录未经授权。 |
AgoraRtmLoginErrorAlreadyLogin |
8: 用户已登录,或正在登录 Agora RTM 系统,或未调用 logoutWithCompletion 方法退出 AgoraRtmConnectionStateAborted 状态。 |
AgoraRtmLoginErrorTimeout |
9: 登录超时。目前的超时设置为 12 秒。 |
AgoraRtmLoginErrorLoginTooOften |
10: 登录过于频繁。方法 loginByToken 的调用频率超过 2 次每秒的上限。 |
AgoraRtmLoginErrorLoginNotInitialized |
101: SDK 未完成初始化。 |
登出错误码。
错误码 |
描述 |
AgoraRtmLogoutErrorOk |
0: 登出成功。 |
AgoraRtmLogoutErrorRejected |
1: 预留错误码 |
AgoraRtmLogoutErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmLogoutErrorNotLoggedIn |
102: 登出 Agora RTM 系统前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
订阅或取消订阅指定用户状态相关错误码。
错误码 |
描述 |
AgoraRtmPeerSubscriptionStatusErrorOk |
0: 方法调用成功,或订阅取消订阅操作成功。 |
AgoraRtmPeerSubscriptionStatusErrorFailure |
1: 通用未知错误。订阅或取消订阅操作失败。 |
AgoraRtmPeerSubscriptionStatusErrorInvalidArgument |
2: 无效的输入参数。 |
AgoraRtmPeerSubscriptionStatusErrorRejected |
3: 预留错误码 |
AgoraRtmPeerSubscriptionStatusErrorTimeout |
4: 服务器响应超时。当前的超时设置为 10 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmPeerSubscriptionStatusErrorTooOften |
5: 方法调用过于频繁。超过 10 次每 5 秒的限制。 |
PEER_SUBSCRIPTION_STATUS_ERR_OVERFLOW |
6: 订阅人数超过 512 人的上限。 |
AgoraRtmPeerSubscriptionStatusErrorNotInitialized |
101: Agora RTM 服务未完成初始化。 |
AgoraRtmPeerSubscriptionStatusErrorNotLoggedIn |
102: 本次操作前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
属性操作相关错误码。
根据订阅类型获取被订阅用户列表相关的错误码。
错误码 |
描述 |
AgoraRtmQueryPeersBySubscriptionOptionErrorOk |
0: 方法调用成功,或根据订阅类型获取被订阅用户列表成功。 |
AgoraRtmQueryPeersBySubscriptionOptionErrorFailure |
1: 通用错误。根据订阅类型获取被订阅用户列表失败。 |
AgoraRtmQueryPeersBySubscriptionOptionErrorTimeout |
2: 服务器响应超时。当前的超时设置为 5 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmQueryPeersBySubscriptionOptionErrorTooOften |
3: 方法调用过于频繁。超过 10 次每 5 秒的限制。 |
AgoraRtmQueryPeersBySubscriptionOptionErrorNotInitialized |
101: Agora RTM 服务未完成初始化。 |
AgoraRtmQueryPeersBySubscriptionOptionErrorNotLoggedIn |
102: 本次操作前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
查询在线状态相关错误码。
错误码 |
描述 |
AgoraRtmQueryPeersOnlineErrorOk |
0:查询用户状态成功。 |
AgoraRtmQueryPeersOnlineErrorFailure |
1:查询用户状态失败。 |
AgoraRtmQueryPeersOnlineErrorInvalidArgument |
2:查询参数无效。 |
AgoraRtmQueryPeersOnlineErrorRejected |
3:预留错误码 |
AgoraRtmQueryPeersOnlineErrorTimeout |
4:服务器响应超时。当前的超时设置为 10 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmQueryPeersOnlineErrorTooOften |
5:方法调用过于频繁。超过 10 次每 5 秒的上限。 |
AgoraRtmQueryPeersOnlineErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmQueryPeersOnlineErrorNotLoggedIn |
102: 查询指定用户在线状态前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
返回给主叫的呼叫邀请错误码。
错误码 |
描述 |
AgoraRtmLocalInvitationErrorOk |
0:返回给主叫的呼叫邀请错误码:呼叫邀请成功。 |
AgoraRtmLocalInvitationErrorRemoteOffline |
1:返回给主叫的呼叫邀请错误码:被叫不在线。 SDK 会在被叫不在线时不断重发呼叫邀请。若消息发送 30 秒后被叫仍未上线,SDK 会返回此错误码。 |
AgoraRtmLocalInvitationErrorRemoteNoResponse |
2:返回给主叫的呼叫邀请错误码:被叫在呼叫邀请发出后 30 秒无 ACK 响应。 |
AgoraRtmLocalInvitationErrorExpire |
3:返回给主叫的呼叫邀请错误码:呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒时,呼叫邀请仍未被取消、接受、拒绝,则呼叫邀请过期。 |
AgoraRtmLocalInvitationErrorNotLoggedIn |
4: 返回给主叫的呼叫邀请错误码:主叫未登录。 |
返回给被叫的呼叫邀请错误码。
错误码 |
描述 |
AgoraRtmRemoteInvitationErrorOk |
0:返回给被叫的呼叫邀请错误码:呼叫邀请成功。 |
AgoraRtmRemoteInvitationErrorLocalOffline |
1:返回给被叫的呼叫邀请错误码:被叫不在线,呼叫邀请失败。 |
AgoraRtmRemoteInvitationErrorAcceptFailure |
2:返回给被叫的呼叫邀请错误码:呼叫邀请过程失败。 |
AgoraRtmRemoteInvitationErrorExpire |
3:返回给被叫的呼叫邀请错误码:呼叫邀请过期。被叫 ACK 响应呼叫邀请后 60 秒呼叫邀请未被取消、接受、拒绝,则呼叫邀请过期。 |
更新 token 相关错误码。
错误码 |
描述 |
AgoraRtmRenewTokenErrorOk |
0:更新 Token 成功。 |
AgoraRtmRenewTokenErrorFailure |
1:更新 Token 失败。 |
AgoraRtmRenewTokenErrorInvalidArgument |
2:无效参数。 |
AgoraRtmRenewTokenErrorRejected |
3:预留错误码 |
AgoraRtmRenewTokenErrorTooOften |
4:方法调用过于频繁。超过 2 次每秒上限。 |
AgoraRtmRenewTokenErrorTokenExpired |
5:输入 Token 已过期。 |
AgoraRtmRenewTokenErrorInvalidToken |
6:输入 Token 无效。 |
AgoraRtmRenewTokenErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmRenewTokenErrorNotLoggedIn |
102: 更新 Token 前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
频道消息发送相关错误码。
错误码 |
描述 |
AgoraRtmSendChannelMessageErrorOk |
0: 服务端已接收到频道消息。 |
AgoraRtmSendChannelMessageErrorFailure |
1: 频道消息发送失败。 |
AgoraRtmSendChannelMessageErrorTimeout |
2: 服务器未收到频道消息或者 SDK 未在 10 秒内收到服务器响应。当前的超时设置为 10 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmSendChannelMessageTooOften |
3: 发送消息(点对点消息和频道消息一并计算在内)超过 每 3 秒 180 次的上限。 |
AgoraRtmSendChannelMessageInvalidMessage |
4: 消息为 null 或超出 32 KB 的长度限制。 |
AgoraRtmSendChannelMessageErrorNotInitialized |
101: SDK 未完成初始化。 |
AgoraRtmSendChannelMessageNotLoggedIn |
102: 发送频道消息前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |
发送点对点消息的相关错误码。
错误码 |
描述 |
AgoraRtmSendPeerMessageErrorOk |
0: 对端已接收到点对点消息。 |
AgoraRtmSendPeerMessageErrorFailure |
1: 点对点消息发送失败。 |
AgoraRtmSendPeerMessageErrorTimeout |
2: 点对点消息发送超时。当前的超时设置为 10 秒。可能原因:用户正处于 AgoraRtmConnectionStateAborted 状态或 AgoraRtmConnectionStateReconnecting 状态。 |
AgoraRtmSendPeerMessageErrorPeerUnreachable |
3: 接收者处于离线状态,无法接收点对点消息。 |
AgoraRtmSendPeerMessageErrorCachedByServer |
4: 对方不在线,发出的离线点对点消息未被收到。但是服务器已经缓存这条消息并将在用户上线后重新发送。 |
AgoraRtmSendPeerMessageErrorTooOften |
5: 发送消息(点对点消息和频道消息一并计算在内)超过 每 3 秒 180 次的上限。 |
AgoraRtmSendPeerMessageErrorInvalidUserId |
6: 用户 ID 无效。 |
AgoraRtmSendPeerMessageErrorInvalidMessage |
7: 消息为 null 或超出 32 KB 的长度限制。 |
AgoraRtmSendPeerMessageErrorNotInitialized |
101: Agora RTM 服务未完成初始化。 |
AgoraRtmSendPeerMessageErrorNotLoggedIn |
102: 发送点对点消息前未调用 loginByToken 方法或者 loginByToken 方法调用未成功。 |