初始化SDK

在使用网易云通信SDK之前必须调用nim::Client::Init进行初始化。

API原型

/** @fn bool Init(const std::string& app_data_dir, const std::string& app_install_dir, const SDKConfig &config)
* NIM SDK初始化
* @param[in] app_key 应用注册的APP KEY
* @param[in] app_data_dir 使用默认路径时只需传入单个目录名(不以反斜杠结尾),使用自定义路径时需传入完整路径(以反斜杠结尾,并确保有正确的读写权限!)
* @param[in] app_install_dir 未使用
* @param[in] config 初始化参数
* @return bool 返回值true: 成功, false: 失败
*/
static bool Init(const std::string& app_key
    , const std::string& app_data_dir
    , const std::string& app_install_dir
    , const SDKConfig &config);

参数说明

参数 类型 必须 说明
app_key std::string 应用注册的云信APP KEY
app_data_dir std::string 使用默认路径时只需传入单个目录名(不以反斜杠结尾),
使用自定义路径时需传入完整路径(以反斜杠结尾,
并确保有正确的读写权限!)
app_install_dir std::string 传入空串即可
config struct 初始化特殊参数(下文会作说明)

初始化配置参数

SDKConfig参数 类型 说明
database_encrypt_key_ std::string 数据库秘钥,建议必填,目前只支持最多32个字符的加密密钥!
建议使用32个字符
custom_timeout_ int 通讯自定义超时时间
login_max_retry_times_ int 登录重试最大次数,如需设置建议设置大于3次,SDK默认设置为0
preload_attach_ bool 是否需要预下载附件(图片和语音),选填,默认为true,
如果有对带宽流量有较高要求的请关闭该选项,改为上层开发者按需下载附件文件
preload_image_quality_ int 预下载图片质量,选填,范围0-100
preload_image_resize_ std::string 预下载图片基于长宽做内缩略,选填,比如宽100高50,则赋值为100x50,中间为字母小写x
sdk_log_level_ enum SDK log级别,选填,SDK默认的内置级别为kNIMSDKLogLevelPro
sync_session_ack_ bool 设置是否已读未读状态多端同步,默认true
nos_download_addrtemplate std::string 使用网易NOS服务时下载地址URL模板,使用{bucket}、{object} 做为占位符
use_private_server_ bool 是否使用私有服务器,如果使用私有服务器,则必须设置为true

示例

nim::SDKConfig config;
//组装SDK能力参数(必填)
config.database_encrypt_key_ = "Netease";     //string(db key必填,目前只支持最多32个字符的加密密钥!建议使用32个字符)
config.sdk_log_level_ = ;                     //bool 选填,是否需要预下载附件(图片和语音),SDK默认预下载,如果有对带宽流量有较高要求的请关闭该选项,改为上层开发者按需下载附件文件
config.preload_image_quality_ = ;             //int 预下载图片质量,选填,范围0-100
config.preload_image_resize_ = ;             //string 预下载图片基于长宽做内缩略,选填,比如宽100高50,则赋值为100x50,中间为字母小写x
config.sync_session_ack_ = true;             //bool 选填,消息已读未读是否多端同步,默认true
config.login_max_retry_times_ = ;             //int 登录重试最大次数,如需设置建议设置大于3次,默认填0,SDK默认设置次数

//组装SDK独立部署的服务器配置(选填)
config.use_private_server_ = true;
config.rsa_public_key_module_ = "http://xxx";
config.default_nos_download_address_.push_back("http://xxx.xxx.xxx.xxx:xxxx");
config.lbs_address_ = "http://xxx";
config.nos_lbs_address_ = "http://xxx";
config.default_link_address_.push_back("http://xxx.xxx.xxx.xxx:xxxx");
config.default_nos_upload_address_.push_back("http://xxx.xxx.xxx.xxx:xxxx");
config.default_nos_access_address_.push_back("http://xxx.xxx.xxx.xxx:xxxx");

bool ret = nim::Client::Init("45c6af3c98409b18a84451215d0bdd6e", "Netease", "", config); // 载入网易云通信sdk,初始化安装目录和用户目录,第一个参数是appkey(此处填写的是测试示例)

服务器配置

在调用nim::Client::Init时通过配置SDKConfig可以实现登录到指定的服务器。

lbsaddress:获取登录服务器地址的URL

default_linkaddress:默认服务器地址

default_nos_uploadaddress:如果需要使用网易NOS提供的服务,则必须配置上传URL

rsa_public_keymodule:RSA秘钥,在私有部署的服务器上必须配置该字段

rsaversion:RSA秘钥版本号,在私有部署的服务器上必须配置该字段

nos_download_addrtemplate:使用网易NOS服务时下载地址URL模板,使用{bucket}、{object} 做为占位符,分别代表NOS的bucket、object

SDK清理

在程序退出前,调用接口nim::Client::Cleanup() 进行NIM SDK 的清理工作。

/** @fn void Cleanup(const std::string& json_extension = "")
* NIM SDK清理
* @param[in] json_extension json扩展参数(备用,目前不需要)
* @return void 无返回值
*/
static void Cleanup(const std::string& json_extension = "");