NIM 跨平台 C++ SDK
载入中...
搜索中...
未找到
nim::Client类 参考

全局管理功能;主要包括SDK初始化/清理、客户端登录/退出等功能 更多...

#include <nim_cpp_client.h>

Public 类型

typedef std::function< void(const std::function< void()> &)> SDKClosure
 默认回调。用户可通过该回调将接口回调抛到其他线程中执行。如果注册了该回调,会在所有接口回调中调用该回调,把对应的接口回调传入。
 
typedef std::function< void(const LoginRes &) LoginCallback)
 登录回调
 
typedef std::function< void(std::string *) ReloginRequestTokenCallback)
 登录时请求新的鉴权回调
 
typedef std::function< void(std::string *) RequestExtensionCallback)
 登录时请求第三方鉴权扩展信息回调
 
typedef std::function< void(NIMResCode)> LogoutCallback
 登出回调
 
typedef std::function< void(const KickoutRes &) KickoutCallback)
 被踢通知回调
 
typedef std::function< void(void)> DisconnectCallback
 断网通知回调
 
typedef std::function< void(const MultiSpotLoginRes &) MultiSpotLoginCallback)
 多端登录通知回调
 
typedef std::function< void(const KickOtherRes &) KickOtherCallback)
 将多端下线回调
 
typedef std::function< void(int, bool)> MultiportPushConfigCallback
 多端推送控制开关回调
 
typedef std::function< void(int, bool, uint64_t)> GetCurrentServerTimeCallback
 查询服务器当前时间回调
 

静态 Public 成员函数

static bool Init (const std::string &app_key, const std::string &app_data_dir, const std::string &app_install_dir, const SDKConfig &config)
 
static void SetCallbackFunction (const SDKClosure &callback)
 
static const SDKConfigGetSDKConfig ()
 
static void Cleanup (const std::string &json_extension="")
 
static void Cleanup2 (const std::string &json_extension="")
 
static void LoginCustomDataToJson (const LoginParams &params, std::string &loginParams)
 
static void LoginCustomDataToJson (const std::string &custom_data, std::string &strValue)
 
static bool Login (const std::string &app_key, const std::string &account, const std::string &password, const LoginCallback &cb, const std::string &json_extension="")
 
static NIMLoginState GetLoginState (const std::string &json_extension="")
 
static void Relogin (const std::string &json_extension="")
 
static void Logout (NIMLogoutType logout_type, const LogoutCallback &cb, const std::string &json_extension="")
 
static bool KickOtherClient (const std::list< std::string > &client_ids)
 
static void RegReloginCb (const LoginCallback &cb, const std::string &json_extension="")
 
static void RegReloginRequestToeknCb (const ReloginRequestTokenCallback &cb, const std::string &json_extension="")
 
static void RegRequestLoginExtensionCb (const RequestExtensionCallback &cb, const std::string &json_extension="")
 
static void RegKickoutCb (const KickoutCallback &cb, const std::string &json_extension="")
 
static void RegDisconnectCb (const DisconnectCallback &cb, const std::string &json_extension="")
 
static void RegMultispotLoginCb (const MultiSpotLoginCallback &cb, const std::string &json_extension="")
 
static void RegKickOtherClientCb (const KickOtherCallback &cb, const std::string &json_extension="")
 
static void RegSyncMultiportPushConfigCb (const MultiportPushConfigCallback &cb, const std::string &json_extension="")
 
static void SetMultiportPushConfigAsync (bool switch_on, const MultiportPushConfigCallback &cb, const std::string &json_extension="")
 
static void GetMultiportPushConfigAsync (const MultiportPushConfigCallback &cb, const std::string &json_extension="")
 
static std::string GetSDKVersion ()
 
static std::string GetCurrentUserAccount ()
 
static void GetServerCurrentTime (const Client::GetCurrentServerTimeCallback &cb, bool calc_local=false)
 
static void UnregClientCb ()
 

详细描述

全局管理功能;主要包括SDK初始化/清理、客户端登录/退出等功能

