多端登录与互踢
更新时间: 2024/03/14 18:45:33
您可通过两种方式实现 IM 的多端登录与互踢。这里的“端”指的是设备端。
方式1:通过云信控制台配置
当前 NIM SDK 支持通过云信控制台配置四种不同的 IM 多端登录策略:
- 只允许一端登录,Windows、Web、Android、iOS 彼此互踢。
- 桌面端 PC 与 Web 互踢,移动端 Android 和 iOS 互踢,且桌面端与移动端可同时登录
- 各端均可以同时登录在线(最多10个设备同时在线)
- 自定义多端登录配置
通过该方式的配置,可实现自动管控 IM 的多端登录。具体如何配置,请参见多端登录与互踢策略。
方式2:主动将其他端踢下线
-
调用
NIM.getInstance
方法初始化时注册onLoginPortsChange
回调函数。-
以下情况,该回调函数将触发:
- 本端登录时其他端登录
- 本端登录后其他端登录或登出
-
该回调函数返回的登录信息包括:
type
: 登录的设备类型,包括 Android、iOS、PC、Web 和 Macos
: 登录设备的操作系统mac
: 登录设备的 mac 地址deviceId
: 登录设备ID, uuidaccount
: 登录的帐号connectionId
: 登录设备分配的连接号ip
: 登录的服务器 IPtime
: 登录时间online
: 是否在线
var nim = NIM.getInstance({ onloginportschange: onLoginPortsChange }); function onLoginPortsChange(loginPorts) { console.log('当前登录帐号在其它端的状态发生改变了', loginPorts); }
-
-
调用
nim.kick
方法将当前用户登录的其他设备端踢下线。被踢方在被踢下线后,如已在初始化时注册
ondisconnect
回调函数,该回调函数将触发。被踢方将通过该回调函数收到长连接断开信息(NIMOnDisconnectResult
)所包含的被踢详情(NIMOnDisconnectResultKicked
)。nim.kick({ deviceIds: ['deviceId1'], done: onKick }); function onKick(error, obj) { console.log('踢其它端' + (!error?'成功':'失败')); console.log(error); console.log(obj); }
此文档是否对你有帮助?