NIMSDK-iOS
载入中...
搜索中...
未找到
NIMLoginManagerProtocol.h
浏览该文件的文档.
1//
2// NIMLoginManagerProtocol.h
3// NIMLib
4//
5// Created by Netease.
6// Copyright (c) 2015 Netease. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
10#import "NIMLoginClient.h"
11
12#ifndef NIMDeprecated
13#define NIMDeprecated(msg) __attribute__((deprecated(msg)))
14#endif
15
17
18NS_ASSUME_NONNULL_BEGIN
19/**
20 * 登录服务相关Block
21 *
22 * @param error 执行结果,如果成功error为nil
23 */
24typedef void(^NIMLoginHandler)(NSError * __nullable error);
25
26/**
27 * 查询服务端时间Block
28 *
29 * @param error 执行结果,如果成功error为nil
30 */
31typedef void(^NIMLoginGetServerTimeHandle)(NSError * __nullable error, NIMServerTime *time);
32
33/**
34 * 登录步骤枚举
35 */
36typedef NS_ENUM(NSInteger, NIMLoginStep)
37{
38 /**
39 * 连接服务器
40 */
42 /**
43 * 连接服务器成功
44 */
46 /**
47 * 连接服务器失败
48 */
50 /**
51 * 登录
52 */
54 /**
55 * 登录成功
56 */
58 /**
59 * 登录失败
60 */
62 /**
63 * 开始同步
64 */
66 /**
67 * 同步完成
68 */
70 /**
71 * 连接断开
72 */
74 /**
75 * 网络切换
76 * @discussion 这个并不是登录步骤的一种,但是UI有可能需要通过这个状态进行UI展现
77 */
79 /**
80 * 主动退出
81 */
83};
84
85/**
86 * SDK 认证模式
87 */
88typedef NS_ENUM(NSInteger, NIMSDKAuthMode)
89{
90 /**
91 * 未定义
92 * @discussion SDK 未调用任何登录接时或在 IM/聊天室 模式下调用 logout 接口后变化为未定义模式
93 */
95 /**
96 * 通过 IM 服务器鉴权
97 * @discussion 调用 NIMLoginManager login/autoLogin 接口进行登录即为 IM 鉴权模式
98 */
100 /**
101 * 聊天室单独鉴权
102 * @discussion 调用 NIMChatroomManager 进入聊天室接口时设置 NIMChatroomIndependentMode 即为聊天室单独聊天鉴权模式
103 */
105};
106
107/**
108 * SDK 认证类型
109 * 0表示最初的loginToken的校验方式,1表示基于appSecret计算的token鉴权方式,2表示基于第三方回调的token鉴权方式,默认0
110 */
111typedef NS_ENUM(NSInteger, NIMSDKAuthType)
112{
116};
117
118/**
119 * 被踢下线的原因
120 */
121typedef NS_ENUM(NSInteger, NIMKickReason)
122{
123 /**
124 * 被另外一个客户端踢下线 (互斥客户端一端登录挤掉上一个登录中的客户端)
125 */
127 /**
128 * 被服务器踢下线
129 */
131 /**
132 * 被另外一个客户端手动选择踢下线
133 */
135};
136
137/**
138* 多端登陆的状态
139*/
140typedef NS_ENUM(NSInteger, NIMMultiLoginType){
141 /**
142 * 目前已经有其他端登陆
143 */
145 /**
146 * 其他端上线
147 */
149 /**
150 * 其他端下线
151 */
153};
154
155/**
156 * IM 登录相关回调接口,包括登录状态、多端登录、被踢下线、数据同步状态等事件的监听回调。
157 */
158@protocol NIMLoginManagerDelegate <NSObject>
159
160@optional
161/**
162 * 被其他端(服务端/客户端)踢下线的回调。<br>
163 *
164 * @deprecated 请使用- (void)onKickout:(NIMLoginKickoutResult *)result;
165 *
166 * @par 参数说明:
167 * <table>
168 * <tr><th>参数名称</th><th>描述</th>
169 * </tr>
170 * <tr><td>code</td><td>被踢下线的原因</td>
171 * </tr>
172 * <tr><td>clientType</td><td>将其踢下线的设备端的类型</td>
173 * </tr>
174 * </table>
175 */
176- (void)onKick:(NIMKickReason)code clientType:(NIMLoginClientType)clientType NIMDeprecated("Use -onKickout: instead");
177
178/**
179 * 被其他端(服务端/客户端)踢下线的回调。
180 * @par 使用场景:
181 * 在被踢下线时,需要知晓被踢原因以及将其踢下线的设备端类型(包括服务端和客户端)。
182 * @par 调用时机:
183 * 建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
184 * @par 触发时机:
185 * <ul><li>被同一个 IM 账号的服务端踢下线。</li><li>被同一个 IM 账号的其他客户端手动调用踢人接口踢下线。</li><li>被同一个 IM 账号的其他客户端踢下线(互斥客户端一端登录自动挤掉上一个登录中的客户端,该逻辑可通过云信控制台进行配置,目前支持四种不同的 [IM 多端登录策略](https://doc.yunxin.163.com/messaging/docs/jI1MzcwNTQ?platform=iOS))。</li></ul>
186 * @par 注意事项:
187 * 被踢下线后,若需要重新登录,建议先进行注销(登出),再切换到登录界面进行登录。
188 * @par 参数说明:
189 * result:被踢后收到的回调信息,包括被踢下线的原因(NIMKickReason)和将其踢下线的设备端的类型(NIMLoginClientType)
190 * @par 相关接口:
191 * [kickOtherClient:completion:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#adc1ca83617c1ace26541488881d90541) 主动将其他客户端踢下线
192 */
193- (void)onKickout:(NIMLoginKickoutResult *)result;
194
195/**
196 * IM 登录状态的回调。
197 * @par 使用场景:
198 * 该回调主要用于客户端登录页面的 UI 刷新。
199 * @par 调用时机:
200 * 必须在创建 NIM SDK 实例(sharedSDK)之后,才能调用该接口;建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
201 * @par 触发时机:
202 * 从调用登录 IM 接口开始,到登录结束(包括成功和失败)之间符合任一状态(NIMLoginStep)时触发回调。
203 * @par 注意事项:
204 * 登录成功后,SDK 会自动同步数据,数据同步完成后,整个登录过程才算真正完成。
205 * @par 参数说明:
206 * step:IM 登录状态信息,即登录进度,登录过程中的状态变更请参考[登录状态的转换流程](https://doc.yunxin.163.com/messaging/docs/TU3MTM2ODM?platform=iOS#登录状态转换流程)
207 * @par 相关接口:
208 * [login:token:authType:loginExt:completion:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a7dedc10fcbadf36fb66ce9cc9710b8f6) 登录 IM<br>
209 * [autoLogin:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a7239363d8c7d432e68261094b23081b7) 自动登录 IM<br>
210 * [logout:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a60f99812a55cecb9069e748ed586513b) 登出(注销) IM
211 */
212- (void)onLogin:(NIMLoginStep)step;
213
214/**
215 * IM 自动登录失败的回调。
216 * @par 使用场景:
217 * 使用 IM 自动登录后,除了因为网络超时导致的错误(SDK 会在网络超时时启用<b>断网重连机制</b>进行重连,上层应用无需处理),如果发生其他错误(如 AppKey 未被设置,参数错误,密码错误,多端登录冲突,账号被封禁,操作过于频繁等),那么在集成时需要上层应用处理对应的逻辑。您可以通过注册该方法回调,获取自动登录失败的原因,并根据原因处理上层逻辑。<br>
218 * 例如:自动登录失败的原因是用户名和密码不匹配,那么上层应用需实现<b>登出并提示用户手动登录</b>或是<b>从应用服务器刷新相应的用户名和密码</b>等逻辑。
219 * @par 调用时机:
220 * 必须在创建 NIM SDK 实例(sharedSDK)之后,才能调用该接口;建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
221 * @par 触发时机:
222 * 自动登录失败时触发回调。
223 * @par 参数说明:
224 * error:自动登录失败的原因
225 * @par 相关接口:
226 * [autoLogin:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a7239363d8c7d432e68261094b23081b7) 自动登录 IM
227 */
228- (void)onAutoLoginFailed:(NSError *)error;
229
230/**
231 * 多端登录变更的回调,监听同一账号的其他端的登录状态变更情况,即当用户通过某个客户端登录时,其他(同一账号)已经在线的客户端会收到该回调。
232 * @deprecated 请使用- (void)onMultiLoginClientsChangedWithType:(NIMMultiLoginType)type;
233 */
234- (void)onMultiLoginClientsChanged;
235
236/**
237* 多端登录变更的回调,监听同一账号的其他端的登录状态变更情况,即当用户通过某个客户端登录时,其他(同一账号)已经在线的客户端会收到该回调。
238* @par 使用场景:
239* 若应用支持同一账号多端登录以及互踢下线等操作,建议同一账号的各个客户端在登录注册该回调,获取其他客户端的登录状态,可以搭配 [currentLoginClients](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a055c3df878ee55c5e492f43444e2f8f3) 一起使用,查询当前登录的其他设备列表,包含客户端类型、操作系统以及登录时间等信息。
240* @par 调用时机:
241* 必须在创建 NIM SDK 实例(sharedSDK)之后,才能调用该接口;建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
242* @par 参数说明:
243* type:同一账号其他端的登录状态信息,分为“其他端上线”,“其他端下线”,“目前已有其他端登录”
244* @par 相关接口:
245* [currentLoginClients](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a055c3df878ee55c5e492f43444e2f8f3) :查询同一账号的其他已登录设备
246*/
247- (void)onMultiLoginClientsChangedWithType:(NIMMultiLoginType)type;
248
249/**
250 * 群组用户信息同步完成的回调。
251 * @par 使用场景:
252 * 若需要使用应用的群组成员信息,那么要确保群组用户信息已同步至SDK 的本地数据库,可以使用该接口回调知晓群组用户信息同步是否完成。
253 * @par 调用时机:
254 * 必须在创建 NIM SDK 实例(sharedSDK)之后,才能调用该接口;建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
255 * @par 注意事项:
256 * 若同步失败,建议手动将群组用户信息同步至 SDK 的本地数据库,否则可能会影响 SDK 群组相关接口的使用。
257 * @par 参数说明:
258 * success:群组用户信息是否同步成功
259 */
260- (void)onTeamUsersSyncFinished:(BOOL)success;
261
262/**
263 * 超大群用户信息同步完成的回调。
264 * @par 使用场景:
265 * 若需要使用应用的超大群成员信息,那么要确保超大群用户信息已同步至SDK 的本地数据库,可以使用该接口回调知晓超大群用户信息同步是否完成。
266 * @par 调用时机:
267 * 必须在创建 NIM SDK 实例(sharedSDK)之后,才能调用该接口;建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
268 * @par 注意事项:
269 * 若同步失败,建议手动将超大群用户信息同步至 SDK 的本地数据库,否则可能会影响 SDK 超大群相关接口的使用。
270 * @par 参数说明:
271 * success:超大群用户信息是否同步成功
272 */
273- (void)onSuperTeamUsersSyncFinished:(BOOL)success;
274
275/**
276 * 动态 Token 回调,用于获取动态 Token,后续以动态 token 鉴权方式登录 IM。
277 * @par 使用场景:
278 * 如果您有正式的生产环境,且您的业务对用户信息安全有较高的要求,可使用动态 Token 鉴权方式登录 IM。通过该方式登录前,需要调用该接口获取动态 Token。
279 * @par 调用时机:
280 * 必须在创建 NIM SDK 实例(sharedSDK)之后,才能调用该接口;建议在初始化 NIM SDK 后,登录 IM 前注册该回调。
281 * @par 注意事项:
282 * <ul><li>通过该接口获取的 Token 是动态且临时有效的。您可以通过服务端设置该动态 token 的有效期,建议不要太长。</li><li>若选择动态 token 鉴权方式,在调用登录接口时需要传入登录方式(authType,1 为动态 token 鉴权方式)。</li></ul>
283 * @par 参数说明:
284 * account:用户的 IM 账号,即 accid
285 * @par 返回:
286 * 对应账号的动态 token
287 * @par 相关接口:
288 * [login:token:authType:loginExt:completion:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a7dedc10fcbadf36fb66ce9cc9710b8f6) 登录 IM
289 * @deprecated 请使用 NIMSDKConfigDelegate dynamicTokenForAccount:
290 */
291- (NSString *)provideDynamicTokenForAccount:(NSString *)account;
292
293
294/**
295 * 自定义重连策略回调。回调中返回自动重连的时间间隔,即当自动登录失败后多久后触发自动重连。<br>
296 * SDK 默认的自动重连策略:自动登录失败后 2 秒触发自动重连触,如果一直连不上,重连时间指数级增长,2、4、6、8、16、32、64 ...
297 */
298- (int)reconnectDelay;
299
300/**
301 * 消息数据库已经打开
302 */
303- (void)onDataReady;
304
305@end
306
307/**
308 * IM 登录相关接口,包括登录、登出、踢人下线等接口。
309 */
310@protocol NIMLoginManager <NSObject>
311
312/**
313 * 手动登录 IM。
314 * @deprecated 请使用 [login:token:authType:loginExt:completion:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a7dedc10fcbadf36fb66ce9cc9710b8f6)
315 * @par 参数说明:
316 * <table>
317 * <tr><th>参数名称</th><th>描述</th>
318 * </tr>
319 * <tr><td>account</td><td>用户的 IM 账号,即 accid</td>
320 * </tr>
321 * <tr><td>token</td><td>IM 账号(accid)对应的登录 token</td>
322 * </tr>
323 * <tr><td>completion</td><td>登录服务相关回调</td>
324 * </tr>
325 * </table>
326 */
327- (void)login:(NSString *)account
328 token:(NSString *)token
329 completion:(NIMLoginHandler)completion;
330
331/**
332 * 手动登录 IM。
333 * @par 使用场景:
334 * <ul><li>在新设备上首次登录 IM。</li><li>被同时在线的其他设备踢下线后再次登录 IM。</li><li>切换 IM 账号后再次登录 IM。</li><li>注销登录后再次登录 IM。</li></ul>
335 * @par 注意事项:
336 * <ul><li>登录成功后,SDK 会自动同步数据,数据同步完成后,整个登录过程才算真正完成。</li><li>推荐在手动登录成功后,将 accid 和 token 保存到本地,方便下次应用启动自动登录时使用。如果登录失败,清除本地保存的用户登录信息,防止下次启动走自动登录逻辑。</li></ul>
337 * @par 参数说明:
338 * <table>
339 * <tr><th>参数名称</th><th>描述</th>
340 * </tr>
341 * <tr><td>account</td><td>用户的 IM 账号,即 accid</td>
342 * </tr>
343 * <tr><td>token</td><td>IM 账号(accid)对应的登录 token</td>
344 * </tr>
345 * <tr><td>authType</td><td>登录鉴权方式,0(默认):静态 token 鉴权;1:动态 token 鉴权;2:基于第三方回调的 token 鉴权</td>
346 * </tr>
347 * <tr><td>loginExt</td><td>登录自定义扩展字段。若选择基于第三方回调的 token 鉴权方式(authType 传入 3)时,该字段必传,如未传入,将报错</td>
348 * </tr>
349 * <tr><td>completion</td><td>登录服务相关回调</td>
350 * </tr>
351 * </table>
352 * @par 相关回调:
353 * [onLogin:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a70055366358595d63b0e1c07aedeb55f) 登录状态回调<br>
354 * [onMultiLoginClientsChangedWithType:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a83f001bb0a5c477a72178f1c0b2585df) 多端登录设备列表
355 * @par 相关接口:
356 * [provideDynamicTokenForAccount:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a248519e2e4ea0328523db756cd538650) 获取动态 token<br>
357 * [autoLogin:token:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a8c05c17ff5369ce9b70c6c7d33d6622e) 自动登录 IM
358 *
359 * @param account 帐号
360 * @param token 令牌 (authType为NIMSDKAuthTypeDefault时有效)
361 * @param authType 登陆类型,取值范围为NIMSDKAuthType
362 * @param loginExt 登录自定义字段 (authType为NIMSDKAuthTypeThirdParty时有效;authType为NIMSDKAuthTypeThirdPartyDynamic时,loginExt通过NIMSDKConfigDelegate中的dynamicLoginExtForAccount:来获取)
363 * @param completion 完成回调
364 */
365- (void)login:(NSString *)account
366 token:(NSString *)token
367 authType:(int)authType
368 loginExt:(NSString *)loginExt
369 completion:(NIMLoginHandler)completion;
370
371/**
372 * 自动登录 IM。
373 * @deprecated 请使用- (void)autoLogin:(NIMAutoLoginData *)loginData;
374 * @par 使用建议:
375 * 启动 APP 时,如果已经保存了帐号和 token,那么建议使用自动登录方式,可以在无网络时直接打开会话窗口。
376 * @par 参数说明:
377 * <table>
378 * <tr><th>参数名称</th><th>描述</th>
379 * </tr>
380 * <tr><td>account</td><td>用户的 IM 账号,即 accid</td>
381 * </tr>
382 * <tr><td>token</td><td>IM 账号(accid)对应的登录 token</td>
383 * </tr>
384 * </table>
385 */
386- (void)autoLogin:(NSString *)account
387 token:(NSString *)token;
388
389
390/**
391 * 自动登录 IM。
392 * @par 前提条件:
393 * 手动登录成功且将 accid 和 token 保存至本地。
394 * @par 使用场景:
395 * 自动登录一般用于应用被清理后,用户再次点击应用图标启动应用,无需输入用户名和密码即可完成登录的场景。此时应用可以在无网络、未登录成功的状态下直接访问用户本地 SDK 数据。
396 * @par 注意事项:
397 * 登录成功后,SDK 会自动同步数据,数据同步完成后,整个登录过程才算真正完成。
398 * @par 参数说明:
399 * loginData:自动登录参数,包括 account、token、 forcedMode 等信息。其中 forcedMode 为强制模式开关,默认为 NO,非强制模式下的自动登录,服务器将检查当前登录设备是否为上一次登录设备,如果不是,服务器将拒绝这次自动登录((回 error code 为 417 的错误)。若设置为 YES, 那么自动登录时云信服务端将不检查当前登录设备是否为上一次登录设备,安全便捷,但安全性较低,请根据实际业务场景谨慎使用。
400 * @par 相关回调:
401 * [onAutoLoginFailed:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#ab96ef125e18a7722668b30ddd0289e7f) 自动登录失败回调<br>
402 * [onMultiLoginClientsChangedWithType:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a83f001bb0a5c477a72178f1c0b2585df) 多端登录设备回调
403 * @par 相关接口:
404 * [login:token:authType:loginExt:completion:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d9/d16/protocol_n_i_m_login_manager-p.html#a7dedc10fcbadf36fb66ce9cc9710b8f6) 手动登录 IM
405 */
406- (void)autoLogin:(NIMAutoLoginData *)loginData;
407
408/**
409 * 注销 IM 登录(登出 IM),登出后,用户将不再接收 IM 的消息。
410 * @par 使用场景:
411 * 一般情况下,如果您的应用生命周期跟 NIM SDK 生命周期一致,用户在退出应用前可以不登出,直接退出即可。些特殊场景,例如用户仅在进入特定界面后才调用 NIM SDK 的能力,退出界面后不再调用,此时需要调用 NIM SDK 的登出接口注销 IM 登录。
412 * @par 注意事项:
413 * <ul><li>调用该接口登出 IM 时,SDK 会同时通知云信服务端进行 APNs 推送的解绑操作,避免用户已登出但依然将消息推送到当前设备。</li><li>考虑到用户体验,登出的超时时间会比其他请求短一些。无论登出请求是否成功,上层应用在 UI 表现上都应该做出登出行为。如果登出失败,应用也需要跳转到登录界面。导致登出失败的原因是云信服务端解绑 APNs 推送信息失败,但此时本地信息是清理成功的。</li><li>用户在登出是需要调用这个接口进行 SDK 相关数据的清理,回调 Block 中的 error 只是指明和服务器的交互流程中可能出现的错误,但不影响后续的流程。 如用户登出时发生网络错误导致服务器没有收到登出请求,客户端仍可以登出(切换界面,清理数据等),但会出现推送信息仍旧会发到当前手机的问题。</li></ul>
414 * @par 参数说明:
415 * completion:登出完成的回调。回调中的 NIMLoginHandler error 只是指明和服务器的交互流程中可能出现的错误,但不影响后续的流程。 如用户登出时发生网络错误导致服务器没有收到登出请求,客户端仍可以登出(切换界面,清理数据等),但会出现推送信息仍旧会发到当前手机的问题。
416 * @par 相关回调:
417 * [onLogin:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a70055366358595d63b0e1c07aedeb55f) 登录状态回调<br>
418 * [onMultiLoginClientsChangedWithType:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a83f001bb0a5c477a72178f1c0b2585df) 多端登录设备列表
419 */
420- (void)logout:(nullable NIMLoginHandler)completion;
421
422/**
423 * 将当前账号的其他已登录客户端踢下线。
424 * @par 注意事项:
425 * 被踢方收到被踢回调后,建议进行注销(logout)并切换到登录界面重新登录。
426 * @par 参数说明:
427* <table>
428 * <tr><th>参数名称</th><th>描述</th>
429 * </tr>
430 * <tr><td>client</td><td>需要踢下线的客户端信息</td>
431 * </tr>
432 * <tr><td>completion</td><td>踢人下线的相关回调</td>
433 * </tr>
434 * </table>
435 * @par 相关回调:
436 * [onKickout:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#acd2ae586b5e4f0a9cec487727c164a63) 被其他端踢下线的回调<br>
437 * [onMultiLoginClientsChangedWithType:](https://doc.yunxin.163.com/docs/interface/messaging/iOS/doxygen/Latest/zh/d5/dc6/protocol_n_i_m_login_manager_delegate-p.html#a83f001bb0a5c477a72178f1c0b2585df) 多端登录设备列表
438 */
439- (void)kickOtherClient:(NIMLoginClient *)client
440 completion:(nullable NIMLoginHandler)completion;
441
442/**
443 * 查询当前登录的帐号(accid)。
444 *
445 * @par 返回:
446 * 当前登录的帐号,如果当前账号未登录成功,将返回空字符串("")
447 */
448- (NSString *)currentAccount;
449
450/**
451 * 查询当前的登录状态。
452 *
453 * @par 返回:
454 * 当前的登录状态,返回 YES,表示已登录;返回 NO,表示处于未登录状态
455 */
456- (BOOL)isLogined;
457
458/**
459 * 查询当前账号登录的鉴权方式。
460 *
461 * @par 返回:
462 * 当前账号登录的鉴权方式,如果当前账号未登录成功,将返回空字符串("")
463 */
464- (NIMSDKAuthMode)currentAuthMode;
465
466/**
467 * 查询当前账号登录的客户端信息(NIMLoginClient),将返回当前登录的的设备列表,包括客户端类型、操作系统、登录时间等信息。
468 *
469 * @par 返回:
470 * 当前登录的的设备列表,其中不包含本端。若除本端外,无其他登录设备,将返回空字符串("")
471 */
472- (nullable NSArray<NIMLoginClient *> *)currentLoginClients;
473
474/**
475 * 查询云信服务端当前的时间。
476 * @par 注意事项:
477 * 该方法有调用频控,当调用失败时默认返回上一次调用成功时返回的时间。
478 *
479 * @par 参数说明:
480 * completion:查询完成的回调
481 */
482- (void)queryServerTimeCompletion:(NIMLoginGetServerTimeHandle)completion;
483
484/**
485 * 通过在对应的管理类中添加委托(delegate)通知上层 API 调用结果。
486 * @par 使用场景:
487 * 一般推荐在相应 ViewController 或管理类初始化进行委托注册,在其销毁时进行移除。
488 * @par 参数说明:
489 * delegate:登录相关的委托
490 */
491- (void)addDelegate:(id<NIMLoginManagerDelegate>)delegate;
492
493/**
494 * 在对应的管理类中移除委托(delegate),移除后,将不再通知上层 API 调用结果。
495 *
496 * @par 参数说明:
497 * delegate:登录相关的委托
498 */
499- (void)removeDelegate:(id<NIMLoginManagerDelegate>)delegate;
500@end
501
502NS_ASSUME_NONNULL_END
NIMLoginClientType
Definition: NIMLoginClient.h:17
void(^ NIMLoginGetServerTimeHandle)(NSError *__nullable error, NIMServerTime *time)
Definition: NIMLoginManagerProtocol.h:31
NIMSDKAuthMode
Definition: NIMLoginManagerProtocol.h:89
@ NIMSDKAuthModeChatroom
Definition: NIMLoginManagerProtocol.h:104
@ NIMSDKAuthModeUndefined
Definition: NIMLoginManagerProtocol.h:94
@ NIMSDKAuthModeIM
Definition: NIMLoginManagerProtocol.h:99
NIMLoginStep
Definition: NIMLoginManagerProtocol.h:37
@ NIMLoginStepLoginFailed
Definition: NIMLoginManagerProtocol.h:61
@ NIMLoginStepLoseConnection
Definition: NIMLoginManagerProtocol.h:73
@ NIMLoginStepLoginOK
Definition: NIMLoginManagerProtocol.h:57
@ NIMLoginStepLogout
Definition: NIMLoginManagerProtocol.h:82
@ NIMLoginStepLogining
Definition: NIMLoginManagerProtocol.h:53
@ NIMLoginStepLinkOK
Definition: NIMLoginManagerProtocol.h:45
@ NIMLoginStepLinking
Definition: NIMLoginManagerProtocol.h:41
@ NIMLoginStepNetChanged
Definition: NIMLoginManagerProtocol.h:78
@ NIMLoginStepLinkFailed
Definition: NIMLoginManagerProtocol.h:49
@ NIMLoginStepSyncOK
Definition: NIMLoginManagerProtocol.h:69
@ NIMLoginStepSyncing
Definition: NIMLoginManagerProtocol.h:65
NS_ASSUME_NONNULL_BEGIN typedef void(^ NIMLoginHandler)(NSError *__nullable error)
NIMKickReason
Definition: NIMLoginManagerProtocol.h:122
@ NIMKickReasonByServer
Definition: NIMLoginManagerProtocol.h:130
@ NIMKickReasonByClientManually
Definition: NIMLoginManagerProtocol.h:134
@ NIMKickReasonByClient
Definition: NIMLoginManagerProtocol.h:126
NIMSDKAuthType
Definition: NIMLoginManagerProtocol.h:112
@ NIMSDKAuthTypeThirdParty
Definition: NIMLoginManagerProtocol.h:115
@ NIMSDKAuthTypeDefault
Definition: NIMLoginManagerProtocol.h:113
@ NIMSDKAuthTypeDynamicToken
Definition: NIMLoginManagerProtocol.h:114
NIMMultiLoginType
Definition: NIMLoginManagerProtocol.h:140
@ NIMMultiLoginTypeInit
Definition: NIMLoginManagerProtocol.h:144
@ NIMMultiLoginTypeLogout
Definition: NIMLoginManagerProtocol.h:152
@ NIMMultiLoginTypeLogin
Definition: NIMLoginManagerProtocol.h:148
Definition: NIMLoginClient.h:88
Definition: NIMLoginClient.h:58
Definition: NIMLoginKickoutResult.h:16
Definition: NIMLoginClient.h:120