logo
当前页

接收 Tips 消息


功能简介

ZIM SDK 支持将用户的某些群组操作(如创建群组、解散群组等),转换为一条群组会话内的特殊类型消息(Tips 消息,枚举值为 32)。该种消息仅能由 ZIM 后台或 ZIM SDK 内部产生,用户不可自行插入本地会话,不可对其设置回执状态、表态和单独删除(但可通过删除会话内所有消息删除该消息)。

说明

仅限 2.15.0 及以上版本的 ZIM SDK 支持此功能。

实现流程

1 开通功能

请联系 ZEGO 技术支持开启单个或多个 Tips 消息特性,确认所需的消息事件。可开通的事件包含:

  • 群创建。

  • 群解散。

  • 用户主动加群。

  • 群内成员邀请群外用户。

  • 群成员主动离开。

  • 群内成员被踢出。

  • 群资料变更,包含以下事件:

    说明

    “群资料变更” 仅为以下事件的集合,您在开通时,仍需指定所需的事件。

    • 群名变更。
    • 群头像变更。
    • 群公告变更。
    • 群禁言状态变更。
  • 群成员变更:包含以下子事件:

    说明

    “群成员变更” 仅为以下事件的集合,您在开通时,仍需指定所需的事件。

    • 群主变更。
    • 群成员角色变更。
    • 群成员禁言状态变更。

2 接收消息

当群组会话中出现了相关事件,通过监听 onReceiveGroupMessage 回调,即可接收 Tips 消息。

如果 Tips 消息的事件( ZIMTipsMessageEvent )为群资料变更(ZIMTipsMessageEvent.GROUP_INFO_CHANGED)和群成员变更(ZIMTipsMessageEvent.GROUP_MEMBER_INFO_CHANGED),请遵循以下步骤:

  1. 将 Tips 消息中的 changeInfo 转换为 ZIMTipsMessageGroupChangeInfoZIMTipsMessageGroupMemberChangeInfo 类型。
  2. 根据 changeInfo 中的 type,了解具体事件( ZIMTipsMessageChangeInfoType ),从而确认 changeInfo 中应该读取的对应字段。对于非对应事件的字段,SDK 不会赋值。如需了解处理详情,可参考下文示例代码。

ZIMTipsMessageEventZIMTipsMessageChangeInfoType 的对应关系如下表所示:

事件 (ZIMTipsMessageEvent)枚举枚举值读取 ZIMTipsMessageGroupChangeInfo 操作
创建群组GROUP_CREATED1无需操作
解散群组GROUP_DISMISSED2
用户主动入群GROUP_JOINED3
邀请用户入群GROUP_INVITED4
群内成员离群GROUP_LEFT5
群内成员被踢GROUP_KICKED_OUT6
群资料变更GROUP_INFO_CHANGED7需要读取
额外信息 (ZIMTipsMessageChangeInfoType)枚举枚举值读取 ZIMTipsMessageGroupChangeInfo 操作
└群名、群头像、群公告多个变更GROUP_DATA_CHANGED1参考示例代码,由 groupDataFlage 进行位运算,取群名,群公告、群头像其中某几个数据
└群公告变更GROUP_NOTICE_CHANGED2读取 ZIMTipsMessageGroupChangeInfo 的 groupNotice 字段
└群名变更GROUP_NAME_CHANGED3读取 ZIMTipsMessageGroupChangeInfo 的 groupName 字段
└群头像变更GROUP_AVATAR_URL_CHANGED4读取 ZIMTipsMessageGroupChangeInfo 的 groupAvatarUrl 字段
└群禁言状态变更GROUP_MUTE_CHANGED5读取 ZIMTipsMessageGroupChangeInfo 的 groupMutedInfo 字段
群成员变更GROUP_MEMBER_INFO_CHANGED8根据额外信息而定
额外信息 (ZIMTipsChangeInfoType)枚举枚举值读取 ZIMTipsMessageGroupMemberChangeInfo 操作
└群主转移GROUP_OWNER_TRANSFERRED10无需读取
└群成员角色变更GROUP_MEMBER_ROLE_CHANGED11读取 ZIMTipsMessageGroupMemberChangeInfo 的 memberRole 字段
└群成员禁言状态变更GROUP_MEMBER_MUTE_CHANGED12读取 ZIMTipsMessageGroupMemberChangeInfo 的 muteExpiredTime 字段
Untitled
// 接收群组消息
zim.setEventHandler(new ZIMEventHandler(){
@Override
public void onReceiveGroupMessage(ZIM zim, List<ZIMMessage> messageList, String fromGroupID) {
        for (ZIMMessage message : messageList) {
            // 消息为 Tips
            if (message.getType() == ZIMMessageType.TIPS) {
                ZIMTipsMessage tipsMessage = (ZIMTipsMessage) message;
                // 如果 Tips 消息类型为群资料变更
                if (tipsMessage.event == ZIMTipsMessageEvent.GROUP_INFO_CHANGED) {
                    ZIMTipsMessageGroupChangeInfo info = (ZIMTipsMessageGroupChangeInfo)tipsMessage.changeInfo;
                    if (info.type == ZIMTipsMessageChangeInfoType.GROUP_DATA_CHANGED) {
                        if ((info.groupDataFlag & ZIMGroupDataFlag.NAME) == ZIMGroupDataFlag.NAME) {
                            // 群名变更
                            String newGroupName = info.groupName;
                        }

                        if ((info.groupDataFlag & ZIMGroupDataFlag.NOTICE) == ZIMGroupDataFlag.NOTICE) {
                            // 群公告变更
                            String newGroupNotice = info.groupNotice;
                        }

                        if ((info.groupDataFlag &  ZIMGroupDataFlag.AVATAR_URL) == ZIMGroupDataFlag.AVATAR_URL) {
                            // 群头像变更
                            String newGroupAvatarUrl = info.groupAvatarUrl;
                        }
                    }

                    // ... 业务逻辑
                } else if (tipsMessage.event == ZIMTipsMessageEvent.GROUP_MEMBER_INFO_CHANGED) {
                    ZIMTipsMessageGroupMemberChangeInfo memberInfo = (ZIMTipsMessageGroupMemberChangeInfo) tipsMessage.changeInfo;
                    // ... 业务逻辑
                }
                // ... 其他逻辑
            }
        }
    }
});
1
Copied!

Previous

导出导入消息

Next

地理围栏