群属性管理

更新时间:2022-02-28

本文介绍如何管理群的属性。

环信即时通讯 IM Android SDK 提供 EMGroupManager 类和 EMGroup 类,用于管理群组属性,其中包含如下主要方法:

  • changeGroupName 修改群组名称;
  • changeGroupDescription 修改群组描述;
  • updateGroupAnnouncement 设置/更新群公告;
  • fetchGroupAnnouncement 获取群公告;
  • uploadGroupSharedFile 上传共享文件;
  • deleteGroupSharedFile 删除群共享文件;
  • fetchGroupSharedFileList 获取群共享文件列表;
  • updateGroupExtension 更新群扩展字段;

修改群组名称|描述

群主和群管理员可以修改群名称和群描述。

群名称的长度限制为:128 个字符。群描述的长度限制为:512 个字符。

/**
     * 修改群组名称。
     * 仅群主和管理员可调用此方法。
     * 异步方法见 {@link #asyncChangeGroupName(String, String, EMCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               要修改名称的群组的 ID。
     * @param changedGroupName      修改后的群组名称。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
     *
     */
EMClient.getInstance().groupManager().changeGroupName(groupId,changedGroupName);

/**
     * 修改群描述。
     * 仅群主和管理员可调用此方法。
     * 异步方法见 {@link #asyncChangeGroupDescription(String, String, EMCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               群组 ID。
     * @param changedDescription    修改后的群描述。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
     *
     */
EMClient.getInstance().groupManager().changeGroupDescription(groupId,description);

群公告

群主和群管理员可以设置和更新群公告,群成员可以获取群公告。

群公告的长度限制为:512 个字符。

设置/更新群公告

群公告发生变化时,群成员会收到群组事件通知 EMGroupChangeListener#onAnnouncementChanged

/**
     * 更新群公告。
     * 仅群主和管理员可调用此方法。
     * 异步方法见 {@link #asyncUpdateGroupAnnouncement(String, String, EMCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               群组 ID。
     * @param announcement          公告内容。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
       */
       EMClient.getInstance().groupManager().updateGroupAnnouncement(groupId, announcement);
       

获取群公告

/**
     * 从服务器获取群组公告。
     * 群成员可调用此方法。
     * 异步方法见 {@link #asyncFetchGroupAnnouncement(String, EMValueCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               群组 ID。
     * @return                      群组公告。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
       */
       EMClient.getInstance().groupManager().fetchGroupAnnouncement(groupId);
       

共享文件

EMGroupManager 提供上传群共享文件和删除群文件等功能。群主和群管理员可删除全部的群共享文件,群成员只能删除自己上传的群文件。

/**
     * 上传共享文件至群组。群共享文件的大小限制默认为:10 MB。共享文件成功上传时,群成员会收到群组事件回调。 
     * 注意:callback 只做进度回调用。
     * 异步方法见 {@link #asyncUploadGroupSharedFile(String, String, EMCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               群组 ID。
     * @param filePath              文件本地路径。
     * @param callBack              上传文件进度回调。
     * @return EMMucSharedFile      返回共享文件属性对象。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
       */
       EMClient.getInstance().groupManager().uploadGroupSharedFile(groupId, filePath, callBack);
       
/**
     * 删除群组指定的共享文件。
     * 成员可以删除自己上传的文件,群组主或者群组管理员可以删除所有的共享文件。
     * 异步方法见 {@link #asyncDeleteGroupSharedFile(String, String, EMCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               群组 ID。
     * @param fileId                文件 ID。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
       */
       EMClient.getInstance().groupManager().deleteGroupSharedFile(groupId, fileId);
       
/**
     * 从服务器获取群组的共享文件列表。
     * 异步方法见 {@link #asyncFetchGroupSharedFileList(String, int, int, EMValueCallBack)}。
     * 同步方法,会阻塞当前线程。
     * @param groupId               群组 ID。
     * @param pageNum               当前页码,从 1 开始。
     * @param pageSize              每页返回的共享文件数。
     * @return                      返回共享文件列表。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
       */
       EMClient.getInstance().groupManager().fetchGroupSharedFileList(groupId, pageNum, pageSize);
       

更新群扩展字段

群主和群管理员可以更新群组的扩展字段,开发者可以通过群组扩展字段设置 JSON 格式的数据,自定义更多群组信息。 群扩展字段的长度限制为:8 KB。

示例代码如下:

/**
     * 更新群组扩展字段。
     * 仅群主和管理员可调用此方法。
     * 同步方法,会阻塞当前线程。
     * @param groupId       群组 ID。
     * @param extension     群组扩展字段。
     * @throws HyphenateException   如果有异常会在此抛出,包括错误码和错误信息,详见 {@link EMError}。
     */
EMClient.getInstance().groupManager().updateGroupExtension(groupId, extension);