登录相关

更新时间: 2024/04/18 18:10:59

完成 NIM SDK 的初始化后,用户需要登录 IM,登录成功后才能正常调用消息和会话等其他接口。如何实现 IM 登录请参考开发文档登录及登出 IM

本文介绍 NetEase IM SDK(以下简称 NIM SDK)登录相关 API。

支持平台

Android iOS macOS/Windows Web/uni-app/小程序 Harmony

API 概览

登录登出

API 描述 起始版本
login 登录 IM v10.2.0(对应 Harmony v0.5.0)
logout 登出 IM v10.2.0(对应 Harmony v0.5.0)
getLoginUser 获取当前登录的账号 v10.2.0(对应 Harmony v0.5.0)
getLoginStatus 获取当前登录状态 v10.2.0(对应 Harmony v0.5.0)
getConnectStatus 获取当前登录连接状态 v10.2.0(对应 Harmony v0.5.0)
getChatroomLinkAddress 获取聊天室连接地址 v10.2.0(对应 Harmony v0.5.0)

多端登录与互踢

API 描述 起始版本
getLoginClients 获取当前多端登录列表 v10.2.0(对应 Harmony v0.5.0)
kickOffline 主动将同时在线的其他客户端踢下线 v10.2.0(对应 Harmony v0.5.0)
getKickedOfflineDetail 获取被踢下线的具体信息 v10.2.0(对应 Harmony v0.5.0)
getDataSync 获取当前多端登录同步详情 v10.2.0(对应 Harmony v0.5.0)
setReconnectDelayProvider 设置登录重连延时的回调函数 v10.2.0(对应 Harmony v0.5.0)

注册/取消注册登录相关监听