成员类型定义说明

◆ DisconnectCallback

typedef std::function<void(void)> nim::Client::DisconnectCallback

断网通知回调

◆ GetCurrentServerTimeCallback

typedef std::function<void(int, bool, uint64_t)> nim::Client::GetCurrentServerTimeCallback

查询服务器当前时间回调

◆ KickOtherCallback

typedef std::function<void(const KickOtherRes&) nim::Client::KickOtherCallback)

将多端下线回调

◆ KickoutCallback

typedef std::function<void(const KickoutRes&) nim::Client::KickoutCallback)

被踢通知回调

◆ LoginCallback

typedef std::function<void(const LoginRes&) nim::Client::LoginCallback)

登录回调

◆ LogoutCallback

typedef std::function<void(NIMResCode)> nim::Client::LogoutCallback

登出回调

◆ MultiportPushConfigCallback

typedef std::function<void(int, bool)> nim::Client::MultiportPushConfigCallback

多端推送控制开关回调

◆ MultiSpotLoginCallback

typedef std::function<void(const MultiSpotLoginRes&) nim::Client::MultiSpotLoginCallback)

多端登录通知回调

◆ ReloginRequestTokenCallback

typedef std::function<void(std::string*) nim::Client::ReloginRequestTokenCallback)

登录时请求新的鉴权回调

◆ RequestExtensionCallback

typedef std::function<void(std::string*) nim::Client::RequestExtensionCallback)

登录时请求第三方鉴权扩展信息回调

◆ SDKClosure

typedef std::function<void(const std::function<void()>&)> nim::Client::SDKClosure

默认回调。用户可通过该回调将接口回调抛到其他线程中执行。如果注册了该回调,会在所有接口回调中调用该回调,把对应的接口回调传入。

成员函数说明

◆ Cleanup()

void nim::Client::Cleanup ( const std::string & json_extension = "")
static

NIM SDK清理

参数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值

◆ Cleanup2()

void nim::Client::Cleanup2 ( const std::string & json_extension = "")
static

NIM SDK清理如果未注销,SDK会在清理前进行注销操作

参数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值

◆ GetCurrentUserAccount()

void nim::Client::GetCurrentUserAccount ( )
static

获取当前登录用户的 IM 账号(accid)

返回
std::string 当前登录用户的 IM 账号(accid)
注解
没有登录时将返回空字符串

◆ GetLoginState()

NIMLoginState nim::Client::GetLoginState ( const std::string & json_extension = "")
static

获取客户端登录状态

参数
[in]json_extensionJSON 扩展参数(备用,目前不需要)
返回
NIMLoginState 登录状态

◆ GetMultiportPushConfigAsync()

void nim::Client::GetMultiportPushConfigAsync ( const MultiportPushConfigCallback & cb,
const std::string & json_extension = "" )
static

获得多端推送设置

调用时机
登录 IM 后
参数
[in]cb回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void

◆ GetSDKConfig()

const SDKConfig & nim::Client::GetSDKConfig ( )
static

获取的 NIM SDK 的初始化配置信息

返回
SDKConfig 返回值SDKConfig的引用 const类型,不可试图修改

◆ GetSDKVersion()

std::string nim::Client::GetSDKVersion ( )
static

获取SDK版本号

调用时机
初始化完成后
返回
std::string 版本号

◆ GetServerCurrentTime()

void nim::Client::GetServerCurrentTime ( const Client::GetCurrentServerTimeCallback & cb,
bool calc_local = false )
static

获取当前服务器时间

调用时机
初始化完成后
参数
[in]cb操作结果的回调函数
[in]calc_local是否在本地计算,false:直接到服务端查询,true:根据上次查询到的服务端时间与本地系统启动时间来计算,不会到服务端查询
返回
void
注解
由于网络上/下行的原因,返回的时间会存在一定误差。
  • calc_local == false 时,如果跟上次调用该方法的时间间隔小于 1000ms,SDK 会采用 calc_local == true 时的方案以减少服务端的压力,并会在回调中指明返回的时间由本地计算。
  • 如果返回 code != 200,同样会返回一个本地计算结果。

