NIMSDK-iOS
载入中...
搜索中...
未找到
<NIMLoginManager>协议 参考

#import <NIMLoginManagerProtocol.h>

类 <NIMLoginManager> 继承关系图:

构造函数

(void) - login:token:completion:
 
(void) - login:token:authType:loginExt:completion:
 
(void) - autoLogin:token:
 
(void) - autoLogin:
 
(void) - logout:
 
(void) - kickOtherClient:completion:
 
(NSString *) - currentAccount
 
(BOOL) - isLogined
 
(NIMSDKAuthMode- currentAuthMode
 
(nullable NSArray< NIMLoginClient * > *) - currentLoginClients
 
(void) - queryServerTimeCompletion:
 
(void) - addDelegate:
 
(void) - removeDelegate:
 

详细描述

IM 登录相关接口,包括登录、登出、踢人下线等接口。

函数文档

◆ addDelegate:

- (void) addDelegate: (id< NIMLoginManagerDelegate >)  delegate

通过在对应的管理类中添加委托(delegate)通知上层 API 调用结果。

使用场景:
一般推荐在相应 ViewController 或管理类初始化进行委托注册,在其销毁时进行移除。
参数说明:
delegate:登录相关的委托

◆ autoLogin:

- (void) autoLogin: (NIMAutoLoginData *)  loginData

自动登录 IM。

前提条件:
手动登录成功且将 accid 和 token 保存至本地。
使用场景:
自动登录一般用于应用被清理后,用户再次点击应用图标启动应用,无需输入用户名和密码即可完成登录的场景。此时应用可以在无网络、未登录成功的状态下直接访问用户本地 SDK 数据。
注意事项:
登录成功后,SDK 会自动同步数据,数据同步完成后,整个登录过程才算真正完成。
参数说明:
loginData:自动登录参数,包括 account、token、 forcedMode 等信息。其中 forcedMode 为强制模式开关,默认为 NO,非强制模式下的自动登录,服务器将检查当前登录设备是否为上一次登录设备,如果不是,服务器将拒绝这次自动登录((回 error code 为 417 的错误)。若设置为 YES, 那么自动登录时云信服务端将不检查当前登录设备是否为上一次登录设备,安全便捷,但安全性较低,请根据实际业务场景谨慎使用。
相关回调:
onAutoLoginFailed: 自动登录失败回调
onMultiLoginClientsChangedWithType: 多端登录设备回调
相关接口:
login:token:authType:loginExt:completion: 手动登录 IM

◆ autoLogin:token:

- (void) autoLogin: (NSString *)  account
token: (NSString *)  token 

自动登录 IM。

弃用:
请使用- (void)autoLogin:loginData;
使用建议:
启动 APP 时,如果已经保存了帐号和 token,那么建议使用自动登录方式,可以在无网络时直接打开会话窗口。
参数说明:
参数名称描述
account用户的 IM 账号,即 accid
tokenIM 账号(accid)对应的登录 token

◆ currentAccount

- (NSString *) currentAccount

查询当前登录的帐号(accid)。

返回:
当前登录的帐号,如果当前账号未登录成功,将返回空字符串("")

◆ currentAuthMode

- (NIMSDKAuthMode) currentAuthMode

查询当前账号登录的鉴权方式。

返回:
当前账号登录的鉴权方式,如果当前账号未登录成功,将返回空字符串("")

◆ currentLoginClients

- (nullable NSArray< NIMLoginClient * > *) currentLoginClients

查询当前账号登录的客户端信息(NIMLoginClient),将返回当前登录的的设备列表,包括客户端类型、操作系统、登录时间等信息。

返回:
当前登录的的设备列表,其中不包含本端。若除本端外,无其他登录设备,将返回空字符串("")

◆ isLogined

- (BOOL) isLogined

查询当前的登录状态。

返回:
当前的登录状态,返回 YES,表示已登录;返回 NO,表示处于未登录状态

◆ kickOtherClient:completion:

- (void) kickOtherClient: (NIMLoginClient *)  client
completion: (nullable NIMLoginHandler completion 

将当前账号的其他已登录客户端踢下线。

注意事项:
被踢方收到被踢回调后,建议进行注销(logout)并切换到登录界面重新登录。
参数说明:
参数名称描述
client需要踢下线的客户端信息
completion踢人下线的相关回调
相关回调:
onKickout: 被其他端踢下线的回调
onMultiLoginClientsChangedWithType: 多端登录设备列表

◆ login:token:authType:loginExt:completion:

- (void) login: (NSString *)  account
token: (NSString *)  token
authType: (int)  authType
loginExt: (NSString *)  loginExt
completion: (NIMLoginHandler completion 

手动登录 IM。

使用场景:
  • 在新设备上首次登录 IM。
  • 被同时在线的其他设备踢下线后再次登录 IM。
  • 切换 IM 账号后再次登录 IM。
  • 注销登录后再次登录 IM。
注意事项:
  • 登录成功后,SDK 会自动同步数据,数据同步完成后,整个登录过程才算真正完成。
  • 推荐在手动登录成功后,将 accid 和 token 保存到本地,方便下次应用启动自动登录时使用。如果登录失败,清除本地保存的用户登录信息,防止下次启动走自动登录逻辑。
参数说明:
参数名称描述
account用户的 IM 账号,即 accid
tokenIM 账号(accid)对应的登录 token
authType登录鉴权方式,0(默认):静态 token 鉴权;1:动态 token 鉴权;2:基于第三方回调的 token 鉴权
loginExt登录自定义扩展字段。若选择基于第三方回调的 token 鉴权方式(authType 传入 3)时,该字段必传,如未传入,将报错
completion登录服务相关回调
相关回调:
onLogin: 登录状态回调
onMultiLoginClientsChangedWithType: 多端登录设备列表
相关接口:
provideDynamicTokenForAccount: 获取动态 token
autoLogin:token: 自动登录 IM
参数
account帐号
token令牌 (authType为NIMSDKAuthTypeDefault时有效)
authType登陆类型,取值范围为NIMSDKAuthType
loginExt登录自定义字段 (authType为NIMSDKAuthTypeThirdParty时有效;authType为NIMSDKAuthTypeThirdPartyDynamic时,loginExt通过NIMSDKConfigDelegate中的dynamicLoginExtForAccount:来获取)
completion完成回调

◆ login:token:completion:

- (void) login: (NSString *)  account
token: (NSString *)  token
completion: (NIMLoginHandler completion 

手动登录 IM。

弃用:
请使用 login:token:authType:loginExt:completion:
参数说明:
参数名称描述
account用户的 IM 账号,即 accid
tokenIM 账号(accid)对应的登录 token
completion登录服务相关回调

◆ logout:

- (void) logout: (nullable NIMLoginHandler completion

注销 IM 登录(登出 IM),登出后,用户将不再接收 IM 的消息。

使用场景:
一般情况下,如果您的应用生命周期跟 NIM SDK 生命周期一致,用户在退出应用前可以不登出,直接退出即可。些特殊场景,例如用户仅在进入特定界面后才调用 NIM SDK 的能力,退出界面后不再调用,此时需要调用 NIM SDK 的登出接口注销 IM 登录。
注意事项:
  • 调用该接口登出 IM 时,SDK 会同时通知云信服务端进行 APNs 推送的解绑操作,避免用户已登出但依然将消息推送到当前设备。
  • 考虑到用户体验,登出的超时时间会比其他请求短一些。无论登出请求是否成功,上层应用在 UI 表现上都应该做出登出行为。如果登出失败,应用也需要跳转到登录界面。导致登出失败的原因是云信服务端解绑 APNs 推送信息失败,但此时本地信息是清理成功的。
  • 用户在登出是需要调用这个接口进行 SDK 相关数据的清理,回调 Block 中的 error 只是指明和服务器的交互流程中可能出现的错误,但不影响后续的流程。 如用户登出时发生网络错误导致服务器没有收到登出请求,客户端仍可以登出(切换界面,清理数据等),但会出现推送信息仍旧会发到当前手机的问题。
参数说明:
completion:登出完成的回调。回调中的 NIMLoginHandler error 只是指明和服务器的交互流程中可能出现的错误,但不影响后续的流程。 如用户登出时发生网络错误导致服务器没有收到登出请求,客户端仍可以登出(切换界面,清理数据等),但会出现推送信息仍旧会发到当前手机的问题。
相关回调:
onLogin: 登录状态回调
onMultiLoginClientsChangedWithType: 多端登录设备列表

◆ queryServerTimeCompletion:

- (void) queryServerTimeCompletion: (NIMLoginGetServerTimeHandle completion

查询云信服务端当前的时间。

注意事项:
该方法有调用频控,当调用失败时默认返回上一次调用成功时返回的时间。
参数说明:
completion:查询完成的回调

◆ removeDelegate:

- (void) removeDelegate: (id< NIMLoginManagerDelegate >)  delegate

在对应的管理类中移除委托(delegate),移除后,将不再通知上层 API 调用结果。

参数说明:
delegate:登录相关的委托

该协议的文档由以下文件生成: