Windows/macOS

多端登录与互踢

更新时间: 2024/11/21 16:31:48

您可通过两种方式实现 IM 的多端登录与互踢。

方式1:通过云信控制台配置

当前 NIM SDK 支持通过云信控制台配置四种不同的 IM 多端登录策略:

  • 只允许一端登录,PC、Web、Android、iOS 彼此互踢。
  • 桌面端 PC 与 Web 互踢,移动端 Android 和 iOS 互踢,且桌面端与移动端可同时登录
  • 各端均可以同时登录在线(最多 10 个设备同时在线)
  • 自定义多端登录配置

通过该方式的配置,可实现自动管控 IM 的多端登录。具体如何配置,请参见多端登录与互踢策略

方式2:主动将其他端踢下线

API 调用时序

sequenceDiagram



note over NIM SDK: 本端登录 IM
本端 ->> NIM SDK: 监听多端登录<br>(RegMultispotLoginCb)
本端 ->> NIM SDK: 登录 IM 
note over NIM SDK: 其他端登录 IM
其他端 ->> NIM SDK: 监听被其他端踢下线<br>(RegKickoutCb)
其他端 ->> NIM SDK: 登录 IM
note left of 其他端: 使用相同 IM 账号登录
NIM SDK ->> 本端: 多端登录信息
note over NIM SDK: 本端将其他端踢下线
本端 ->> NIM SDK: 主动将其他端踢下线<br>(KickOtherClient)
NIM SDK ->> 其他端: 被踢的结果信息

踢方操作

步骤1:监听多端登录

注册RegMultispotLoginCb回调,监听多端登录事件。 当用户在某个客户端登录时,其他已经在线的客户端会触发该回调。

当同账号的其他客户端类型登录或登出,本端都会收到通知,通知信息包括通知类型 notify_typeNIMMultiSpotNotifyType )和其他在线的客户端列表 other_clientsOtherClientPres)。

步骤2:将其他端踢下线

调用KickOtherClient方法将其他同时登录的设备端踢下线。

示例代码如下:

Client::RegMultispotLoginCb(
    [](const MultiSpotLoginRes& res) {
        // process multispot login res
    },
    "");

被踢方操作

被踢的设备端,可在登录 IM 前,注册RegKickoutCb回调,监听被踢事件。

当被其他客户端踢下线后,会收到通知,通知信息包括被踢原因 kick_reasonNIMKickReason)和将其踢下线的设备端的客户端类型 client_typeNIMClientType)等信息。

收到被踢回调后,建议进行注销并切换到登录界面。

示例代码如下:

Client::RegKickoutCb(
    [](const KickoutRes& res) {
        // current client is kicked out
        // ......
    },
    "");
此文档是否对你有帮助?
有帮助
去反馈
  • 方式1:通过云信控制台配置
  • 方式2:主动将其他端踢下线
  • API 调用时序
  • 踢方操作
  • 步骤1:监听多端登录
  • 步骤2:将其他端踢下线
  • 被踢方操作