多端登录与互踢
更新时间: 2024/03/14 17:08:38
您可通过两种方式实现 IM 的多端登录与互踢。
方式1:通过云信控制台配置
当前 NIM SDK 支持通过云信控制台配置四种不同的 IM 多端登录策略:
- 只允许一端登录,Windows、Web、Android、iOS 彼此互踢。
- 桌面端 PC 与 Web 互踢,移动端 Android 和 iOS 互踢,且桌面端与移动端可同时登录
- 各端均可以同时登录在线(最多 10 个设备同时在线)
- 自定义多端登录配置
通过该方式的配置,可实现自动管控 IM 的多端登录。具体如何配置,请参见多端登录与互踢策略。
方式2:主动将其他端踢下线
API 调用时序
踢方操作
步骤1:监听多端登录
注册onMultiLoginClientsChangedWithType:
回调,监听多端登录事件。 当用户在某个客户端登录时,其他已经在线的客户端会触发该回调。
步骤2:查询同时在线的设备信息
收到onMultiLoginClientsChangedWithType:
回调后,调用currentLoginClients
方法查询当前登录的其他设备列表,包含客户端类型、操作系统以及登录时间等信息。
步骤3:将其他端踢下线
调用kickOtherClient:completion:
方法将其他同时登录的设备端踢下线。
NSArray *clients = [[[NIMSDK sharedSDK] loginManager] currentLoginClients];
if (clients.count <= 0)
{
// 没有可踢出的对象
return;
}
// 选一个端踢出
NIMLoginClient *client = clients[0];
[[[NIMSDK sharedSDK] loginManager] kickOtherClient:client completion:^(NSError * __nullable error)
{
// your code
}];
被踢方操作
被踢的设备端,可在登录 IM 前,注册onKickout:
回调,监听被踢事件。被踢事件信息包含被踢原因(NIMKickReason
)和将其踢下线的设备端的客户端类型(NIMLoginClientType
)。
收到被踢回调后,建议进行注销并切换到登录界面。
此文档是否对你有帮助?