提交工单
咨询集成、功能及报价等问题
ZIM SDK 支持将用户的某些群组操作(如创建群组、解散群组等),转换为一条群组会话内的特殊类型消息(Tips 消息,枚举值为 32)。该种消息仅能由 ZIM 后台或 ZIM SDK 内部产生,用户不可自行插入本地会话,不可对其设置回执状态、表态和单独删除(但可通过删除会话内所有消息删除该消息)。
仅限 2.15.0 及以上版本的 ZIM SDK 支持此功能。
在实现“接收 Tips 消息”功能之前,请确保:
请联系 ZEGO 技术支持开启单个或多个 Tips 消息特性,确认所需的消息事件。可开通的事件包含:
群创建。
群解散。
用户主动加群。
群内成员邀请群外用户。
群成员主动离开。
群内成员被踢出。
群资料变更,包含以下事件:
“群资料变更” 仅为以下事件的集合,您在开通时,仍需指定所需的事件。
群成员变更:包含以下子事件:
“群成员变更” 仅为以下事件的集合,您在开通时,仍需指定所需的事件。
当群组会话中出现了相关事件,通过监听 receiveGroupMessage 回调,即可接收 Tips 消息。
如果 Tips 消息的事件(ZIMTipsMessageEvent)为群资料变更(ZIMTipsMessageEventGroupInfoChanged
)和群成员变更(ZIMTipsMessageEventGroupMemberInfoChanged
),请遵循以下步骤:
changeInfo
转换为 ZIMTipsMessageGroupChangeInfo 或 ZIMTipsMessageGroupMemberChangeInfo 类型。changeInfo
中的 type
,了解具体事件(ZIMTipsMessageChangeInfoType),从而确认 changeInfo
中应该读取的对应字段。对于非对应事件的字段,SDK 不会赋值。如需了解处理详情,可参考下文示例代码。ZIMTipsMessageEvent 与 ZIMTipsMessageChangeInfoType 的对应关系如下表所示:
事件 (ZIMTipsMessageEvent) | 枚举 | 枚举值 | 读取 ZIMTipsMessageGroupChangeInfo 操作 |
---|---|---|---|
创建群组 |
ZIMTipsMessageEventGroupCreated |
1 |
无需操作 |
解散群组 |
ZIMTipsMessageEventGroupDismissed |
2 |
|
用户主动入群 |
ZIMTipsMessageEventGroupJoined |
3 |
|
邀请用户入群 |
ZIMTipsMessageEventGroupInvited |
4 |
|
群内成员离群 |
ZIMTipsMessageEventGroupLeft |
5 |
|
群内成员被踢 |
ZIMTipsMessageEventGroupKickedOut |
6 |
|
群资料变更 |
ZIMTipsMessageEventGroupInfoChanged |
7 |
需要读取 |
额外信息 (ZIMTipsMessageChangeInfoType) | 枚举 | 枚举值 | 读取 ZIMTipsMessageGroupChangeInfo 操作 |
群名、群头像、群公告多个变更 |
ZIMTipsMessageChangeInfoTypeGroupDataChanged |
1 |
参考示例代码,由 groupDataFlage 进行位运算,取群名,群公告、群头像其中某几个数据 |
群公告变更 |
ZIMTipsMessageChangeInfoTypeGroupNoticeChanged |
2 |
读取 ZIMTipsMessageGroupChangeInfo 的 groupNotice 字段 |
群名变更 |
ZIMTipsMessageChangeInfoTypeGroupNameChanged |
3 |
读取 ZIMTipsMessageGroupChangeInfo 的 groupName 字段 |
群头像变更 |
ZIMTipsMessageChangeInfoTypeGroupAvatarUrlChanged |
4 |
读取 ZIMTipsMessageGroupChangeInfo 的 groupAvatarUrl 字段 |
群禁言状态变更 |
ZIMTipsMessageChangeInfoTypeGroupMuteChanged |
5 |
读取 ZIMTipsMessageGroupChangeInfo 的 groupMutedInfo 字段 |
群成员变更 |
ZIMTipsMessageEventGroupMemberInfoChanged |
8 |
根据额外信息而定 |
额外信息 (ZIMTipsChangeInfoType) | 枚举 | 枚举值 | 读取 ZIMTipsMessageGroupMemberChangeInfo 操作 |
群主转移 |
ZIMTipsMessageChangeInfoTypeGroupOwnerTransferred |
10 |
无需读取 |
群成员角色变更 |
ZIMTipsMessageChangeInfoTypeGroupMemberRoleChanged |
11 |
读取 ZIMTipsMessageGroupMemberChangeInfo 的 memberRole 字段 |
群成员禁言状态变更 |
ZIMTipsMessageChangeInfoTypeGroupMemberMuteChanged |
12 |
读取 ZIMTipsMessageGroupMemberChangeInfo 的 muteExpiredTime 字段 |
// 接收群组消息
- (void)receiveGroupMessage:(ZIM *)zim
messageList:(NSArray<ZIMMessage *> *)messageList
fromGroupID:(NSString *)fromGroupID {
for (ZIMMessage *message in messageList) {
// 消息为 Tips
if (message.type == ZIMMessageTypeTips) {
ZIMTipsMessage *tipsMessage = (ZIMTipsMessage *)message;
// 如果 Tips 消息类型为群资料变更
if (tipsMessage.event == ZIMTipsMessageEventGroupInfoChanged) {
ZIMTipsMessageGroupChangeInfo *info = (ZIMTipsMessageGroupChangeInfo *)tipsMessage.changeInfo;
if (info.type == ZIMTipsMessageChangeInfoTypeGroupDataChanged) {
if (info.groupDataFlag & ZIMGroupDataFlagName) {
// 群名变更
NSString *newGroupName = info.groupName;
}
if (info.groupDataFlag & ZIMGroupDataFlagNotice) {
// 群公告变更
NSString *newGroupNotice = info.groupNotice;
}
if (info.groupDataFlag & ZIMGroupDataFlagAvatarUrl) {
// 群头像变更
NSString *newGroupAvatarUrl = info.groupAvatarUrl;
}
}
// 业务逻辑
} else if (tipsMessage.event == ZIMTipsMessageEventGroupMemberInfoChanged) {
// 如果 Tips 消息类型为群成员变更。
ZIMTipsMessageGroupMemberChangeInfo *info = (ZIMTipsMessageGroupMemberChangeInfo *)tipsMessage.changeInfo;
// 业务逻辑
}
// 其他业务逻辑
}
}
}
根据以上获取到的 Tips 消息,根据以上获取的信息,开发者需要自行生成对应事件的字符串并在 App UI 上展示该文本。
联系我们
文档反馈