每个用户的状态类型有以下三种:
注意:后台运行状态(PushOnline)只有手机端(Android、iOS、iPad)会存在,PC、Mac、Linux和 Web 端不存在该种状态。
前台运行状态(Online),是指客户端和即时通信 IM 服务端保持有顺畅的 TCP 网络连接,客户端可以发消息给即时通信 IM 服务端,也可以收到来自即时通信 IM 服务端推送的消息。
当用户打开 App 后,状态即为前台运行状态(Online)。
App 启动后,客户端和即时通信 IM 服务端建立 TCP 长连接,即时通信 IM 服务端保存客户端的在线信息,例如客户端的网络链路信息,客户端的平台版本等。App 在运行过程中,IM SDK 会定时发送心跳来确认用户的在线状态。
说明:心跳:IM SDK 每隔2分钟发一个心跳包给服务器,以确认用户的在线状态。
后台运行状态(PushOnline),是指客户端和即时通信 IM 服务端的 TCP 长连接断开。此时可收到消息的离线推送。
以下场景用户的状态为后台运行状态(PushOnline):
注意:后台运行状态(PushOnline)只有手机端(Android、iOS、iPad)会存在,PC、Mac、Linux、小程序和 Web 端不存在该种状态。
未登录状态(Offline),是指用户没有输入帐号和密码登录前的状态,此时无法收到消息的在线推送,也无法收到消息的离线推送。
以下场景用户的状态为未登录状态(Offline):
App 后台可以通过 REST API:获取用户在线状态 来查询一批用户的在线状态。
IM SDK 暂时无法获取用户的在线状态。
即时通信 IM 可以把用户上下线的事件通知给 App 后台,参见 状态变更回调 文档。
对于绝大多数情况,用户状态的变化都能实时感知,例如:
只有以下一种特殊情况,IM 云服务器需要等待400秒的心跳超时时间才能感知状态变更:
当网络完全不可用时,客户端连 TCP 协议层的 FIN 包或 RST 包都无法发出时,IM 云服务器需要等待400秒的心跳超时时间才能感知到状态变成后台运行状态(PushOnline)。常见的场景有用户主动关闭客户端的网络(例如开启手机的飞行模式),或者进入完全没有网络信号的隧道。
用户主动登录 Web 端时,IM 云服务器可以实时感知到状态变成前台运行状态(Online)。
各种场景的退出/断线的状态变更实时性如下:
用户主动登录小程序端时,IM 云服务器可以实时感知到状态变成前台运行状态(Online)。
各种场景的退出/断线的状态变更实时性如下:
默认情况,IM SDK 在同时登录多个终端(如同时登录 PC、Android)时,会进行互踢,只有最后一个登录的设备可以在线,之前登录的都会被踢下线,详细互踢逻辑可以参考以下文档:
即时通信 IM 支持在 控制台 修改同时在线策略,目前支持的多平台同时在线策略如下:
默认情况下,每种平台只支持1个终端在线(如 Android 和 Android 会互踢),旗舰版用户允许配置 Android、iPhone、iPad、Windows、Mac 同种平台可登录的最大实例数。另外,所有用户均可配置 Web 平台可登录的最大实例数。
同平台多设备在线,提升用户体验必备工具,支持配置同种平台可登录的最大实例数,防止同平台多设备上线后互踢的情况出现,让用户体验更丝滑。
说明:
本页内容是否解决了您的问题?