登录相关
更新时间: 2024/09/24 13:52:53
完成 NIM SDK 的初始化后,用户需要登录 IM,登录成功后才能正常调用消息和会话等其他接口。如何实现 IM 登录请参考开发文档 登录及登出 IM。
本文介绍网易云信即时通讯 SDK(NetEase IM SDK,简称 NIM SDK)登录相关 API。
支持平台
Android | iOS | Windows/macOS | Web/uni-app/小程序 | HarmonyOS |
---|---|---|---|---|
✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ | ✔️️️ |
API 概览
登录相关监听
API | 说明 | 起始版本 |
---|---|---|
addLoginListener | 注册登录状态监听器 | v10.2.0 |
removeLoginListener | 取消注册登录状态监听器 | v10.2.0 |
addLoginDetailListener | 注册登录连接状态监听器 | v10.2.0 |
removeLoginDetailListener | 取消注册登录连接状态监听器 | v10.2.0 |
API | 说明 | 起始版本 |
---|---|---|
on("EventName") | 注册登录相关监听器 | v10.2.0(对应 HarmonyOS v0.5.0) |
off("EventName") | 取消注册登录相关监听器 | v10.2.0(对应 HarmonyOS v0.5.0) |
登录登出
API | 说明 | 起始版本 |
---|---|---|
login | 登录 IM | v10.2.0(对应 HarmonyOS v0.5.0) |
logout | 登出 IM | v10.2.0(对应 HarmonyOS v0.5.0) |
getLoginUser | 获取当前登录的账号 | v10.2.0(对应 HarmonyOS v0.5.0) |
getLoginStatus | 获取当前登录状态 | v10.2.0(对应 HarmonyOS v0.5.0) |
getConnectStatus | 获取当前登录连接状态 | v10.2.0(对应 HarmonyOS v0.5.0) |
getChatroomLinkAddress | 获取聊天室连接地址 | v10.2.0(对应 HarmonyOS v0.5.0) |
setReconnectDelayProvider | 设置登录重连延时的回调函数 | v10.2.0(对应 HarmonyOS v0.5.0) |
多端登录与互踢
API | 说明 | 起始版本 |
---|---|---|
getLoginClients | 获取当前多端登录列表 | v10.2.0(对应 HarmonyOS v0.5.0) |
kickOffline | 主动将同时在线的其他客户端踢下线 | v10.2.0(对应 HarmonyOS v0.5.0) |
getKickedOfflineDetail | 获取被踢下线的具体信息 | v10.2.0(对应 HarmonyOS v0.5.0) |
getDataSync | 获取当前多端登录同步详情 | v10.2.0(对应 HarmonyOS v0.5.0) |
接口类
V2NIMLoginService
类提供登录、登出、踢出其他设备端、注册登录连接状态监听器等接口。
login
接口描述
登录 IM。调用该接口后,SDK 会自动连接服务器,传递用户信息,返回登录结果。
网易云信 IM 支持多种登录鉴权方式,具体请参考 登录及登出 IM 开发指南文档。
调用该接口成功后,建议将 accountId
和 token
保存到本地,方便下次应用启动时实现自动登录。
适用场景
- 在新设备上首次登录 IM
- 同时在线的其他设备踢下线后再次登录 IM
- 切换 IM 账号后再次登录 IM
- 注销登录后再次登录 IM
参数说明
Javavoid login(String accountId, String token, V2NIMLoginOption option, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
accountId |
String | 是 | 网易云信 IM 为用户分配的唯一登录账号。 |
token |
String | 是 | 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token。 |
option |
V2NIMLoginOption |
否 | 登录配置。主要包含如下配置项: |
success |
V2NIMSuccessCallback |
是 | 登录成功回调 |
failure |
V2NIMFailureCallback |
是 | 登录失败回调,返回 错误码。 |
Objective-C- (void)login:(NSString *)accountId
token:(nullable NSString *)token
option:(nullable V2NIMLoginOption *)option
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
accountId |
NSString * | 是 | 网易云信 IM 为用户分配的唯一登录账号。 |
token |
NSString * | 是 | 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token。 |
option |
V2NIMLoginOption * |
否 | 登录配置。主要包含如下配置项: |
success |
V2NIMSuccessCallback |
是 | 登录成功回调 |
failure |
V2NIMFailureCallback |
是 | 登录失败回调,返回 错误码。 |
C++virtual void login(nstd::string accountId,
nstd::string token,
V2NIMLoginOption option,
V2NIMSuccessCallback<void> success,
V2NIMFailureCallback failure) = 0;
)
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
accountId |
nstd::string | 是 | 网易云信 IM 为用户分配的唯一登录账号。 |
token |
nstd::string | 是 | 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token。 |
option |
V2NIMLoginOption |
否 | 登录配置。主要包含如下配置项: |
success |
V2NIMSuccessCallback |
是 | 登录成功回调 |
failure |
V2NIMFailureCallback |
是 | 登录失败回调,返回 错误码。 |
TypeScriptlogin(accountId: string, token: string, loginOptions?: V2NIMLoginOptions): Promise<V2NIMLoginClient>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
accountId |
string | 是 | 网易云信 IM 为用户分配的唯一登录账号。 |
token |
string | 是 | 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token。 |
loginOption |
V2NIMLoginOption |
否 | 登录配置。主要包含如下配置项: |
TypeScriptlogin(accountId: string, token: string, loginOption?: V2NIMLoginOption): Promise<void>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
accountId |
string | 是 | 网易云信 IM 为用户分配的唯一登录账号。 |
token |
string | 是 | 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token。 |
loginOption |
V2NIMLoginOption |
否 | 登录配置。主要包含如下配置项: |
示例代码
JavaNIMClient.getV2NIMLoginService().login("accountId", "token", option, new V2NIMSuccessCallback() {
@Override
public void onSuccess() {
// Login succeeded
}
}, new V2NIMFailueCallback() {
@Override
public void onFailure(V2NIMError error) {
int code = error.code;
String desc = error.desc;
// Login failed, handle error
}
});
Objective-C- (id<V2NIMLoginService>)getV2LoginService {
return [[NIMSDK sharedSDK] v2LoginService];
}
- (void)login {
NSString *accountId = @"accountId";
NSString *token = @"token";
id<V2NIMLoginService> service = [self getV2LoginService];
[service login:accountId
token:token
option:nil
success:^{
NSLog(@"login succ");
} failure:^(V2NIMError * _Nonnull error) {
NSLog(@"login fail: error = %@", error);
}];
}
C++V2NIMLoginOption option;
loginService.login(
"accountId",
"token",
option,
[]() {
// Login succeeded
},
[](V2NIMError error) {
// Login failed, handle error
}
);
TypeScript// default and fixed token
try {
await nim1.V2NIMLoginService.login("ACCOUNT_ID", "TOKEN", {
"forceMode": false
})
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
// or dynamic token
try {
await nim.V2NIMLoginService.login("ACCOUNT_ID", "", {
"forceMode": false,
"authType": 1, // V2NIMLoginAuthType.V2NIM_LOGIN_AUTH_TYPE_DYNAMIC_TOKEN
"tokenProvider": function(accountId) {
return Promise.resolve('YOUR_DYNAMIC_TOKEN')
}
})
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
// or authentication with third-party
try {
await nim.V2NIMLoginService.login("ACCOUNT_ID", "", {
"forceMode": false,
"authType": 2, // V2NIMLoginAuthType.V2NIM_LOGIN_AUTH_TYPE_THIRD_PARTY
"loginExtensionProvider": function(accountId) {
return Promise.resolve('YOUR_LOGIN_EXTENSION')
}
})
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
TypeScript// 1. default and fixed token
try {
await nim.loginService.login("ACCOUNT_ID", "TOKEN", {
"forceMode": false
})
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
// 2. or dynamic token
try {
await nim.loginService.login("ACCOUNT_ID", "", {
"forceMode": false,
"authType": 1, // V2NIMLoginAuthType.V2NIM_LOGIN_AUTH_TYPE_DYNAMIC_TOKEN
"tokenProvider": function(accountId) {
return Promise.resolve('YOUR_DYNAMIC_TOKEN')
}
})
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
// 3. or authentication with third-party
try {
await nim.loginService.login("ACCOUNT_ID", "", {
"forceMode": false,
"authType": 2, // V2NIMLoginAuthType.V2NIM_LOGIN_AUTH_TYPE_THIRD_PARTY
"loginExtensionProvider": function(accountId) {
return Promise.resolve('YOUR_LOGIN_EXTENSION')
}
})
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
返回参数
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调 - 请求失败,返回
V2NIMFailuerCallback
回调,包含登录相关错误码
无。
logout
接口描述
登出 IM。
参数说明
Javavoid logout(V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
success |
V2NIMSuccessCallback |
是 | 登出成功回调 |
failure |
V2NIMFailureCallback |
是 | 登出失败回调,返回 错误码。 |
Objective-C- (void)logout:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
success |
V2NIMSuccessCallback |
是 | 登出成功回调 |
failure |
V2NIMFailureCallback |
是 | 登出失败回调,返回 错误码。 |
C++virtual void logout(V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
success |
V2NIMSuccessCallback |
是 | 登出成功回调 |
failure |
V2NIMFailureCallback |
是 | 登出失败回调,返回 错误码。 |
TypeScriptlogout(): Promise<void>
无参数。
TypeScriptlogout(): Promise<void>
无参数。
示例代码
JavaNIMClient.getV2NIMLoginService().logout(new V2NIMSuccessCallback() {
@Override
public void onSuccess() {
// TODO: success
}
}, new V2NIMFailueCallback<V2NIMError>() {
@Override
public void onFailure(V2NIMError error) {
int code = error.code;
String desc = error.desc;
// TODO: failure
}
});
Objective-C- (id<V2NIMLoginService>)getV2LoginService {
return [[NIMSDK sharedSDK] v2LoginService];
}
- (void)logout {
id<V2NIMLoginService> service = [self getV2LoginService];
[service logoutWithCompletion:^(NSError * _Nullable error) {
if (!error) {
NSLog(@"logout success");
} else {
NSLog(@"logout fail: error = %@", error);
}
}];
}
C++loginService.logout([]() {
// Logout succeeded.
}, [](V2NIMError error) {
// Logout failed, handle error.
});
TypeScripttry {
await nim1.V2NIMLoginService.logout();
// TODO: success
} catch (err) {
// TODO: failure
console.log(err.code);
}
TypeScripttry {
await nim.loginService.logout()
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
返回参数
无返回值。
Promise<void>
相关回调
- 请求成功,返回
V2NIMSuccessCallback
回调 - 请求失败,返回
V2NIMFailuerCallback
回调,包含登出相关错误码
无。
getLoginUser
接口描述
获取当前登录的账号。
该方法为同步。
参数说明
JavaString getLoginUser();
无参数。
Objective-C- (nullable NSString *)getLoginUser;
无参数。
C++virtual nstd::string getLoginUser() = 0;
无参数。
TypeScriptgetLoginUser(): string
无参数。
TypeScriptgetLoginUser(): string
无参数。
示例代码
JavaString accountId = NIMClient.getV2NIMLoginService().getLoginUser();
Objective-CNSString *accountId = [[[NIMSDK sharedSDK] v2LoginService] getLoginUser];
C++auto loginUser = loginService.getLoginUser();
TypeScriptconst accountId = nim.V2NIMLoginService.getLoginUser()
TypeScriptconst accountId = nim.loginService.getLoginUser()
返回参数
当前登录账号。
getLoginStatus
接口描述
获取当前登录状态。
该方法为同步。
参数说明
JavaV2NIMLoginStatus getLoginStatus();
无参数。
Objective-C- (V2NIMLoginStatus)getLoginStatus;
无参数。
C++virtual V2NIMLoginStatus getLoginStatus() = 0;
无参数。
TypeScriptgetLoginStatus(): V2NIMLoginStatus
无参数。
TypeScriptgetLoginStatus(): V2NIMLoginStatus
无参数。
示例代码
JavaV2NIMLoginStatus status = NIMClient.getV2NIMLoginService().getLoginStatus();
Objective-C- (void)printLoginStatus:(V2NIMLoginStatus)status {
switch (status) {
case V2NIM_LOGIN_STATUS_LOGOUT:
NSLog(@"login status = logout");
break;
case V2NIM_LOGIN_STATUS_LOGINING:
NSLog(@"login status = logining");
break;
case V2NIM_LOGIN_STATUS_LOGINED:
NSLog(@"login status = logined");
break;
default:
NSLog(@"login status = %ld", status);
break;
}
}
V2NIMLoginStatus status = [[[NIMSDK sharedSDK] v2LoginService] getLoginStatus];
C++auto loginStatus = loginService.getLoginStatus();
TypeScriptconst loginStatus = nim.V2NIMLoginService.getLoginStatus()
TypeScriptconst loginStatus = nim.loginService.getLoginStatus()
返回参数
当前登录状态,请参考 V2NIMLoginStatus
。
getLoginClients
接口描述
如果已在 网易云信控制台 配置 IM 多端登录策略,您可以通过该接口获取当前多端登录列表。
参数说明
JavaList<V2NIMLoginClient> getLoginClients();
无参数。
Objective-C- (nullable NSArray<V2NIMLoginClient *> *)getLoginClients;
无参数。
C++virtual nstd::vector<V2NIMLoginClient> getLoginClients() = 0;
无参数。
TypeScriptgetLoginClients(): V2NIMLoginClient[]
无参数。
TypeScriptgetLoginClients(): V2NIMLoginClient[]
无参数。
示例代码
JavaList<V2NIMLoginClient> list = NIMClient.getV2NIMLoginService().getLoginClients();
Objective-CNSArray<V2NIMLoginClient *> *clients = [[[NIMSDK sharedSDK] v2LoginService] getLoginClients];
C++auto loginClients = loginService.getLoginClients();
TypeScriptconst loginClients = nim.V2NIMLoginService.getLoginClients()
TypeScriptconst loginClients = nim.loginSerive.getLoginClients()
返回参数
当前多端登录列表,请参考 V2NIMLoginClient
。
kickOffline
接口描述
主动将同时在线的其他客户端踢下线。
被踢端若调用 addLoginListener
注册登录状态监听器,在被踢下线后,会收到 V2NIMLoginListener.onKickedOffline
回调。
如需重新登录,建议先调用 logout
登出 IM,再切换到登录界面进行登录。
接口原型
Javavoid kickOffline(V2NIMLoginClient client, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
client |
V2NIMLoginClient |
是 | 被踢下线的客户端信息 |
success |
V2NIMSuccessCallback |
是 | 踢下线成功回调 |
failure |
V2NIMFailureCallback |
是 | 踢下线失败回调,返回错误码 |
Objective-C- (void)kickOffline:(V2NIMLoginClient *)client
success:(nullable V2NIMSuccessCallback)success
failure:(nullable V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
client |
V2NIMLoginClient |
是 | 被踢下线的客户端信息 |
success |
V2NIMSuccessCallback |
是 | 踢下线成功回调 |
failure |
V2NIMFailureCallback |
是 | 踢下线失败回调,返回错误码 |
C++virtual void kickOffline(V2NIMLoginClient client, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
client |
V2NIMLoginClient |
是 | 被踢下线的客户端信息 |
success |
V2NIMSuccessCallback |
是 | 踢下线成功回调 |
failure |
V2NIMFailureCallback |
是 | 踢下线失败回调,返回错误码 |
TypeScriptkickOffline(client: V2NIMLoginClient): Promise<void>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
client |
V2NIMLoginClient |
是 | 被踢下线的客户端信息 |
TypeScriptkickOffline(client: V2NIMLoginClient): Promise<void>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
client |
V2NIMLoginClient |
是 | 被踢下线的客户端信息 |
示例代码
JavaV2NIMLoginClientType type = V2NIMLoginClientType.V2NIM_LOGIN_CLIENT_TYPE_PC;
V2NIMLoginClient client = new V2NIMLoginClient(type);
NIMClient.getV2NIMLoginService().kickOffline(client, new V2NIMSuccessCallback() {
@Override
public void onSuccess() {
// TODO: success
}
}, new V2NIMFailueCallback<V2NIMError>() {
@Override
public void onFailure(V2NIMError error) {
int code = error.code;
String desc = error.desc;
// TODO: failure
}
});
Objective-C- (void)kickOffline {
NSArray<V2NIMLoginClient *> *clients = [[[NIMSDK sharedSDK] v2LoginService] getLoginClients];
V2NIMLoginClient *client;
[[[NIMSDK sharedSDK] v2LoginService] kickOffline:nil success:^{
NSLog(@"kick offline succ");
} failure:^(V2NIMError * _Nonnull error) {
NSLog(@"kick offline: error = %@", error);
}];
}
C++loginService.kickOffline(client, []() {
// kick client succeeded
}, [](V2NIMError error) {
// kick client failed, handle error
});
TypeScriptconst loginClients = nim.V2NIMLoginService.getLoginClients();
if (loginClients.length > 0) {
try {
await nim.V2NIMLoginService.kickOffline(loginClients[0]);
} catch (err) {
// TODO: fail
}
}
TypeScriptconst loginClients = nim.loginService.getLoginClients()
try {
if (loginClients && loginClients.length > 0) {
const loginClient = await nim.loginService.kickOffline(loginClients[0])
// todo, success
}
} catch (err) {
// TODO failed, check code
// console.log(err.code)
}
返回参数
无返回值。
Promise<void>
相关回调
- 调用方法成功,返回
V2NIMSuccessCallback
回调。 - 调用方法失败,返回
V2NIMFailuerCallback
回调,包含相关错误码。
无。
相关回调
V2NIMLoginListener.onKickedOffline
getKickedOfflineDetail
接口描述
获取当前被踢下线端的具体信息。
该方法为同步。
参数说明
JavaV2NIMKickedOfflineDetail getKickedOfflineDetail();
无参数。
Objective-C- (nullable V2NIMKickedOfflineDetail *)getKickedOfflineDetail;
无参数。
C++virtual nstd::optional<V2NIMKickedOfflineDetail> getKickedOfflineDetail() = 0;
无参数。
TypeScriptgetKickedOfflineDetail(): V2NIMKickedOfflineDetail | null
无参数。
TypeScriptgetKickedOfflineDetail(): V2NIMKickedOfflineDetail | null
无参数。
示例代码
JavaV2NIMKickedOfflineDetail detail = NIMClient.getV2NIMLoginService().getKickedOfflineDetail();
Objective-CV2NIMKickedOfflineDetail *detail = [[[NIMSDK sharedSDK] v2LoginService] getKickedOfflineDetail];
C++auto kickedOfflineDetail = loginService.getKickedOfflineDetail();
TypeScriptconst detail = nim.V2NIMLoginService.getKickedOfflineDetail()
TypeScriptconst detail = nim.loginService.getKickedOfflineDetail()
返回参数
当前被踢下线端的具体信息,请参考 V2NIMKickedOfflineDetail
。
getConnectStatus
接口描述
获取当前的登录连接状态。
该方法为同步。
参数说明
JavaV2NIMConnectStatus getConnectStatus();
无参数。
Objective-C- (V2NIMConnectStatus)getConnectStatus;
无参数。
C++virtual V2NIMConnectStatus getConnectStatus() = 0;
无参数。
TypeScriptgetConnectStatus(): V2NIMConnectStatus
无参数。
TypeScriptgetConnectStatus(): V2NIMConnectStatus
无参数。
示例代码
JavaV2NIMConnectStatus status= NIMClient.getV2NIMLoginService().getConnectStatus();
Objective-CV2NIMConnectStatus status = [[[NIMSDK sharedSDK] v2LoginService] getConnectStatus];
C++auto connectStatus = loginService.getConnectStatus();
TypeScriptconst connectStatus = nim.V2NIMLoginService.getConnectStatus()
TypeScriptconst connectStatus = nim.loginService.getConnectStatus()
返回参数
当前登录的连接状态,请参考 V2NIMConnectStatus
。
getChatroomLinkAddress
接口描述
获取当前的登录连接状态。
调用该方法前请先登录 IM,否则返回姿势错误。
参数说明
Javavoid getChatroomLinkAddress(String roomId, V2NIMSuccessCallback<List<String>> success, V2NIMFailureCallback failure);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
String | 是 | 聊天室 ID |
success |
V2NIMSuccessCallback |
是 | 获取成功回调,返回 link 列表。 |
failure |
V2NIMFailureCallback |
是 | 获取失败回调,返回 错误码。 |
Objective-C- (void)getChatroomLinkAddress:(NSString *)roomId
success:(nullable V2NIMChatroomLinkAddressCallback)success
failure:(nullable V2NIMFailureCallback)failure;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
NSString * | 是 | 聊天室 ID |
success |
nullable V2NIMChatroomLinkAddressCallback |
是 | 获取成功回调,返回 link 列表。 |
failure |
nullable V2NIMFailureCallback |
是 | 获取失败回调,返回 错误码。 |
C++virtual void getChatroomLinkAddress(nstd::string roomId,
V2NIMSuccessCallback<nstd::vector<nstd::string>> success,
V2NIMFailureCallback failure) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
String | 是 | 聊天室 ID |
success |
V2NIMSuccessCallback |
是 | 获取成功回调,返回 link 列表。 |
failure |
V2NIMFailureCallback |
是 | 获取失败回调,返回 错误码。 |
TypeScriptgetChatroomLinkAddress(roomId: string, miniProgram: boolean): Promise<Array<string>>
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId |
String | 是 | 聊天室 ID |
miniProgram |
boolan | 否 | 是否为小程序。小程序需要固定的链接地址,不能动态下发。默认值为 false。 |
示例代码
JavaNIMClient.getService(V2NIMLoginService.class).getChatroomLinkAddress("123", new V2NIMSuccessCallback<List<String>>() {
@Override
public void onSuccess(List<String> result) {
// get success
}
}, new V2NIMFailureCallback() {
@Override
public void onFailure(V2NIMError error) {
// get failed
}
});
Objective-CNSString *roomId = @"36";
[[NIMSDK sharedSDK].v2LoginService getChatroomLinkAddress:roomId
success:^(NSArray<NSString *> *links) {
// get success
}
failure:^(V2NIMError *error) {
// get failed
}];
C++loginService.getChatroomLinkAddress(
"roomId",
[](nstd::vector<nstd::string> linkAddresses) {
// handle link addresses
},
[](V2NIMError error) {
// handle error
});
TypeScriptconst addressArray = await nim.V2NIMLoginService.getChatroomLinkAddress('36', isMiniApp)
返回参数
无返回值。
Promise<List<String>>
getDataSync
接口描述
获取当前多端登录的同步详情。
该方法为同步。
参数说明
JavaList<V2NIMDataSyncDetail> getDataSync();
无参数。
Objective-C- (nullable NSArray<V2NIMDataSyncDetail *> *)getDataSync;
无参数。
C++virtual nstd::vector<V2NIMDataSyncDetail> getDataSync() = 0;
无参数。
TypeScriptgetDataSync(): V2NIMDataSyncDetail[] | null
无参数。
TypeScriptgetDataSync(): V2NIMDataSyncDetail[] | null
无参数。
示例代码
JavaV2NIMDataSyncDetail syncDetail = NIMClient.getV2NIMLoginService().getDataSync();
Objective-CNSArray<V2NIMDataSyncDetail *> *detail = [[[NIMSDK sharedSDK] v2LoginService] getDataSync];
C++auto dataSyncDetails = loginService.getDataSync();
TypeScriptconst details = nim.V2NIMLoginService.getDataSync()
TypeScriptconst details = nim.loginService.getDataSync()
返回参数
当前多端登录的同步详情,请参考 V2NIMDataSyncDetail
。
setReconnectDelayProvider
接口描述
设置登录重连延时的回调函数,用于提供重连延迟时间。
调用该接口成功后,当遇到网络连接中断时,SDK 会自动调用回调函数获取重连延迟时间。
该方法为同步。
参数说明
Javavoid setReconnectDelayProvider(V2NIMReconnectDelayProvider provider);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
provider |
V2NIMReconnectDelayProvider |
是 | 登录重连延时回调 |
Objective-C- (void)setReconnectDelayProvider:(nullable id<V2NIMReconnectDelayProvider>)provider;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
provider |
V2NIMReconnectDelayProvider |
是 | 登录重连延时回调 |
C++virtual void setReconnectDelayProvider(V2NIMReconnectDelayProvider provider) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
provider |
V2NIMReconnectDelayProvider |
是 | 登录重连延时回调 |
setReconnectDelayProvider(fn: (delay: number) => number): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
+
fn |
function | - | 登录重连延时回调函数,当连接中断时,会调用该函数获取重连延迟时间。 |
setReconnectDelayProvider(fn: (delay: number) => number): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
+
fn |
function | - | 登录重连延时回调函数,当连接中断时,会调用该函数获取重连延迟时间。 |
示例代码
JavaloginService.setReconnectDelayProvider(new V2NIMReconnectDelayProvider() {
@Override
public long getReconnectDelay(long delay) {
long newDelay = delay;
// Calculate new delay
// ...
return newDelay;
}
});
Objective-C@interface V2NIMLoginServiceSample : NSObject<V2NIMReconnectDelayProvider>
@end
@implementation V2NIMLoginServiceSample
- (void)handleReconnectDelay {
[[[NIMSDK sharedSDK] v2LoginService] setReconnectDelayProvider:self];
}
- (int)getReconnectDelay:(int)delay {
int newDelay = delay;
// Change delay
return newDelay;
}
@end
C++loginService.setReconnectDelayProvider([](uint32_t defaultDelay) {
uint32_t delay = defaultDelay;
// Calculate delay.
// ...
return delay;
});
TypeScriptnim.V2NIMLoginService.setReconnectDelayProvider(function() {
return 3000
})
TypeScriptnim.loginService.setReconnectDelayProvider(function() {
return 3000
})
返回参数
无。
addLoginListener
接口描述
注册登录相关监听器,包括登录状态变化、登录失败、登录终端被踢、登录终端信息变更。
注册成功后,当以上事件发生时,SDK 会触发相关回调通知。
-
建议在登录前调用该方法。
-
全局只需注册一次。
-
该方法为同步。
参数说明
Javavoid addLoginListener(V2NIMLoginListener listener);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginListener |
是 | 登录相关监听器 |
Objective-C- (void)addLoginListener:(id<V2NIMLoginListener>)listener;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginListener |
是 | 登录相关监听器 |
C++virtual void addLoginListener(V2NIMLoginListener listener) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginListener |
是 | 登录相关监听器 |
示例代码
JavaNIMClient.getV2NIMLoginService().addLoginListener(new V2NIMLoginListener() {
@Override
public void onLoginStatus(V2NIMLoginStatus status) {
// Handle login status
}
@Override
public void onLoginFailed(V2NIMError error) {
// Handle login error
}
@Override
public void onKickedOffline(V2NIMKickedOfflineDetail detail) {
// Handle kicked offline detail
}
@Override
public void onLoginClientChanged(V2NIMLoginClientChange change, List<V2NIMLoginClient> clients) {
// Handle login client change
}
});
Objective-C@interface V2NIMLoginServiceSample : NSObject<V2NIMLoginListener>
@end
@implementation V2NIMLoginServiceSample
- (void)listen {
[[[NIMSDK sharedSDK] v2LoginService] addLoginListener:self];
}
- (void)onLoginStatus:(V2NIMLoginStatus)status {
// Handle login status
}
- (void)onLoginFailed:(V2NIMError *)error {
// Handle login error
}
- (void)onKickedOffline:(V2NIMKickedOfflineDetail *)detail {
// Handle kicked offline detail
}
- (void)onLoginClientChanged:(V2NIMLoginClientChange)change clients:(nullable NSArray<V2NIMLoginClient *> *)clients {
// Handle login client change
}
@end
C++V2NIMLoginListener listener;
listener.onLoginStatus = [](V2NIMLoginStatus status) {
// Handle login status
};
listener.onLoginFailed = [](V2NIMError error) {
// Handle login error
};
listener.onKickedOffline = [](V2NIMKickedOfflineDetail detail) {
// Handle kicked offline detail
};
listener.onLoginClientChanged = [](V2NIMLoginClientChange change, std::vector<V2NIMLoginClient> clients) {
// Handle login client change
};
loginService.addLoginListener(listener);
返回参数
无。
removeLoginListener
接口描述
取消注册登录相关监听器,包括登录状态变化、登录失败、登录终端被踢、登录终端信息变更。
该方法为同步。
参数说明
JavaNIMClient.getV2NIMLoginService().removeLoginListener(listener);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginListener |
是 | 登录相关监听器 |
Objective-C- (void)removeLoginListener:(id<V2NIMLoginListener>)listener;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginListener |
是 | 登录相关监听器 |
C++virtual void removeLoginListener(V2NIMLoginListener listener) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginListener |
是 | 登录相关监听器 |
示例代码
JavaNIMClient.getV2NIMLoginService().removeLoginListener(listener);
Objective-Cid<V2NIMLoginListener> listener;
[[[NIMSDK sharedSDK] v2LoginService] removeLoginListener:listener];
C++V2NIMLoginListener listener;
loginService.removeLoginListener(listener);
返回参数
无。
addLoginDetailListener
接口描述
注册登录连接状态监听器,包括登录连接状态变化、断开连接、连接失败、数据同步状态。
注册成功后,当以上事件发生时,SDK 会触发相关回调通知。
-
建议在初始化后、登录前调用该方法。
-
全局只需注册一次。
-
该方法为同步。
参数说明
Javavoid addLoginDetailListener(V2NIMLoginDetailListener listener);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginDetailListener |
是 | 登录相关监听器 |
Objective-C- (void)addLoginDetailListener:(id<V2NIMLoginDetailListener>)listener;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginDetailListener |
是 | 登录相关监听器 |
C++virtual void addLoginDetailListener(V2NIMLoginDetailListener listener) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginDetailListener |
是 | 登录相关监听器 |
示例代码
JavaNIMClient.getV2NIMLoginService().addLoginDetailListener(new V2NIMLoginDetailListener() {
@Override
public void onConnectStatus(V2NIMConnectStatus status) {
// Handle connect status
}
@Override
public void onDisconnected(V2NIMError error) {
// Handle disconnected error
}
@Override
public void onConnectFailed(V2NIMError error) {
// Handle connect failed error
}
@Override
public void onDataSync(V2NIMDataSyncType type, V2NIMDataSyncState state, V2NIMError error) {
// Handle data sync
}
});
Objective-C@interface V2NIMLoginServiceSample : NSObject <V2NIMLoginDetailListener>
@end
@implementation V2NIMLoginServiceSample
- (void)listen {
[[[NIMSDK sharedSDK] v2LoginService] addLoginDetailListener:self];
}
- (void)onConnectStatus:(V2NIMConnectStatus)status {
// Handle connect status
}
- (void)onDisconnected:(nullable V2NIMError *)error {
// Handle disconnected error
}
- (void)onConnectFailed:(nullable V2NIMError *)error {
// Handle connect failed error
}
- (void)onDataSync:(V2NIMDataSyncType)type
state:(V2NIMDataSyncState)state
error:(nullable V2NIMError *)error {
// Handle data sync
}
@end
C++V2NIMLoginDetailListener listener;
listener.onConnectStatus = [](V2NIMConnectStatus status) {
// Handle connect status
};
listener.onDisconnected = [](V2NIMError error) {
// Handle disconnected error
};
listener.onConnectFailed = [](V2NIMError error) {
// Handle connect failed error
};
listener.onDataSync = [](V2NIMDataSyncType type, V2NIMDataSyncState state, V2NIMError error) {
// Handle data sync
};
loginService.addLoginDetailListener(listener);
返回参数
无。
removeLoginDetailListener
接口描述
取消注册登录连接状态监听器,包括登录连接状态变化、断开连接、连接失败、数据同步状态。
该方法为同步。
参数说明
Javavoid removeLoginDetailListener(V2NIMLoginDetailListener listener);
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginDetailListener |
是 | 登录相关监听器 |
Objective-C- (void)addLoginDetailListener:(id<V2NIMLoginDetailListener>)listener;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginDetailListener |
是 | 登录相关监听器 |
C++virtual void removeLoginDetailListener(V2NIMLoginDetailListener listener) = 0;
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
listener |
V2NIMLoginDetailListener |
是 | 登录相关监听器 |
示例代码
JavaNIMClient.getV2NIMLoginService().removeLoginDetailListener(listener);
Objective-Cid<V2NIMLoginDetailListener> listener;
[[[NIMSDK sharedSDK] v2LoginService] removeLoginDetailListener:listener];
C++V2NIMLoginDetailListener listener;
loginService.removeLoginDetailListener(listener);
返回参数
无。
on("EventName")
接口描述
注册登录相关监听。
注册成功后,当事件发生时,SDK 会触发相关回调通知。
-
建议在初始化后、登录前调用该方法。
-
全局只需注册一次。
-
该方法为同步。
参数说明
TypeScripton<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
eventName |
T | 是 | 事件名称:onLoginStatus :登录状态变化回调,返回变更后的登录状态。onLoginFailed :登录失败回调,返回错误码和错误信息。onKickedOffline :客户端被踢回调,返回被踢详细信息。onLoginClientChanged :多端登录时,其他在线客户端登录状态变化回调,返回变更原因和变更具体信息。onConnectStatus :登录连接状态变化回调,返回连接状态。onDisconnected :登录连接断开回调,返回错误码和错误信息。onConnectFailed :登录连接失败回调,返回错误码和错误信息。onDataSync :数据同步状态变化回调,返回数据同步类型、同步状态和同步错误信息。 |
fn |
function | 是 | 处理事件的方法,当事件触发时,会调用该函数进行处理。 |
TypeScripton<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
eventName |
T | 是 | 事件名称:onLoginStatus :登录状态变化回调,返回变更后的登录状态。onLoginFailed :登录失败回调,返回错误码和错误信息。onKickedOffline :客户端被踢回调,返回被踢详细信息。onLoginClientChanged :多端登录时,其他在线客户端登录状态变化回调,返回变更原因和变更具体信息。onConnectStatus :登录连接状态变化回调,返回连接状态。onDisconnected :登录连接断开回调,返回错误码和错误信息。onConnectFailed :登录连接失败回调,返回错误码和错误信息。onDataSync :数据同步状态变化回调,返回数据同步类型、同步状态和同步错误信息。 |
fn |
function | 是 | 处理事件的方法,当事件触发时,会调用该函数进行处理。 |
示例代码
TypeScriptnim.V2NIMLoginService.on("onLoginStatus", theListnerFn)
nim.V2NIMLoginService.on("onLoginFailed", theListnerFn)
nim.V2NIMLoginService.on("onKickedOffline", theListnerFn)
nim.V2NIMLoginService.on("onLoginClientChanged", theListnerFn)
nim.V2NIMLoginService.on("onConnectStatus", function (status: V2NIMConnectStatus) {})
nim.V2NIMLoginService.on("onDisconnected", function (error: V2NIMError) {})
nim.V2NIMLoginService.on("onConnectFailed", function (error: V2NIMError) {})
nim.V2NIMLoginService.on("onDataSync", function (type: V2NIMDataSyncType, state: V2NIMDataSyncState, error?: V2NIMError) {})
TypeScriptnim.loginService.on("onLoginStatus", (status: V2NIMLoginStatus) => {})
nim.loginService.on("onLoginFailed", (error: V2NIMError) => {})
nim.loginService.on("onKickedOffline", (detail: V2NIMKickedOfflineDetail) => {})
nim.loginService.on("onLoginClientChanged", (change: V2NIMLoginClientChange, clients: V2NIMLoginClient[]) => {})
nim.loginService.on("onConnectStatus", (status: V2NIMConnectStatus) => {})
nim.loginService.on("onDisconnected", (error: V2NIMError) => {})
nim.loginService.on("onConnectFailed", (error: V2NIMError) => {})
nim.loginService.on("onDataSync", (type: V2NIMDataSyncType, state: V2NIMDataSyncState, error?: V2NIMError) => {})
返回参数
无。
off("EventName")
接口描述
取消注册登录相关监听。
该方法为同步。
参数说明
TypeScriptoff<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
eventName |
T | 是 | 事件名称:onLoginStatus :登录状态变化回调onLoginFailed :登录失败回调onKickedOffline :客户端被踢回调 onLoginClientChanged :多端登录时,其他在线客户端登录状态变化回调。onConnectStatus :登录连接状态变化回调 onDisconnected :登录连接断开回调 onConnectFailed :登录连接失败回调 onDataSync :数据同步状态变化回调 |
fn |
function | 是 | 处理事件的方法,当事件触发时,会调用该函数进行处理。 |
TypeScriptoff<T extends keyof I>(eventName: T, fn: (...args: I[T]) => void): void
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
eventName |
T | 是 | 事件名称:onLoginStatus :登录状态变化回调onLoginFailed :登录失败回调onKickedOffline :客户端被踢回调 onLoginClientChanged :多端登录时,其他在线客户端登录状态变化回调。onConnectStatus :登录连接状态变化回调 onDisconnected :登录连接断开回调 onConnectFailed :登录连接失败回调 onDataSync :数据同步状态变化回调 |
fn |
function | 是 | 处理事件的方法,当事件触发时,会调用该函数进行处理。 |
示例代码
TypeScriptnim.V2NIMLoginService.off("onLoginStatus")
nim.V2NIMLoginService.off("onLoginFailed")
nim.V2NIMLoginService.off("onKickedOffline")
nim.V2NIMLoginService.off("onLoginClientChanged")
nim.V2NIMLoginService.off("onConnectStatus")
nim.V2NIMLoginService.off("onDisconnected")
nim.V2NIMLoginService.off("onConnectFailed")
nim.V2NIMLoginService.off("onDataSync")
TypeScriptnim.loginService.off("onLoginStatus", theListnerFn)
nim.loginService.off("onLoginFailed", theListnerFn)
nim.loginService.off("onKickedOffline", theListnerFn)
nim.loginService.off("onLoginClientChanged", theListnerFn)
nim.loginService.off("onConnectStatus", theListner)
nim.loginService.off("onDisconnected", theListner)
nim.loginService.off("onConnectFailed", theListner)
nim.loginService.off("onDataSync", theListner)
// remove all listeners
nim.loginService.removeAllListeners()
返回参数
无