Android/iOS/macOS/Windows
API 描述 起始版本
addLoginListener 注册登录状态监听器 v10.2.0
removeLoginListener 取消注册登录状态监听器 v10.2.0
addLoginDetailListener 注册登录连接状态监听器 v10.2.0
removeLoginDetailListener 取消注册登录连接状态监听器 v10.2.0
Web/uni-app/小程序/Harmony
API 描述 起始版本
on("EventName") 注册登录相关监听器 v10.2.0(对应 Harmony v0.5.0)
off("EventName") 取消注册登录相关监听器 v10.2.0(对应 Harmony 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 - 登录失败回调,返回错误码
    macOS/Windows
    cppvirtual 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 获取回调
  • 鉴权方式
  • Harmony
    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);
        }];
    }
    
    macOS/Windows
    cppV2NIMLoginOption 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)
    }
    
    Harmony
    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/macOS/Windows

    无返回值

    Web/uni-app/小程序
    Harmony

    Promise<void>

    相关回调

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

    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 - 登出失败回调,返回错误码
    macOS/Windows
    cppvirtual void logout(V2NIMSuccessCallback<void> success, V2NIMFailureCallback failure) = 0;	
    
    参数名称 类型 是否必填 默认值 描述
    success V2NIMSuccessCallback - 登出成功回调
    failure V2NIMFailureCallback - 登出失败回调,返回错误码
    Web/uni-app/小程序
    typescriptlogout(): Promise<void>
    

    无参数

    Harmony
    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);
            }
        }];
    }
    
    macOS/Windows
    cpploginService.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);
    }
    
    Harmony
    typescripttry {
      await nim.loginService.logout()
    } catch (err) {
      // TODO failed, check code
      // console.log(err.code)
    }
    

    返回值

    Android/iOS/macOS/Windows

    无返回值

    Web/uni-app/小程序/Harmony

    Promise<void>

    相关回调

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

    getLoginUser

    接口描述

    获取当前登录的账号。

    该方法为同步。

    参数说明

    Android
    javaString getLoginUser();
    

    无参数

    iOS
    objective-c- (nullable NSString *)getLoginUser;
    

    无参数

    macOS/Windows
    cppvirtual nstd::string getLoginUser() = 0;
    

    无参数

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

    无参数

    Harmony
    typescriptgetLoginUser(): string
    

    无参数

    示例代码

    Android
    javaString accountId =  NIMClient.getV2NIMLoginService().getLoginUser();
    
    iOS
    objective-cNSString *accountId = [[[NIMSDK sharedSDK] v2LoginService] getLoginUser];
    
    macOS/Windows
    cppauto loginUser = loginService.getLoginUser();
    
    Web/uni-app/小程序
    typescriptconst accountId = nim.V2NIMLoginService.getLoginUser()
    
    Harmony
    typescriptconst accountId = nim.loginService.getLoginUser()
    

    返回值

    当前登录账号。

    getLoginStatus

    接口描述

    获取当前登录状态。

    该方法为同步。

    参数说明

    Android
    javaV2NIMLoginStatus getLoginStatus();
    

    无参数

    iOS
    objective-c- (V2NIMLoginStatus)getLoginStatus;
    

    无参数

    macOS/Windows
    cppvirtual V2NIMLoginStatus getLoginStatus() = 0;
    

    无参数

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

    无参数

    Harmony
    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];
    
    macOS/Windows
    cppauto loginStatus = loginService.getLoginStatus();
    
    Web/uni-app/小程序
    typescriptconst loginStatus = nim.V2NIMLoginService.getLoginStatus()
    
    Harmony
    typescriptconst loginStatus = nim.loginService.getLoginStatus()
    

    返回值

    当前登录状态,详见 V2NIMLoginStatus

    getLoginClients

    接口描述

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

    参数说明

    Android
    javaList<V2NIMLoginClient> getLoginClients();
    

    无参数

    iOS
    objective-c- (nullable NSArray<V2NIMLoginClient *> *)getLoginClients;
    

    无参数

    macOS/Windows
    cppvirtual nstd::vector<V2NIMLoginClient> getLoginClients() = 0;
    

    无参数

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

    无参数

    Harmony
    typescriptgetLoginClients(): V2NIMLoginClient[]
    

    无参数

    示例代码

    Android
    javaList<V2NIMLoginClient> list =  NIMClient.getV2NIMLoginService().getLoginClients();
    
    iOS
    objective-cNSArray<V2NIMLoginClient *> *clients = [[[NIMSDK sharedSDK] v2LoginService] getLoginClients];
    
    macOS/Windows
    cppauto loginClients = loginService.getLoginClients();
    
    Web/uni-app/小程序
    typescriptconst loginClients = nim.V2NIMLoginService.getLoginClients()
    
    Harmony
    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 - 踢下线失败回调,返回错误码
    macOS/Windows
    cppvirtual 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 - 被踢下线的客户端信息
    Harmony
    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);
        }];
    }
    
    macOS/Windows
    cpploginService.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
      }        
    }
    
    Harmony
    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/macOS/Windows

    无返回值

    Web/uni-app/小程序/Harmony

    Promise<void>

    相关回调

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

    相关回调

    V2NIMLoginListener.onKickedOffline

    getKickedOfflineDetail

    接口描述

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

    该方法为同步。

    参数说明

    Android
    javaV2NIMKickedOfflineDetail getKickedOfflineDetail();
    

    无参数

    iOS
    objective-c- (nullable V2NIMKickedOfflineDetail *)getKickedOfflineDetail;
    

    无参数

    macOS/Windows
    cppvirtual nstd::optional<V2NIMKickedOfflineDetail> getKickedOfflineDetail() = 0;
    

    无参数

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

    无参数

    Harmony
    typescriptgetKickedOfflineDetail(): V2NIMKickedOfflineDetail | null
    

    无参数

    示例代码

    Android
    javaV2NIMKickedOfflineDetail  detail =  NIMClient.getV2NIMLoginService().getKickedOfflineDetail();
    
    iOS
    objective-cV2NIMKickedOfflineDetail *detail = [[[NIMSDK sharedSDK] v2LoginService] getKickedOfflineDetail];
    
    macOS/Windows
    cppauto kickedOfflineDetail = loginService.getKickedOfflineDetail();
    
    Web/uni-app/小程序
    typescriptconst detail = nim.V2NIMLoginService.getKickedOfflineDetail()
    
    Harmony
    typescriptconst detail = nim.loginService.getKickedOfflineDetail()
    

    返回值

    当前被踢下线端的具体信息,详见 V2NIMKickedOfflineDetail

    getConnectStatus

    接口描述

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

    该方法为同步。

    参数说明

    Android
    javaV2NIMConnectStatus getConnectStatus();
    

    无参数

    iOS
    objective-c- (V2NIMConnectStatus)getConnectStatus;
    

    无参数

    macOS/Windows
    cppvirtual V2NIMConnectStatus getConnectStatus() = 0;
    

    无参数

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

    无参数

    Harmony
    typescriptgetConnectStatus(): V2NIMConnectStatus
    

    无参数

    示例代码

    Android
    javaV2NIMConnectStatus status=  NIMClient.getV2NIMLoginService().getConnectStatus();
    
    iOS
    objective-cV2NIMConnectStatus status = [[[NIMSDK sharedSDK] v2LoginService] getConnectStatus];
    
    macOS/Windows
    cppauto connectStatus = loginService.getConnectStatus();
    
    Web/uni-app/小程序
    typescriptconst connectStatus = nim.V2NIMLoginService.getConnectStatus()
    
    Harmony
    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 - 获取失败回调,返回错误码
    macOS/Windows
    cppvirtual 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
                                                    }];
    
    macOS/Windows
    cpploginService.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/macOS/Windows

    无返回值

    Web/uni-app/小程序

    Promise<List<String>>

    getDataSync

    接口描述

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

    该方法为同步。

    参数说明

    Android
    javaList<V2NIMDataSyncDetail> getDataSync();
    

    无参数

    iOS
    objective-c- (nullable NSArray<V2NIMDataSyncDetail *> *)getDataSync;
    

    无参数

    macOS/Windows
    cppvirtual nstd::vector<V2NIMDataSyncDetail> getDataSync() = 0;
    

    无参数

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

    无参数

    Harmony
    typescriptgetDataSync(): V2NIMDataSyncDetail[] | null
    

    无参数

    示例代码

    Android
    javaV2NIMDataSyncDetail syncDetail =  NIMClient.getV2NIMLoginService().getDataSync();
    
    iOS
    objective-cNSArray<V2NIMDataSyncDetail *> *detail = [[[NIMSDK sharedSDK] v2LoginService] getDataSync];
    
    macOS/Windows
    cppauto dataSyncDetails = loginService.getDataSync();
    
    Web/uni-app/小程序
    typescriptconst details = nim.V2NIMLoginService.getDataSync()
    
    Harmony
    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 - 登录重连延时回调
    macOS/Windows
    cppvirtual void setReconnectDelayProvider(V2NIMReconnectDelayProvider provider) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    provider V2NIMReconnectDelayProvider - 登录重连延时回调
    Web/uni-app/小程序
    setReconnectDelayProvider(fn: (delay: number) => number): void
    
    参数名称 类型 是否必填 默认值 描述
    fn function - - 登录重连延时回调函数,当连接中断时,会调用该函数获取重连延迟时间。

    :::

    Harmony
    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
    
    macOS/Windows
    cpploginService.setReconnectDelayProvider([](uint32_t defaultDelay) {
        uint32_t delay = defaultDelay;
        // Calculate delay.
        // ...
        return delay;
    });
    
    Web/uni-app/小程序
    typescriptnim.V2NIMLoginService.setReconnectDelayProvider(function() {
        return 3000
    })
    
    Harmony
    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 - 登录相关监听器
    macOS/Windows
    cppvirtual 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
    
    macOS/Windows
    cppV2NIMLoginListener 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 - 登录相关监听器
    macOS/Windows
    cppvirtual void removeLoginListener(V2NIMLoginListener listener) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    listener V2NIMLoginListener - 登录相关监听器

    示例代码

    Android
    javaNIMClient.getV2NIMLoginService().removeLoginListener(listener);
    
    iOS
    objective-cid<V2NIMLoginListener> listener;
    [[[NIMSDK sharedSDK] v2LoginService] removeLoginListener:listener];
    
    macOS/Windows
    cppV2NIMLoginListener listener;
    loginService.removeLoginListener(listener);
    

    返回值

    addLoginDetailListener

    接口描述

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

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

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

    • 全局只需注册一次。

    • 该方法为同步。

    参数说明

    Android
    javavoid addLoginDetailListener(V2NIMLoginDetailListener listener);
    
    参数名称 类型 是否必填 默认值 描述
    listener V2NIMLoginDetailListener - 登录相关监听器
    iOS
    objective-c- (void)addLoginDetailListener:(id<V2NIMLoginDetailListener>)listener;
    
    参数名称 类型 是否必填 默认值 描述
    listener V2NIMLoginDetailListener - 登录相关监听器
    macOS/Windows
    cppvirtual 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
    
    macOS/Windows
    cppV2NIMLoginDetailListener 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 = [](V2NIMDataSync dataSync, bool begin, 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 - 登录相关监听器
    macOS/Windows
    cppvirtual void removeLoginDetailListener(V2NIMLoginDetailListener listener) = 0;
    
    参数名称 类型 是否必填 默认值 描述
    listener V2NIMLoginDetailListener - 登录相关监听器

    示例代码

    Android
    javaNIMClient.getV2NIMLoginService().removeLoginDetailListener(listener);
    
    iOS
    objective-cid<V2NIMLoginDetailListener> listener;
    [[[NIMSDK sharedSDK] v2LoginService] removeLoginDetailListener:listener];
    
    macOS/Windows
    cppV2NIMLoginDetailListener 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 - 处理事件的方法,当事件触发时,会调用该函数进行处理。
    Harmony
    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) {})
    
    Harmony
    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 - 处理事件的方法,当事件触发时,会调用该函数进行处理。
    Harmony
    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")
    
    Harmony
    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")
    • 接口描述
    • 参数说明
    • 示例代码
    • 返回值