登录相关

更新时间: 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 概览

登录相关监听

Android/iOS/Windows/macOS
API 说明 起始版本
addLoginListener 注册登录状态监听器 v10.2.0
removeLoginListener 取消注册登录状态监听器 v10.2.0
addLoginDetailListener 注册登录连接状态监听器 v10.2.0
removeLoginDetailListener 取消注册登录连接状态监听器 v10.2.0
Web/uni-app/小程序/HarmonyOS
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 开发指南文档。

调用该接口成功后,建议将 accountIdtoken 保存到本地,方便下次应用启动时实现自动登录。

适用场景

  • 在新设备上首次登录 IM
  • 同时在线的其他设备踢下线后再次登录 IM
  • 切换 IM 账号后再次登录 IM
  • 注销登录后再次登录 IM

参数说明

Android
Javavoid login(String accountId, String token, V2NIMLoginOption option, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure)
参数名称 类型 是否必填 说明
accountId String 网易云信 IM 为用户分配的唯一登录账号。
token String 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token
option V2NIMLoginOption 登录配置。主要包含如下配置项:
  • 是否强制登录
  • 登录失败后重试次数
  • 动态 Token 获取回调
  • 鉴权方式
  • success V2NIMSuccessCallback 登录成功回调
    failure V2NIMFailureCallback 登录失败回调,返回 错误码
    iOS
    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 * 登录配置。主要包含如下配置项:
  • 是否强制登录
  • 登录失败后重试次数
  • 动态 Token 获取回调
  • 鉴权方式
  • success V2NIMSuccessCallback 登录成功回调
    failure V2NIMFailureCallback 登录失败回调,返回 错误码
    Windows/macOS
    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 登录配置。主要包含如下配置项:
  • 是否强制登录
  • 登录失败后重试次数
  • 动态 Token 获取回调
  • 鉴权方式
  • success V2NIMSuccessCallback 登录成功回调
    failure V2NIMFailureCallback 登录失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptlogin(accountId: string, token: string, loginOptions?: V2NIMLoginOptions): Promise<V2NIMLoginClient>
    
    参数名称 类型 是否必填 说明
    accountId string 网易云信 IM 为用户分配的唯一登录账号。
    token string 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token
    loginOption V2NIMLoginOption 登录配置。主要包含如下配置项:
  • 是否强制登录
  • 登录失败后重试次数
  • 动态 Token 获取回调
  • 鉴权方式
  • HarmonyOS
    TypeScriptlogin(accountId: string, token: string, loginOption?: V2NIMLoginOption): Promise<void>
    
    参数名称 类型 是否必填 说明
    accountId string 网易云信 IM 为用户分配的唯一登录账号。
    token string 网易云信 IM 登录鉴权 Token(静态),获取方式请参考 获取静态 Token
    loginOption V2NIMLoginOption 登录配置。主要包含如下配置项:
  • 是否强制登录
  • 登录失败后重试次数
  • 动态 Token 获取回调
  • 鉴权方式
  • 示例代码

    Android
    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
        }
    });
    
    iOS
    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);
        }];
    }
    
    Windows/macOS
    C++V2NIMLoginOption option;
    loginService.login(
        "accountId",
        "token",
        option,
        []() {
            // Login succeeded
        },
        [](V2NIMError error) {
            // Login failed, handle error
        }
    );
    
    Web/uni-app/小程序
    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)
    }
    
    HarmonyOS
    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)
    }
    

    返回参数

    Android/iOS/Windows/macOS

    无返回值。

    Web/uni-app/小程序
    HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback 回调
    • 请求失败,返回 V2NIMFailuerCallback 回调,包含登录相关错误码
    Web/uni-app/小程序/HarmonyOS

    无。

    logout

    接口描述

    登出 IM。

    参数说明

    Android
    Javavoid logout(V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    success V2NIMSuccessCallback 登出成功回调
    failure V2NIMFailureCallback 登出失败回调,返回 错误码
    iOS
    Objective-C- (void)logout:(nullable V2NIMSuccessCallback)success
           failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    success V2NIMSuccessCallback 登出成功回调
    failure V2NIMFailureCallback 登出失败回调,返回 错误码
    Windows/macOS
    C++virtual void logout(V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    success V2NIMSuccessCallback 登出成功回调
    failure V2NIMFailureCallback 登出失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptlogout(): Promise<void>
    

    无参数。

    HarmonyOS
    TypeScriptlogout(): Promise<void>
    

    无参数。

    示例代码

    Android
    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
        }
    });
    
    iOS
    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);
            }
        }];
    }
    
    Windows/macOS
    C++loginService.logout([]() {
        // Logout succeeded.
    }, [](V2NIMError error) {
        // Logout failed, handle error.
    });
    
    Web/uni-app/小程序
    TypeScripttry {
      await nim1.V2NIMLoginService.logout();
      // TODO: success
    } catch (err) {
      // TODO: failure
      console.log(err.code);
    }
    
    HarmonyOS
    TypeScripttry {
      await nim.loginService.logout()
    } catch (err) {
      // TODO failed, check code
      // console.log(err.code)
    }
    

    返回参数

    Android/iOS/Windows/macOS

    无返回值。

    Web/uni-app/小程序/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/Windows/macOS
    • 请求成功,返回 V2NIMSuccessCallback 回调
    • 请求失败,返回 V2NIMFailuerCallback 回调,包含登出相关错误码
    Web/uni-app/小程序/HarmonyOS

    无。

    getLoginUser

    接口描述

    获取当前登录的账号。

    该方法为同步。

    参数说明

    Android
    JavaString getLoginUser();
    

    无参数。

    iOS
    Objective-C- (nullable NSString *)getLoginUser;
    

    无参数。

    Windows/macOS
    C++virtual nstd::string getLoginUser() = 0;
    

    无参数。

    Web/uni-app/小程序
    TypeScriptgetLoginUser(): string
    

    无参数。

    HarmonyOS
    TypeScriptgetLoginUser(): string
    

    无参数。

    示例代码

    Android
    JavaString accountId = NIMClient.getV2NIMLoginService().getLoginUser();
    
    iOS
    Objective-CNSString *accountId = [[[NIMSDK sharedSDK] v2LoginService] getLoginUser];
    
    Windows/macOS
    C++auto loginUser = loginService.getLoginUser();
    
    Web/uni-app/小程序
    TypeScriptconst accountId = nim.V2NIMLoginService.getLoginUser()
    
    HarmonyOS
    TypeScriptconst accountId = nim.loginService.getLoginUser()
    

    返回参数

    当前登录账号。

    getLoginStatus

    接口描述

    获取当前登录状态。

    该方法为同步。

    参数说明

    Android
    JavaV2NIMLoginStatus getLoginStatus();
    

    无参数。

    iOS
    Objective-C- (V2NIMLoginStatus)getLoginStatus;
    

    无参数。

    Windows/macOS
    C++virtual V2NIMLoginStatus getLoginStatus() = 0;
    

    无参数。

    Web/uni-app/小程序
    TypeScriptgetLoginStatus(): V2NIMLoginStatus
    

    无参数。

    HarmonyOS
    TypeScriptgetLoginStatus(): V2NIMLoginStatus
    

    无参数。

    示例代码

    Android
    JavaV2NIMLoginStatus status = NIMClient.getV2NIMLoginService().getLoginStatus();
    
    iOS
    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];
    
    Windows/macOS
    C++auto loginStatus = loginService.getLoginStatus();
    
    Web/uni-app/小程序
    TypeScriptconst loginStatus = nim.V2NIMLoginService.getLoginStatus()
    
    HarmonyOS
    TypeScriptconst loginStatus = nim.loginService.getLoginStatus()
    

    返回参数

    当前登录状态,请参考 V2NIMLoginStatus

    getLoginClients

    接口描述

    如果已在 网易云信控制台 配置 IM 多端登录策略,您可以通过该接口获取当前多端登录列表。

    参数说明

    Android
    JavaList<V2NIMLoginClient> getLoginClients();
    

    无参数。

    iOS
    Objective-C- (nullable NSArray<V2NIMLoginClient *> *)getLoginClients;
    

    无参数。

    Windows/macOS
    C++virtual nstd::vector<V2NIMLoginClient> getLoginClients() = 0;
    

    无参数。

    Web/uni-app/小程序
    TypeScriptgetLoginClients(): V2NIMLoginClient[]
    

    无参数。

    HarmonyOS
    TypeScriptgetLoginClients(): V2NIMLoginClient[]
    

    无参数。

    示例代码

    Android
    JavaList<V2NIMLoginClient> list = NIMClient.getV2NIMLoginService().getLoginClients();
    
    iOS
    Objective-CNSArray<V2NIMLoginClient *> *clients = [[[NIMSDK sharedSDK] v2LoginService] getLoginClients];
    
    Windows/macOS
    C++auto loginClients = loginService.getLoginClients();
    
    Web/uni-app/小程序
    TypeScriptconst loginClients = nim.V2NIMLoginService.getLoginClients()
    
    HarmonyOS
    TypeScriptconst loginClients = nim.loginSerive.getLoginClients()
    

    返回参数

    当前多端登录列表,请参考 V2NIMLoginClient

    kickOffline

    接口描述

    主动将同时在线的其他客户端踢下线。

    被踢端若调用 addLoginListener 注册登录状态监听器,在被踢下线后,会收到 V2NIMLoginListener.onKickedOffline 回调。

    如需重新登录,建议先调用 logout 登出 IM,再切换到登录界面进行登录。

    接口原型

    Android
    Javavoid kickOffline(V2NIMLoginClient client, V2NIMSuccessCallback<Void> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    client V2NIMLoginClient 被踢下线的客户端信息
    success V2NIMSuccessCallback 踢下线成功回调
    failure V2NIMFailureCallback 踢下线失败回调,返回错误码
    iOS
    Objective-C- (void)kickOffline:(V2NIMLoginClient *)client
                success:(nullable V2NIMSuccessCallback)success
                failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    client V2NIMLoginClient 被踢下线的客户端信息
    success V2NIMSuccessCallback 踢下线成功回调
    failure V2NIMFailureCallback 踢下线失败回调,返回错误码
    Windows/macOS
    C++virtual void kickOffline(V2NIMLoginClient client, V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    client V2NIMLoginClient 被踢下线的客户端信息
    success V2NIMSuccessCallback 踢下线成功回调
    failure V2NIMFailureCallback 踢下线失败回调,返回错误码
    Web/uni-app/小程序
    TypeScriptkickOffline(client: V2NIMLoginClient): Promise<void>
    
    参数名称 类型 是否必填 说明
    client V2NIMLoginClient 被踢下线的客户端信息
    HarmonyOS
    TypeScriptkickOffline(client: V2NIMLoginClient): Promise<void>
    
    参数名称 类型 是否必填 说明
    client V2NIMLoginClient 被踢下线的客户端信息

    示例代码

    Android
    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
        }
    });
    
    iOS
    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);
        }];
    }
    
    Windows/macOS
    C++loginService.kickOffline(client, []() {
        // kick client succeeded
    }, [](V2NIMError error) {
        // kick client failed, handle error
    });
    
    Web/uni-app/小程序
    TypeScriptconst loginClients = nim.V2NIMLoginService.getLoginClients();
    if (loginClients.length > 0) {
      try {
        await nim.V2NIMLoginService.kickOffline(loginClients[0]);
      } catch (err) {
        // TODO: fail
      }
    }
    
    HarmonyOS
    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)
    }
    

    返回参数

    Android/iOS/Windows/macOS

    无返回值。

    Web/uni-app/小程序/HarmonyOS

    Promise<void>

    相关回调

    Android/iOS/Windows/macOS
    • 调用方法成功,返回 V2NIMSuccessCallback 回调。
    • 调用方法失败,返回 V2NIMFailuerCallback 回调,包含相关错误码。
    Web/uni-app/小程序/HarmonyOS

    无。

    相关回调

    V2NIMLoginListener.onKickedOffline

    getKickedOfflineDetail

    接口描述

    获取当前被踢下线端的具体信息。

    该方法为同步。

    参数说明

    Android
    JavaV2NIMKickedOfflineDetail getKickedOfflineDetail();
    

    无参数。

    iOS
    Objective-C- (nullable V2NIMKickedOfflineDetail *)getKickedOfflineDetail;
    

    无参数。

    Windows/macOS
    C++virtual nstd::optional<V2NIMKickedOfflineDetail> getKickedOfflineDetail() = 0;
    

    无参数。

    Web/uni-app/小程序
    TypeScriptgetKickedOfflineDetail(): V2NIMKickedOfflineDetail | null
    

    无参数。

    HarmonyOS
    TypeScriptgetKickedOfflineDetail(): V2NIMKickedOfflineDetail | null
    

    无参数。

    示例代码

    Android
    JavaV2NIMKickedOfflineDetail detail = NIMClient.getV2NIMLoginService().getKickedOfflineDetail();
    
    iOS
    Objective-CV2NIMKickedOfflineDetail *detail = [[[NIMSDK sharedSDK] v2LoginService] getKickedOfflineDetail];
    
    Windows/macOS
    C++auto kickedOfflineDetail = loginService.getKickedOfflineDetail();
    
    Web/uni-app/小程序
    TypeScriptconst detail = nim.V2NIMLoginService.getKickedOfflineDetail()
    
    HarmonyOS
    TypeScriptconst detail = nim.loginService.getKickedOfflineDetail()
    

    返回参数

    当前被踢下线端的具体信息,请参考 V2NIMKickedOfflineDetail

    getConnectStatus

    接口描述

    获取当前的登录连接状态。

    该方法为同步。

    参数说明

    Android
    JavaV2NIMConnectStatus getConnectStatus();
    

    无参数。

    iOS
    Objective-C- (V2NIMConnectStatus)getConnectStatus;
    

    无参数。

    Windows/macOS
    C++virtual V2NIMConnectStatus getConnectStatus() = 0;
    

    无参数。

    Web/uni-app/小程序
    TypeScriptgetConnectStatus(): V2NIMConnectStatus
    

    无参数。

    HarmonyOS
    TypeScriptgetConnectStatus(): V2NIMConnectStatus
    

    无参数。

    示例代码

    Android
    JavaV2NIMConnectStatus status= NIMClient.getV2NIMLoginService().getConnectStatus();
    
    iOS
    Objective-CV2NIMConnectStatus status = [[[NIMSDK sharedSDK] v2LoginService] getConnectStatus];
    
    Windows/macOS
    C++auto connectStatus = loginService.getConnectStatus();
    
    Web/uni-app/小程序
    TypeScriptconst connectStatus = nim.V2NIMLoginService.getConnectStatus()
    
    HarmonyOS
    TypeScriptconst connectStatus = nim.loginService.getConnectStatus()
    

    返回参数

    当前登录的连接状态,请参考 V2NIMConnectStatus

    getChatroomLinkAddress

    接口描述

    获取当前的登录连接状态。

    调用该方法前请先登录 IM,否则返回姿势错误。

    参数说明

    Android
    Javavoid getChatroomLinkAddress(String roomId, V2NIMSuccessCallback<List<String>> success, V2NIMFailureCallback failure);
    
    参数名称 类型 是否必填 说明
    roomId String 聊天室 ID
    success V2NIMSuccessCallback 获取成功回调,返回 link 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    iOS
    Objective-C- (void)getChatroomLinkAddress:(NSString *)roomId
                           success:(nullable V2NIMChatroomLinkAddressCallback)success
                           failure:(nullable V2NIMFailureCallback)failure;
    
    参数名称 类型 是否必填 说明
    roomId NSString * 聊天室 ID
    success nullable V2NIMChatroomLinkAddressCallback 获取成功回调,返回 link 列表。
    failure nullable V2NIMFailureCallback 获取失败回调,返回 错误码
    Windows/macOS
    C++virtual void getChatroomLinkAddress(nstd::string roomId,
        V2NIMSuccessCallback<nstd::vector<nstd::string>> success,
        V2NIMFailureCallback failure) = 0;
    
    参数名称 类型 是否必填 说明
    roomId String 聊天室 ID
    success V2NIMSuccessCallback 获取成功回调,返回 link 列表。
    failure V2NIMFailureCallback 获取失败回调,返回 错误码
    Web/uni-app/小程序
    TypeScriptgetChatroomLinkAddress(roomId: string, miniProgram: boolean): Promise<Array<string>>
    
    参数名称 类型 是否必填 说明
    roomId String 聊天室 ID
    miniProgram boolan 是否为小程序。小程序需要固定的链接地址,不能动态下发。默认值为 false。

    示例代码

    Android
    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
        }
    });
    
    iOS
    Objective-CNSString *roomId = @"36";
    [[NIMSDK sharedSDK].v2LoginService getChatroomLinkAddress:roomId
                                                    success:^(NSArray<NSString *> *links) {
                                                        // get success
                                                    }
                                                    failure:^(V2NIMError *error) {
                                                        // get failed
                                                    }];
    
    Windows/macOS
    C++loginService.getChatroomLinkAddress(
        "roomId",
        [](nstd::vector<nstd::string> linkAddresses) {
            // handle link addresses
        },
        [](V2NIMError error) {
            // handle error
        });
    
    Web/uni-app/小程序
    TypeScriptconst addressArray = await nim.V2NIMLoginService.getChatroomLinkAddress('36', isMiniApp)
    

    返回参数

    Android/iOS/Windows/macOS

    无返回值。

    Web/uni-app/小程序

    Promise<List<String>>

    getDataSync

    接口描述

    获取当前多端登录的同步详情。

    该方法为同步。

    参数说明

    Android
    JavaList<V2NIMDataSyncDetail> getDataSync();
    

    无参数。

    iOS
    Objective-C- (nullable NSArray<V2NIMDataSyncDetail *> *)getDataSync;
    

    无参数。

    Windows/macOS
    C++virtual nstd::vector<V2NIMDataSyncDetail> getDataSync() = 0;
    

    无参数。

    Web/uni-app/小程序
    TypeScriptgetDataSync(): V2NIMDataSyncDetail[] | null
    

    无参数。

    HarmonyOS
    TypeScriptgetDataSync(): V2NIMDataSyncDetail[] | null
    

    无参数。

    示例代码

    Android
    JavaV2NIMDataSyncDetail syncDetail = NIMClient.getV2NIMLoginService().getDataSync();
    
    iOS
    Objective-CNSArray<V2NIMDataSyncDetail *> *detail = [[[NIMSDK sharedSDK] v2LoginService] getDataSync];
    
    Windows/macOS
    C++auto dataSyncDetails = loginService.getDataSync();
    
    Web/uni-app/小程序
    TypeScriptconst details = nim.V2NIMLoginService.getDataSync()
    
    HarmonyOS
    TypeScriptconst details = nim.loginService.getDataSync()
    

    返回参数

    当前多端登录的同步详情,请参考 V2NIMDataSyncDetail

    setReconnectDelayProvider

    接口描述

    设置登录重连延时的回调函数,用于提供重连延迟时间。

    调用该接口成功后,当遇到网络连接中断时,SDK 会自动调用回调函数获取重连延迟时间。

    该方法为同步。

    参数说明

    Android
    Javavoid setReconnectDelayProvider(V2NIMReconnectDelayProvider provider);
    
    参数名称 类型 是否必填 说明
    provider V2NIMReconnectDelayProvider 登录重连延时回调
    iOS
    Objective-C- (void)setReconnectDelayProvider:(nullable id<V2NIMReconnectDelayProvider>)provider;
    
    参数名称 类型 是否必填 说明
    provider V2NIMReconnectDelayProvider 登录重连延时回调
    Windows/macOS
    C++virtual void setReconnectDelayProvider(V2NIMReconnectDelayProvider provider) = 0;
    
    参数名称 类型 是否必填 说明
    provider V2NIMReconnectDelayProvider 登录重连延时回调
    Web/uni-app/小程序
    setReconnectDelayProvider(fn: (delay: number) => number): void
    
    参数名称 类型 是否必填 说明
    fn function - 登录重连延时回调函数,当连接中断时,会调用该函数获取重连延迟时间。
    HarmonyOS
    setReconnectDelayProvider(fn: (delay: number) => number): void
    
    参数名称 类型 是否必填 说明
    fn function - 登录重连延时回调函数,当连接中断时,会调用该函数获取重连延迟时间。

    示例代码

    Android
    JavaloginService.setReconnectDelayProvider(new V2NIMReconnectDelayProvider() {
        @Override
        public long getReconnectDelay(long delay) {
            long newDelay = delay;
            // Calculate new delay
            // ...
            return newDelay;
        }
    });
    
    iOS
    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
    
    Windows/macOS
    C++loginService.setReconnectDelayProvider([](uint32_t defaultDelay) {
        uint32_t delay = defaultDelay;
        // Calculate delay.
        // ...
        return delay;
    });
    
    Web/uni-app/小程序
    TypeScriptnim.V2NIMLoginService.setReconnectDelayProvider(function() {
        return 3000
    })
    
    HarmonyOS
    TypeScriptnim.loginService.setReconnectDelayProvider(function() {
        return 3000
    })
    

    返回参数

    无。

    addLoginListener

    接口描述

    注册登录相关监听器,包括登录状态变化、登录失败、登录终端被踢、登录终端信息变更。

    注册成功后,当以上事件发生时,SDK 会触发相关回调通知。

    • 建议在登录前调用该方法。

    • 全局只需注册一次。

    • 该方法为同步。

    参数说明

    Android
    Javavoid addLoginListener(V2NIMLoginListener listener);
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginListener 登录相关监听器
    iOS
    Objective-C- (void)addLoginListener:(id<V2NIMLoginListener>)listener;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginListener 登录相关监听器
    Windows/macOS
    C++virtual void addLoginListener(V2NIMLoginListener listener) = 0;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginListener 登录相关监听器

    示例代码

    Android
    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
        }
    });
    
    iOS
    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
    
    Windows/macOS
    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

    接口描述

    取消注册登录相关监听器,包括登录状态变化、登录失败、登录终端被踢、登录终端信息变更。

    该方法为同步。

    参数说明

    Android
    JavaNIMClient.getV2NIMLoginService().removeLoginListener(listener);
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginListener 登录相关监听器
    iOS
    Objective-C- (void)removeLoginListener:(id<V2NIMLoginListener>)listener;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginListener 登录相关监听器
    Windows/macOS
    C++virtual void removeLoginListener(V2NIMLoginListener listener) = 0;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginListener 登录相关监听器

    示例代码

    Android
    JavaNIMClient.getV2NIMLoginService().removeLoginListener(listener);
    
    iOS
    Objective-Cid<V2NIMLoginListener> listener;
    [[[NIMSDK sharedSDK] v2LoginService] removeLoginListener:listener];
    
    Windows/macOS
    C++V2NIMLoginListener listener;
    loginService.removeLoginListener(listener);
    

    返回参数

    无。

    addLoginDetailListener

    接口描述

    注册登录连接状态监听器,包括登录连接状态变化、断开连接、连接失败、数据同步状态。

    注册成功后,当以上事件发生时,SDK 会触发相关回调通知。

    • 建议在初始化后、登录前调用该方法。

    • 全局只需注册一次。

    • 该方法为同步。

    参数说明

    Android
    Javavoid addLoginDetailListener(V2NIMLoginDetailListener listener);
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginDetailListener 登录相关监听器
    iOS
    Objective-C- (void)addLoginDetailListener:(id<V2NIMLoginDetailListener>)listener;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginDetailListener 登录相关监听器
    Windows/macOS
    C++virtual void addLoginDetailListener(V2NIMLoginDetailListener listener) = 0;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginDetailListener 登录相关监听器

    示例代码

    Android
    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
        }
    });
    
    iOS
    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
    
    Windows/macOS
    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

    接口描述

    取消注册登录连接状态监听器,包括登录连接状态变化、断开连接、连接失败、数据同步状态。

    该方法为同步。

    参数说明

    Android
    Javavoid removeLoginDetailListener(V2NIMLoginDetailListener listener);
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginDetailListener 登录相关监听器
    iOS
    Objective-C- (void)addLoginDetailListener:(id<V2NIMLoginDetailListener>)listener;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginDetailListener 登录相关监听器
    Windows/macOS
    C++virtual void removeLoginDetailListener(V2NIMLoginDetailListener listener) = 0;
    
    参数名称 类型 是否必填 说明
    listener V2NIMLoginDetailListener 登录相关监听器

    示例代码

    Android
    JavaNIMClient.getV2NIMLoginService().removeLoginDetailListener(listener);
    
    iOS
    Objective-Cid<V2NIMLoginDetailListener> listener;
    [[[NIMSDK sharedSDK] v2LoginService] removeLoginDetailListener:listener];
    
    Windows/macOS
    C++V2NIMLoginDetailListener listener;
    loginService.removeLoginDetailListener(listener);
    

    返回参数

    无。

    on("EventName")

    接口描述

    注册登录相关监听。

    注册成功后,当事件发生时,SDK 会触发相关回调通知。

    • 建议在初始化后、登录前调用该方法。

    • 全局只需注册一次。

    • 该方法为同步。

    参数说明

    Web/uni-app/小程序
    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 处理事件的方法,当事件触发时,会调用该函数进行处理。
    HarmonyOS
    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 处理事件的方法,当事件触发时,会调用该函数进行处理。

    示例代码

    Web/uni-app/小程序
    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) {})
    
    HarmonyOS
    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")

    接口描述

    取消注册登录相关监听。

    该方法为同步。

    参数说明

    Web/uni-app/小程序
    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 处理事件的方法,当事件触发时,会调用该函数进行处理。
    HarmonyOS
    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 处理事件的方法,当事件触发时,会调用该函数进行处理。

    示例代码

    Web/uni-app/小程序
    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")
    
    HarmonyOS
    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()
    

    返回参数

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 支持平台
    • API 概览
    • 登录相关监听
    • 登录登出
    • 多端登录与互踢
    • 接口类
    • login
    • logout
    • getLoginUser
    • getLoginStatus
    • getLoginClients
    • kickOffline
    • getKickedOfflineDetail
    • getConnectStatus
    • getChatroomLinkAddress
    • getDataSync
    • setReconnectDelayProvider
    • addLoginListener
    • removeLoginListener
    • addLoginDetailListener
    • removeLoginDetailListener
    • on("EventName")
    • off("EventName")