初始化SDK
初始化
在调用任何功能前 必须 先进行初始化,传入数据缓存目录和SDK的配置信息。
- API原型
/** @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);
数据目录
当收到多媒体消息后,SDK 会负责下载这些多媒体文件,同时SDK 还要记录一些log,因此SDK 需要一个数据缓存目录。该目录通过
nim_client_init
初始化接口传入,如果只传入文件目录名,默认为存放到当前用户的home目录,数据缓存目录默认为"~/[传入的目录名]/NIM/[云信账号Md5]";如果传入绝对路径,则存放到指定的目录中(必须保证有读写权限)。具体某个用户对应的缓存目录下面包含如下子目录:image:图片消息文件
audio:语音消息文件
res:其他资源文件
SDK 提供了接口
nim_tool_get_user_specific_appdata_dir
获取某个用户对应的具体类型的App data 目录(如图片消息文件存放目录,语音消息文件存放目录等)(注意:需要调用nim_global_free_buf
接口释放其返回的内存)。参数说明
参数 | 类型 | 必须 | 说明 |
---|---|---|---|
app_data_dir | const char* | 是 | 使用默认路径时只需传入单个目录名(不以反斜杠结尾),使用自定义路径时需传入完整路径(以反斜杠结尾,并确保有正确的读写权限!) |
app_install_dir | const char* | 否 | 未使用,保持NULL即可 |
json_extension | const char* | 否 | 初始化特殊参数 |
初始化配置选项
C接口中,特殊参数是通过管理和设置一组json数据结构然后序列化为字符串(json_extension)后传入给SDK的,键的定义在nim_client_def.h头文件中。
键常量名 | 键常量值 | 值类型 | 说明 |
---|---|---|---|
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
释放资源。
- API原型
/** @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);
本篇文档内容是否对您有帮助?


此文档对你是否有帮助
×


×