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 方法调用未成功。 |