群资料管理
功能简介
本文档适用于开发以下平台的应用:iOS、Android、macOS、Windows、Web。
本文档适用于开发以下平台应用:iOS、Android、macOS、Windows。
ZIM SDK 提供了群资料管理功能,支持用户查询/修改群资料,比如群名、群昵称、群头像、群公告等基本群信息,也支持用户对某个群组设置仅自己可见的群备注。
实现流程
- 用户使用“群资料管理”功能之前,请先加入某个群组,否则无法使用相关功能,详情请参考 加入群组。
- 群内成员(包含群主)都可以使用“群资料管理”功能。
查询群资料
用户登录、并加入某个群组后,如果想要了解自己加入群组的相关资料,可以通过调用 queryGroupInfo 接口,查询群资料。
查询成功后,用户可以通过 ZIMGroupInfoQueriedResult 收到查询结果。
// 群内成员 查询群资料,例如,群名、群昵称、群公告等
zim.queryGroupInfo(group_id, new ZIMGroupInfoQueriedCallback() {
@Override
public void onGroupInfoQueried(ZIMGroupInfo groupInfo, ZIMError errorInfo) {
// 通过 errorInfo 获取查询群资料的结果
}
});
1
// 群内成员 查询群资料,例如,群名、群昵称、群公告等
[zim queryGroupInfoByGroupID:groupID callback:^(ZIMGroupInfo * _Nonnull groupInfo, ZIMError * _Nonnull errorInfo) {
//这里写调用查询群资料,例如,群名、群昵称、群公告接口后的业务代码
}];
1
// 群内成员 查询群资料,例如,群名、群昵称、群公告等
zim_->queryGroupInfo(group_id,
[=](const ZIMGroupInfo &groupInfo, zim::ZIMError errorInfo) {
int code = errorInfo.code;
});
1
// 群内成员 查询群资料,例如,群名、群昵称、群公告等
ZIM.getInstance()
!.queryGroupInfo('groupID')
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
// 群内成员 查询群资料,例如,群名、群昵称、群公告、群头像 URL 等
var groupID = '';
zim.queryGroupInfo(groupID)
.then(function ({ groupInfo }) {
// 查询成功
})
.catch(function (err) {
// 查询失败
});
1
// 群内成员 查询群资料,例如,群名、群昵称、群公告等
ZIM.GetInstance().QueryGroupInfo("groupID", (ZIMGroupFullInfo groupInfo, ZIMError errorInfo) =>
{
// 通过 errorInfo 获取查询群资料的结果
}
);
1
修改群名
用户登录、并加入某个群组后,如果想要修改自己加入群组的群名,可以通过调用 updateGroupName 接口,修改群组名称。
修改成功后,全体群成员都可以通过 groupNameUpdated 收到通知。
// 群内成员 修改群名
// groupName 最大 64 字节的字符串,无特殊字符限制。
zim.updateGroupName("new_group_name", "group_id", new ZIMGroupNameUpdatedCallback() {
@Override
public void onGroupNameUpdated(ZIMError errorInfo) {
}
});
1
// 群内成员 修改群名
// groupName 最大 64 字节的字符串,无特殊字符限制。
[zim updateGroupName:groupName groupID:groupID callback:^(ZIMError * _Nonnull errorInfo) {
//这里写调用修改群名称接口后的业务代码
}];
1
// 群内成员 修改群名
// groupName 最大 64 字节的字符串,无特殊字符限制。
zim_->updateGroupName("new_group_name", group_id,
[=](const std::string &groupID, const std::string &groupName, zim::ZIMError errorInfo){
int error_code = errorInfo.code;
});
1
// 群内成员 修改群名
// groupName 最大 64 字节的字符串,无特殊字符限制。
ZIM.getInstance()
!.updateGroupName('groupName', 'groupID')
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
// 群内成员 修改群名
// groupName 最大 64 字节的字符串,无特殊字符限制。
var groupID = '';
var groupName = '';
zim.updateGroupName(groupName, groupID)
.then(function ({ groupID, groupName }) {
// 操作成功
})
.catch(function (err) {
// 操作失败
});
// 注册监听“群名更新”的回调
zim.on('groupNameUpdated', function (zim, { groupID, groupName, operatedInfo }) {
console.log('groupNameUpdated', groupID, groupName, operatedInfo);
});
1
// 群内成员 修改群名
// groupName 最大 64 字节的字符串,无特殊字符限制。
ZIM.GetInstance().UpdateGroupName("newGroupName", "groupID", (string groupID, string groupName, ZIMError errorInfo) => { });
1
修改群头像
用户登录、并加入某个群组后,如果想要修改自己加入群组的群头像,可以通过调用 updateGroupAvatarUrl 接口,修改群组头像。
修改成功后,全体群成员都可以通过 groupAvatarUrlUpdated 收到通知。
// 群内成员 修改群头像
// URL 最大 500 字节,无特殊字符限制
String groupAvatarUrl = "";
String groupId = "";
zim.updateGroupAvatarUrl(groupAvatarUrl, groupId, new ZIMGroupAvatarUrlUpdatedCallback() {
@Override
public void onGroupAvatarUrlUpdated(String groupID, String groupAvatarUrl, ZIMError errorInfo) {
}
});
1
// 群内成员 修改群头像
// URL 最大 500 字节,无特殊字符限制
[zim updateGroupAvatarUrl:groupAvatarUrl groupID:groupID callback:^(ZIMError * _Nonnull errorInfo) {
//这里写调用修改群头像称接口后的业务代码
}];
1
// 群内成员 修改群头像
// URL 最大 500 字节,无特殊字符限制
zim_->updateGroupAvatarUrl("new_group_avatar_url", group_id,
[=](const std::string &groupID, const std::string &groupName, zim::ZIMError errorInfo){
int error_code = errorInfo.code;
});
1
// 群内成员 修改群头像
// groupAvatarUrl 最大 500 字节的字符串,无特殊字符限制。
ZIM.getInstance()
!.updateGroupAvatarUrl('groupAvatarUrl', 'groupID')
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
// 群内成员 修改群头像
// URL 最大 500 字节,无特殊字符限制
var groupID = '';
var groupAvatarUrl = '';
zim.updateGroupAvatarUrl(groupAvatarUrl, groupID)
.then(function ({ groupID, groupAvatarUrl }) {
// 操作成功
})
.catch(function (err) {
// 操作失败
});
// 注册监听“群头像 URL 更新”的回调
zim.on('groupAvatarUrlUpdated', function (zim, { groupID, groupAvatarUrl, operatedInfo }) {
console.log('groupAvatarUrlUpdated', groupID, groupAvatarUrl, operatedInfo);
});
1
// 群内成员 修改群头像
// URL 最大 500 字节,无特殊字符限制
ZIM.GetInstance().UpdateGroupAvatarUrl("groupAvatarUrl", "groupID", (string groupID, string groupAvatarUrl, ZIMError errorInfo) => { });
1
修改群公告
用户登录、并加入某个群组后,如果想要修改自己加入群组的群公告,可以通过调用 updateGroupNotice 接口,修改群组公告。
修改成功后,全体群成员都可以通过 groupNoticeUpdated 收到通知。
// 群内成员 修改群公告
zim.updateGroupNotice("new_group_notice", group_id, new ZIMGroupNameUpdatedCallback() {
@Override
public void onGroupNoticeUpdated(ZIMError errorInfo) {
// 通过 errorInfo.code 获取修改群名的结果
}
});
1
// 群内成员 修改群公告
[zim updateGroupNotice:groupNotice groupID:groupID callback:^(ZIMError * _Nonnull errorInfo) {
//这里写调用修改群公告接口后的业务代码
}];
1
// 群内成员 修改群公告
zim_->updateGroupNotice("new_group_notice", group_id,
[=](const std::string &groupID, const std::string &groupNotice, ZIMError errorInfo){
int error_code = errorInfo.code;
});
1
// 群内成员 修改群公告
ZIM.getInstance()
!.updateGroupNotice('groupNotice', 'groupID')
.then((value) => {
//成功触发此处
})
.catchError((onError) {
//失败触发此处
});
1
// 群内成员 修改群公告
var groupID = '';
var groupNotice = '';
zim.updateGroupNotice(groupNotice, groupID)
.then(function ({ groupID, groupNotice }) {
// 操作成功
})
.catch(function (err) {
// 操作失败
});
// 注册监听“群公告更新”的回调
zim.on('groupNoticeUpdated', function (zim, { groupID, groupNotice, operatedInfo }) {
console.log('groupNoticeUpdated', groupID, groupNotice, operatedInfo);
});
1
// 群内成员 修改群公告
ZIM.GetInstance().UpdateGroupNotice("new_group_notice", "group_id", (string groupID, string groupNotice, ZIMError errorInfo) =>
{
// 通过 errorInfo.code 获取修改群名的结果
}
);
1
修改群备注
群备注,是用户为群聊设置个性化的备注名称,以便于区分不同的群聊。例如,可以将工作群备注为“工作群”,家庭群备注为“家庭群”,这样在识别群聊时会更加方便。
群备注仅用户自己可见,不会影响其他群聊成员的群名称显示。
用户登录、并加入某个群组后,如果想要修改群组的群备注,可以通过调用 updateGroupAlias 接口,修改群组备注,群备注仅该用户自身可见,且对应会话的备注也会自动同步。
// 修改备注
// groupAlias 最大 256 字节的字符串,无特殊字符限制。
String group_alias = "NewAlias";
String group_id = "GroupID";
zim.updateGroupAlias(group_alias, group_id, new ZIMGroupAliasUpdatedCallback() {
@Override
public void onGroupAliasUpdated(String groupID, String groupAlias, ZIMError errorInfo) {
// 通过 errorInfo.code 获取修改群备注的结果
}
});
1
// 修改备注
// groupAlias 最大 256 字节的字符串,无特殊字符限制。
NSString *groupAlias = @"NewAlias";
NSString *groupID = @"GroupID";
[zim updateGroupAlias:groupAlias groupID:groupID callback:^(NSString *groupID, NSString *groupAlias, ZIMError *errorInfo) {
//这里写调用修改群备注接口后的业务代码
}];
1
// 修改备注
// groupAlias 最大 256 字节的字符串,无特殊字符限制。
std::string group_alias = "NewAlias";
std::string group_id = "GroupID";
zim_->updateGroupAlias(group_alias, group_id,
[=](const std::string &groupID, const std::string &groupAlias, zim::ZIMError errorInfo){
int error_code = errorInfo.code;
});
1
// 修改备注
// groupAlias 最大 256 字节的字符串,无特殊字符限制。
String groupAlias = 'newAlias';
String groupId = 'groupID';
try{
ZIMGroupAliasUpdatedResult? result = await ZIM.getInstance()?.updateGroupAlias(groupAlias, groupId);
} on PlatformException catch (onError){
onError.code; // 修改群备注失败,失败错误码
onError.message; // 修改群备注的错误信息
}
1
// 修改备注
// groupAlias 最大 256 字节的字符串,无特殊字符限制。
try {
const groupAlias = "new_group_alias_example"; // 最大 256 字节,无特殊字符限制
const groupID = "example_group_id"; // 群组 ID 示例
// 调用 updateGroupAlias 方法
const result = await zim.updateGroupAlias(groupAlias, groupID);
console.log("群别名更新成功:", result);
} catch (error) {
console.error("群别名更新失败:", error);
}
1
修改成功后,该用户的所有端都可以通过 groupAliasUpdated 收到通知。
// 监听群备注修改通知
public class SelfEventHandler extends ZIMEventHandler {
@Override
public void onGroupAliasUpdated(ZIM zim, String groupAlias, String operatedUserID, String groupID) {
// 业务逻辑
}
}
1
@interface ZIMEventHandlerImpl : NSObject<ZIMEventHandler>
+(ZIMEventHandlerImpl *)getInstance();
@end
@implementation ZIMEventHandlerImpl
// 监听群备注修改通知
- (void)zim:(ZIM *)zim
groupAliasUpdated:(NSString *)groupAlias
operatedUserID:(NSString *)operatedUserID
groupID:(NSString *)groupID {
// 业务逻辑
}
// 其余回调事件..
@end
ZIMEventHandlerImpl *eventHandlerImpl = [ZIMEventHandlerImpl getInstance];
[zim setEventHandler: eventHandlerImpl];
1
// 监听群备注修改通知
class zim_event_handler : public zim::ZIMEventHandler {
void onGroupAliasUpdated(ZIM * /*zim*/, const std::string & /*groupAlias*/,
const std::string & /*operatedUserID*/,
const std::string & /*groupID*/) override {
// 业务逻辑
}
}
1
// 监听群备注修改通知
ZIMEventHandler.onGroupAliasUpdated = (ZIM zim, String groupAlias, String operatedUserID, String groupID){
// 业务逻辑
};
1
// 监听群备注修改通知
zim.on('groupAliasUpdated', function (zim, { groupID, groupAlias, operatedUserID }) {
// 在这里可以处理群别名更新后的逻辑,例如更新 UI 或提示用户
});
1
此外,该用户还会收到 conversationChanged 回调,得知 conversationAlias
(会话别名)更新,详情请参考 获取会话列表 - 监听会话变更。