用户资料托管
更新时间: 2022/12/06 12:05:19
用户资料托管
SDK 提供了用户帐号资料管理,包含生日,Email,性别,手机号码,签名和扩展字段等信息。以下几个接口仅当选择网易云信托管用户资料时有效,如果开发者不希望网易云信获取自己的用户数据,则需自行维护用户资料。
nim_user_def.h 里定义了用户信息的JSON Key。
用户信息变更会通过调用void nim_user_reg_user_name_card_changed_cb(const char *json_extension, nim_user_name_card_change_cb_func cb, const void *user_data)
注册的回调告知程序:
获取本地用户资料
从本地缓存的数据中批量获取用户资料
- API原型
c/** @fn void nim_user_get_user_name_card(const char *accids, const char *json_extension, nim_user_get_user_name_card_cb_func cb, const void *user_data)
* 获取本地的指定帐号的用户名片
* @param[in] accids 例 ["litianyi01", "litianyi02", ...]
* @param[in] json_extension json扩展参数(备用,目前不需要)
* @param[in] cb 操作结果回调
* @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
* @return void 无返回值
* @note 错误码 200:成功
* 414:参数错误
*/
NIM_SDK_DLL_API void nim_user_get_user_name_card(const char *accids, const char *json_extension, nim_user_get_user_name_card_cb_func cb, const void *user_data);
- 示例
cvoid CallbackGetUserNameCard(const char *result_json, const char *json_extension, const void *callback)
{
// 解析result_json
}
typedef void (*nim_user_get_user_name_card)(const char *accids, const char *json_extension, nim_user_get_user_name_card_cb_func cb, const void *user_data);
void foo(const std::list<std::string>& accids)
{
nim_user_get_user_name_card func = (nim_user_get_user_name_card) dlsym(hInst, "nim_user_get_user_name_card");
Json::Value values;
for (auto iter = accids.cbegin(); iter != accids.cend(); ++iter)
values.append(*iter);
Json::FastWriter fw;
func(fw.write(values).c_str(), "", &CallbackGetUserNameCard, nullptr);
}
获取服务器用户资料
从服务器获取用户资料,一般在本地用户资料不存在时调用,获取后 SDK 会负责更新本地数据库。每次最多获取150个用户,如果量大,上层请自行分批获取。
- API原型
c/** @fn void nim_user_get_user_name_card_online(const char *accids, const char *json_extension, nim_user_get_user_name_card_cb_func cb, const void *user_data)
* 在线查询指定帐号的用户名片
* @param[in] accids 例 ["litianyi01", "litianyi02", ...]
* @param[in] json_extension json扩展参数(备用,目前不需要)
* @param[in] cb 操作结果回调
* @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
* @return void 无返回值
* @note 错误码 200:成功
* 414:参数错误
* 419:超限
* 20000:还未初始化或初始化未正常完成
* 20001:还未登陆或登录未完成
*/
NIM_SDK_DLL_API void nim_user_get_user_name_card_online(const char *accids, const char *json_extension, nim_user_get_user_name_card_cb_func cb, const void *user_data);
- 示例
cvoid CallbackGetUserNameCard(const char *result_json, const char *json_extension, const void *callback)
{
// 解析result_json
}
typedef void (*nim_user_get_user_name_card_online)(const char *accids, const char *json_extension, nim_user_get_user_name_card_cb_func cb, const void *user_data);
void foo(const std::list<std::string>& accids)
{
nim_user_get_user_name_card_online func = (nim_user_get_user_name_card_online) dlsym(hInst, "nim_user_get_user_name_card_online");
Json::Value values;
for (auto iter = accids.cbegin(); iter != accids.cend(); ++iter)
values.append(*iter);
Json::FastWriter fw;
func(fw.write(values).c_str(), "", &CallbackGetUserNameCard, nullptr);
}
更新自己的信息
- API原型
c/** @fn void nim_user_update_my_user_name_card(const char *info_json, const char *json_extension, nim_user_update_my_name_card_cb_func cb, const void *user_data)
* 更新自己的用户名片
* @param[in] info_json 用户信息json
* @param[in] json_extension json扩展参数(备用,目前不需要)
* @param[in] cb 操作结果回调
* @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
* @return void 无返回值
* @note 错误码 200:成功
* 400:非法参数
*/
NIM_SDK_DLL_API void nim_user_update_my_user_name_card(const char *info_json, const char *json_extension, nim_user_update_my_name_card_cb_func cb, const void *user_data);
- 示例
cvoid CallbackUpdateNameCard(int res_code, const char *json_extension, const void *callback)
{
//处理操作结果
}
typedef void (*nim_user_update_my_user_name_card)(const char *info_json, const char *json_extension, nim_user_update_my_name_card_cb_func cb, const void *user_data);
void foo()
{
//修改昵称
Json::Value values;
values[kUInfoKeyAccid] = "litianyi02";
values[kUInfoKeyName] = "修改后的大意的昵称";
nim_user_update_my_user_name_card func = (nim_user_update_my_user_name_card) dlsym(hInst, "nim_user_update_my_user_name_card");
func(values.toStyledString().c_str(), nullptr, &CallbackUpdateNameCard, nullptr);
}
用户信息变化通知
调用接口nim_user_reg_user_name_card_changed_cb
注册回调,在用户资料发生变化时通过回调函数获取结果。
- API原型
c/** @fn void nim_user_reg_user_name_card_changed_cb(const char *json_extension, nim_user_name_card_change_cb_func cb, const void *user_data)
* (全局回调)统一注册用户名片变更通知回调函数
* @param[in] json_extension json扩展参数(备用,目前不需要)
* @param[in] cb 操作结果回调
* @param[in] user_data APP的自定义用户数据,SDK只负责传回给回调函数cb,不做任何处理!
* @return void 无返回值
*/
NIM_SDK_DLL_API void nim_user_reg_user_name_card_changed_cb(const char *json_extension, nim_user_name_card_change_cb_func cb, const void *user_data);
- 示例
cvoid CallbackUserNameCardChange(const char *result_json, const char *json_extension, const void *callback)
{
// 解析result_json获取用户信息
}
typedef void (*nim_user_reg_user_name_card_changed_cb)(const char *json_extension, nim_user_name_card_change_cb_func cb, const void *user_data);
void foo()
{
nim_user_reg_user_name_card_changed_cb func = (nim_user_reg_user_name_card_changed_cb) dlsym(hInst, "nim_user_reg_user_name_card_changed_cb");
func("", &CallbackUserNameCardChange, nullptr);
}
此文档是否对你有帮助?