◆ Init()

bool nim::Client::Init ( const std::string & app_key,
const std::string & app_data_dir,
const std::string & app_install_dir,
const SDKConfig & config )
static

NIM SDK初始化

调用时机
在调用其他方法前,必须先调用此 API 初始化 NIM SDK 实例。
影响范围
如果不调用此 API,将导致无法调用其他 SDK API。
参数
[in]app_key必填,在云信控制台注册的 App Key
[in]app_data_dir选填,推荐用户目录放置在系统目录{AppData\Local},默认只需要传入目录名,SDK会默认在系统目录下创建该级用户目录。如果要使用其他自定义路径,需传入绝对路径路径,并确保该目录有正确的读写权限。
[in]app_install_dir该参数已废弃
[in]config选填,初始化的其他可选参数,具体的成员参数及说明参见 SDKConfig
返回
bool 返回值 true: 成功, false: 失败

◆ KickOtherClient()

bool nim::Client::KickOtherClient ( const std::list< std::string > & client_ids)
static

将使用相同 IM 账号(accid)登录的其他设备端踢下线

参数
[in]client_ids设备标识数组
返回
bool 参数如果不符合要求则返回失败,
相关回调
本接口调用成功后的结果通过注册 RegKickOtherClientCb 回调获取

◆ Login()

bool nim::Client::Login ( const std::string & app_key,
const std::string & account,
const std::string & password,
const LoginCallback & cb,
const std::string & json_extension = "" )
static

登录 IM。

参数
[in]app_key选填,您的应用在云信的账号(App Key),可在云信控制台创建应用,获取 App Key
如果不填,则使用初始化时填入 App Key;如果调用本接口时填入,则使用新填入的 App Key
[in]account必填,用户的 IM 账号(accid)
可在云信控制台注册 IM 账号(仅适用于调试环境),也可调用服务端 API 注册(适用于正式生产环境)
[in]password必填,IM 账号对应的密码(token)
token 在注册 IM 账号时获取
[in]cb登录流程的回调函数
[in]json_extensionJSON 扩展参数(v5.7.0 起支持)
返回
bool 参数如果不符合要求则返回失败
状态码
  • 200:登录 IM 成功
  • 302:IM 账号(accid)或密码(token)错误
  • 403:无权限,禁止操作
  • 408: 请求超时
  • 414: 参数错误
  • 415:网络连接错误
  • 416:调用频率超限
  • 422:IM 账号被服务端封禁

◆ LoginCustomDataToJson() [1/2]

void nim::Client::LoginCustomDataToJson ( const LoginParams & params,
std::string & loginParams )
static

将登录参数 LoginParams 转换为 JSON 格式字符串

参数
[in]params登录参数,成员参数详情请参见 LoginParams
[out]loginParamsJSON 格式字符串
返回
void 无返回值

◆ LoginCustomDataToJson() [2/2]

void nim::Client::LoginCustomDataToJson ( const std::string & custom_data,
std::string & strValue )
static

将login 字定义数据 转换到 LoginParams json格式字符串

参数
[in]custom_data登录时的自定义数据
[out]strValueJSON 格式字符串
返回
void 无返回值

◆ Logout()

void nim::Client::Logout ( NIMLogoutType logout_type,
const LogoutCallback & cb,
const std::string & json_extension = "" )
static

登出 IM ,注销登录

参数
[in]logout_typeLogout操作类型,其定义参见NIMLogoutType
[in]cb登出 IM 的回调函数
[in]json_extensionJSON 扩展参数(备用,目前不需要)
返回
void 无返回值
注解
登出过程因为涉及到和云信服务端的交互以及需要将缓存中的数据持久化到本地,因此回调通知会有 1s 到 20s 左右的延迟。
状态码
  • 200:登出成功
  • 500:未知错误

◆ RegDisconnectCb()

void nim::Client::RegDisconnectCb ( const DisconnectCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)注册 IM 客户端掉线回调

