初始化SDK

初始化

在调用任何功能前 必须 先进行初始化,传入数据缓存目录和SDK的配置信息。

/** @fn bool nim_client_init(const char *app_data_dir, const char *app_install_dir, const char *json_extension)
* NIM SDK初始化,传入的JSON参数定义见nim_client_def.h
* @param[in] app_data_dir 使用默认路径时只需传入单个目录名(不以反斜杠结尾),使用自定义路径时需传入完整路径(以反斜杠结尾,并确保有正确的读写权限!)
* @param[in] app_install_dir 目前不需要传入(SDK可以自动获取)
* @param[in] json_extension json扩展参数。目前可以用于支持一些全局配置(必填,如APP_KEY、数据库的加密密钥等)和私有服务器的设置(选填)
* @return bool 返回值true: 成功, false: 失败
*/
NIM_SDK_DLL_API    bool nim_client_init(const char *app_data_dir, const char *app_install_dir, const char *json_extension);
参数 类型 必须 说明
app_data_dir const char* 使用默认路径时只需传入单个目录名(不以反斜杠结尾),使用自定义路径时需传入完整路径(以反斜杠结尾,并确保有正确的读写权限!)
app_install_dir const char* 未使用,保持NULL即可
json_extension const char* 初始化特殊参数
键常量名 键常量值 值类型 说明
kNIMAppKey app_key const char* 应用注册的云信APP KEY
kNIMGlobalConfig global_config json object 常用配置,以下常用配置皆为该对象的子对象
kNIMDataBaseEncryptKey db_encrypt_key const char* 常用配置之一,数据库秘钥,建议必填,目前只支持最多32个字符的加密密钥!建议使用32个字符
kNIMLoginRetryMaxTimes login_max_retry_times int 常用配置之一,登录重试最大次数,如需设置建议设置大于3次,SDK默认值为0
kNIMPreloadAttach preload_attach bool 常用配置之一,是否需要预下载附件(图片和语音),选填,默认为true,如果有对带宽流量有较高要求的请关闭该选项,改为上层开发者按需下载附件文件
kNIMPreloadImageQuality preload_image_quality int 常用配置之一,预下载图片质量,选填,范围0-100
kNIMPreloadImageResize preload_image_resize const char* 常用配置之一,预下载图片基于长宽做内缩略,选填,比如宽100高50,则赋值为100x50,中间为字母小写x
kNIMSDKLogLevel sdk_log_level enum 常用配置之一,SDK log级别选填,SDK默认的内置级别为kNIMSDKLogLevelPro
kNIMSyncSessionAck sync_session_ack bool 常用配置之一,设置是否已读未读状态多端同步,默认true
kNIMUseHttps use_https bool 常用配置之一,是否启用HTTPS协议,默认为false
kNIMPrivateServerSetting private_server_setting json object 私有服务器配置,以下常用私有服务器配置皆为该对象的子对象
kNIMDefaultLinkAddress default_link json string array 私有服务器配置之一,默认link服务器地址,如果选择使用私有服务器,则必填
kNIMDefaultNosAccessAddress default_nos_access json string array 私有服务器配置之一,默认nos access服务器地址,如果选择使用私有服务器,则必填
kNIMDefaultNosDownloadAddress default_nos_download json string array 私有服务器配置之一,默认nos 下载服务器地址,如果选择使用私有服务器,则必填
kNIMDefaultNosUploadAddress default_nos_upload json string array 私有服务器配置之一,默认nos 上传服务器地址,如果选择使用私有服务器,则必填
kNIMLbsAddress lbs const char* 私有服务器配置之一,lbs地址,如果选择使用私有服务器,则必填
kNIMNosLbsAddress nos_lbs const char* 私有服务器配置之一,nos lbs地址,如果选择使用私有服务器,则必填
kNIMRsaPublicKeyModule rsa_public_key_module const char* 私有服务器配置之一,RSA public key,如果选择使用私有服务器,则必填
kNIMRsaVersion rsa_version int 私有服务器配置之一,RSA version,如果选择使用私有服务器,则必填
kNIMDownloadAddressTemplate download_address_template json string array nos 下载地址拼接模板,用于拼接最终得到的下载地址
kNIMAccelerateHost accelerate_host json string array 需要被加速主机名
kNIMAccelerateAddressTemplate accelerate_address_template json string array nos 加速地址拼接模板,用于获得加速后的下载地址
kNIMNtserverAddress ntserver_address json string array 部分 IM 错误信息统计上报地址
kNIMUploadStatisticsData is_upload_statistics_data bool 错误信息统计是否上报,私有化如不上报此项应配置为false
void foo()
{
    //SDK 配置,不需要自定义设置为NULL即可
    const char* config = "{\
                \"global_config\": {\
                \"db_encrypt_key\": \"\",\
                \"preload_attach\": true,\
                \"sdk_log_level\": 6,\
                }}";

    //初始化SDK
    nim_client_init("appdata path", "app installation path", config);
}

清理

在程序退出前,调用接口nim_client_cleanup 进行NIM SDK 的清理工作,nim_client_cleanup需要与nim_client_init配对执行,通常在程序启动时调用nim_client_init进行初始化,在程序退出时调用nim_client_cleanup释放资源。

/** @fn void nim_client_cleanup(const char *json_extension)
* NIM SDK清理
* @param[in] json_extension json扩展参数(备用,目前不需要)
* @return void 无返回值
*/
NIM_SDK_DLL_API    void nim_client_cleanup(const char *json_extension);