用户管理
功能简介
本文档适用于开发以下平台的应用:iOS、Android、macOS、Windows、Web。
ZIM SDK 提供了用户管理功能,支持用户上传自己的个人信息,更新自己的用户名称、头像,以及查询自己的个人信息等。
实现流程
用户扩展字段管理
ZIM SDK 提供了用户信息的扩展字段,用于描述用户的其他相关属性。开发者可以使用扩展字段,通过 updateUserExtendedData 接口,自定义用户的扩展字段。扩展字段可由开发者自行定义其使用方式,SDK 只会将该字段透传,不会做其它处理。
修改扩展字段属性后,用户可以通过 ZIMUserExtendedDataUpdatedResult 收到修改结果。
// 修改用户信息的扩展字段
String newUserExtendedData = "{\"user_avatar\":\"https://url\",\"user_name\":\"new_name\",\"user_sex\":\"male\",\"user_birth\":\"1970-01-01\",\"user_phone\":\"12345678901\"}";
try {
ZIMUserExtendedDataUpdatedResult result =
await ZIM.getInstance()!.updateUserExtendedData(newUserExtendedData);
} on PlatformException catch (onError) {
// 根据 onError 的返回值处理写操作失败的逻辑
}
修改用户名称
用户名称 userName
,是指用来描述用户昵称的字符串,开发者可以通过 ZIMUserInfo 对象进行配置。ZIM SDK 支持用户在登录后,通过 updateUserName 接口修改自己的用户名称。
修改用户名称后,用户可以通过 ZIMUserNameUpdatedResult 收到修改结果。
// 修改用户名
// userName 是一个最多256字节的字符串,没有特殊字符限制。
try {
ZIMUserNameUpdatedResult result =
await ZIM.getInstance()!.updateUserName('userName');
// 成功修改的逻辑写在这里
} on PlatformException catch (onError) {
// 根据 onError 编写和修改失败的逻辑
}
设置用户头像
ZIM SDK 支持用户在登录后,通过 updateUserAvatarUrl 接口设置或修改自己的用户头像。
设置用户头像后,用户可以通过 ZIMUserAvatarUrlUpdatedResult 收到设置结果。
当一名用户修改头像后,其他用户需调用 queryUsersInfo 接口,并将 ZIMUsersInfoQueryConfig 中 isQueryFromServer 参数赋值为 true
重新 查询用户信息,才会获取最新头像。
// 修改用户名
// userAvatarUrl 是一个最多500字节的字符串,没有特殊字符限制。
try {
ZIMUserAvatarUrlUpdatedResult result =
await ZIM.getInstance()!.updateUserAvatarUrl('userAvatarUrl');
// 在这里编写成功修改的逻辑
} on PlatformException catch (onError) {
// 根据 onError 编写并修改失败的逻辑
}
查询用户信息
用户可以通过 queryUsersInfo 接口,查询指定用户的全量信息,包括用户名称、用户扩展字段。用户头像 URL、用户扩展字段信息,仅在该接口中可以获取到。
查询信息后,用户可以通过 ZIMUsersInfoQueriedResult 收到查询结果。
// 查询用户信息
// 使用限制:单个 API 调用中的 UserID 查询数量不能超过 10;在 10 秒内,多个 API 调用中的 UserID 查询累计总数不能超过 10。
try {
ZIMUserInfoQueryConfig config = ZIMUserInfoQueryConfig();
config.isQueryFromServer = false; // 如果从服务器查询,请设置为 true;如果从本地数据查询,请设置为 false
ZIMUsersInfoQueriedResult result =
await ZIM.getInstance()!.queryUsersInfo(['userID_1', 'userID_2'], config);
// 在此处编写成功查询的逻辑
} on PlatformException catch (onError) {
// 根据 onError 编写查询失败的逻辑
}