多端登录与互踢

更新时间: 2024/03/14 18:45:33

您可通过两种方式实现 IM 的多端登录与互踢。这里的“端”指的是设备端。

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

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

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

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

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

  1. 调用NIM.getInstance方法初始化时注册onLoginPortsChange回调函数。

    • 以下情况,该回调函数将触发:

      • 本端登录时其他端登录
      • 本端登录后其他端登录或登出
    • 该回调函数返回的登录信息包括:

      • type: 登录的设备类型,包括 Android、iOS、PC、Web 和 Mac
      • os: 登录设备的操作系统
      • mac: 登录设备的 mac 地址
      • deviceId: 登录设备ID, uuid
      • account: 登录的帐号
      • connectionId: 登录设备分配的连接号
      • ip: 登录的服务器 IP
      • time: 登录时间
      • online: 是否在线
    var nim = NIM.getInstance({
        onloginportschange: onLoginPortsChange
    });
    function onLoginPortsChange(loginPorts) {
        console.log('当前登录帐号在其它端的状态发生改变了', loginPorts);
    }
    
  2. 调用nim.kick方法将当前用户登录的其他设备端踢下线。

    被踢方在被踢下线后,如已在初始化时注册ondisconnect回调函数,该回调函数将触发。被踢方将通过该回调函数收到长连接断开信息(NIMOnDisconnectResult)所包含的被踢详情(NIMOnDisconnectResultKicked)。

    nim.kick({
        deviceIds: ['deviceId1'],
        done: onKick
    });
    function onKick(error, obj) {
        console.log('踢其它端' + (!error?'成功':'失败'));
        console.log(error);
        console.log(obj);
    }
    
此文档是否对你有帮助?
有帮助
去反馈
  • 方式1:通过云信控制台配置
  • 方式2:主动将其他端踢下线