调用时机
登录前注册该回调
参数
[in]cb掉线的回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值

◆ RegKickOtherClientCb()

void nim::Client::RegKickOtherClientCb ( const KickOtherCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)注册 IM 客户端将本帐号的其他端踢下线结果回调

调用时机
登录前注册该回调
参数
[in]cb踢下线结果回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值
注解
错误码 200:成功

◆ RegKickoutCb()

void nim::Client::RegKickoutCb ( const KickoutCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)注册NIM客户端被踢回调

参数
[in]cb被踢的回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值

◆ RegMultispotLoginCb()

void nim::Client::RegMultispotLoginCb ( const MultiSpotLoginCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)注册 IM 客户端多端登录通知回调

调用时机
登录前注册该回调
参数
[in]cb多点登录通知的回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值

◆ RegReloginCb()

void nim::Client::RegReloginCb ( const LoginCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)注册 IM 客户端自动重连的回调

调用时机
登录前注册该回调
注解
重连失败时,如果返回的连接状态 NIMResCode 并非网络错误(包括 kNIMResTimeoutError 和 kNIMResConnectionError), 那么说明重连机制已失效。此时需要应用层调用 Logout 注销登录并退回到登录界面重新登录。
参数
[in]cb自动重连的回调函数
[in]json_extensionJSON 扩展参数(备用,目前不需要)
返回
void 无返回值
状态码
  • 200:成功
  • 403:无权限,禁止操作
  • 408:请求超时
  • 414:参数错误
  • 415:网络连接出现错误
  • 416:调用频率超限
  • 422:账号被封禁

◆ RegReloginRequestToeknCb()

void nim::Client::RegReloginRequestToeknCb ( const ReloginRequestTokenCallback & cb,
const std::string & json_extension = "" )
static

注册该回调用于在重登陆时获取新的登录鉴权 token

调用时机
登录前注册该回调
参数
[in]cb上层用于生产 token 的回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值
注解
错误码 无

◆ RegRequestLoginExtensionCb()

void nim::Client::RegRequestLoginExtensionCb ( const RequestExtensionCallback & cb,
const std::string & json_extension = "" )
static

注册该回调用于在登录时获取第三方鉴权登录扩展字段

调用时机
登录前注册该回调
参数
[in]cb上层用于生产登录扩展字段的回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值
注解
错误码 无

◆ RegSyncMultiportPushConfigCb()

void nim::Client::RegSyncMultiportPushConfigCb ( const MultiportPushConfigCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)注册多端推送开关同步回调

调用时机
登录前注册该回调
参数
[in]cb回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void 无返回值

◆ Relogin()

void nim::Client::Relogin ( const std::string & json_extension = "")
static

手动重新登录 IM,即手动重新建立 SDK 与云信服务端的长连接

注解
APP需要统一处理自动重连/手动重连的回调,因为如果处于某次自动重连的过程中调用本接口,不起作用!)
参数
[in]json_extensionJSON 扩展参数(备用,目前不需要)
返回
void 无返回值

◆ SetCallbackFunction()

void nim::Client::SetCallbackFunction ( const SDKClosure & callback)
static

当以动态库使用SDK时 设置 SDK 回调方法,为了不阻塞 SDK 线程,在回调中应该把任务抛到应用层的线程中

参数
[in]callback回调方法
返回
void 无返回值

◆ SetMultiportPushConfigAsync()

void nim::Client::SetMultiportPushConfigAsync ( bool switch_on,
const MultiportPushConfigCallback & cb,
const std::string & json_extension = "" )
static

(全局回调)设置多端推送

调用时机
登录前注册该回调
参数
[in]switch_on开关
[in]cb回调函数
[in]json_extensionjson扩展参数(备用,目前不需要)
返回
void
注解
错误码 200:成功

◆ UnregClientCb()

void nim::Client::UnregClientCb ( )
static

反注册 Client类中提供的所有回调

返回
void 无返回值

该类的文档由以下文件生成: