logo
当前页

消息组件

IMKit 的消息组件提供了消息列表和消息传输功能。

说明
如果您不需要会话列表,可以直接使用消息组件。
  • 消息列表:允许您查看聊天的消息历史记录。
  • 消息传输:允许您发送或接收一对一消息和群组消息。

将消息组件集成到您的项目中

前提条件

将 IMKit SDK 集成到您的项目中(需要完成初始化和登录)。更多信息,请参考快速开始

显示消息组件

IMKit 允许您将消息组件集成到您的 Activity 中,可以作为 Activity 或 Fragment。

注意
  • 对于 Activity 模式,标题栏和右上角的重定向到群组管理页面的按钮是根据类型包含的。对于 Fragment 模式,只包含与消息相关的内容。
  • 要重定向到群组管理页面,需要引入ZIMKitGroup模块。否则,会报错因为找不到相应的 Activity 。如果群组功能可用,但不需要重定向到群组管理页面,则需要修改源代码以隐藏右上角的按钮。

直接重定向到 Activity

MyZIMKitActivity.java

import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import im.zego.zimkitcommon.enums.ZIMKitConversationType;
import im.zego.zimkitcommon.ZIMKitRouter;

public class MyZIMKitActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void buttonClick() {
        String id = ; // 用户ID或群组ID或会话ID。
        ZIMKitConversationType type = ; // ZIMKitConversationType.ZIMKitConversationTypeGroup 或 ZIMKitConversationType.ZIMKitConversationTypePeer
        toMessageActivity(id,type);
    }
    
    private void toMessageActivity(String id,ZIMKitConversationType type){
        // 您可以通过 Kit 层的路由器将页面重定向到相应的页面。
        ZIMKitRouter.toMessageActivity(this, id, type);
    }
}

将消息页面集成到您的 Activity 中作为一个 Fragment

您可以通过两种方式将消息组件添加到 activity 的视图层次结构中:一种是在 activity 的布局文件中定义 fragment,另一种是在 activity 的布局文件中定义一个 fragment 容器,然后在 activity 中以编程方式添加 fragment。

定制功能

如果默认的与消息相关的特性和行为不能完全满足您的需求,您可以通过我们在本节中提到的配置进行灵活的定制。

要在标题栏上自定义按钮,您可以实现registerMessageListListener

例如,当您想在消息列表的右上方添加一个“开始通话”按钮时。要了解更多详细信息,请参阅与 Call Kit 一起使用

MyZIMKitMessageActivity.java
// !mark
ZIMKit.registerMessageListListener(new ZIMKitMessagesListListener() {
    @Override
// !mark
    public ZIMKitHeaderBar getMessageListHeaderBar(ZIMKitMessageFragment fragment) {
        // 通过 fragment.getConversationID() 获取对话 ID
        // 通过 fragment.getConversationName() 获取对话名称
        // 通过 fragment.getConversationType() 获取对话类型。ZIMConversationType.PEER:一对一聊天,ZIMConversationType.GROUP:群聊
        if (fragment != null) {
            // 为一对一聊天添加自定义标题栏。
            if (fragment.getConversationType() == ZIMConversationType.PEER) {
               // 自定义标题栏的左侧视图。如果未添加,则显示默认视图。
// !mark(1:10)
                CustomLeftView customLeftView = new CustomLeftView();
               // 自定义标题栏的中心视图。如果未添加,则显示默认视图。
                CustomTitleView customTitleView = new CustomTitleView();
               // 正确的自定义标题栏视图。如果未添加,则显示默认视图。
                CustomRighteView customRighteView = new CustomRighteView();
                ZIMKitHeaderBar headerBar = new ZIMKitHeaderBar();
                headerBar.setLeftView(customLeftView);
                headerBar.setTitleView(customTitleView);
                headerBar.setRightView(customRighteView);
                return headerBar;
            }
        }
        return null;
    }
});

长按一条消息后,界面会显示一个消息操作菜单,提供复制、回复、转发消息以及其他操作的选项。如需修改此菜单,可以使用ZIMKitConfig.messageConfig。该配置允许自定义不同消息类型(文本、图片、视频、文件、语音和组合消息)的操作菜单。

MessageActionMenu.jpeg
可用操作类型文字消息图片消息视频消息文件消息语音消息组合消息
COPY(复制)✔️
REPLY(回复)✔️✔️✔️✔️✔️✔️
FORWARD(转发)✔️✔️✔️✔️✔️
MULTIPLE_CHOICE(多选)✔️✔️✔️✔️✔️✔️
DELETE(删除)✔️✔️✔️✔️✔️✔️
REVOKE(撤回)✔️✔️✔️✔️✔️✔️
SPEAKER(使用扬声器播放)✔️
REACTION(表态)✔️✔️✔️✔️✔️✔️

以下是参考代码:

ZIMKitConfig config = ZIMKitConfig();

// 文本消息
config.messageConfig.textMessageConfig.operations = new ArrayList<>(
   Arrays.asList(  ZIMKitMessageOperationName.COPY,               // 复制
    ZIMKitMessageOperationName.REPLY,              // 回复
    ZIMKitMessageOperationName.FORWARD,            // 转发
    ZIMKitMessageOperationName.MULTIPLE_CHOICE,     // 多选 
    ZIMKitMessageOperationName.DELETE,             // 删除
    ZIMKitMessageOperationName.REVOKE,             // 撤回
    ZIMKitMessageOperationName.REACTION            // 表态
    ) );
] 

// 图片消息 
config.messageConfig.imageMessageConfig.operations = new ArrayList<>(
    Arrays.asList( ZIMKitMessageOperationName.REPLY, 
    ZIMKitMessageOperationName.FORWARD, 
    ZIMKitMessageOperationName.MULTIPLE_CHOICE, 
    ZIMKitMessageOperationName.DELETE, 
    ZIMKitMessageOperationName.REVOKE,
    ZIMKitMessageOperationName.REACTION
    ) );
]

// 视频消息 
config.messageConfig.videoMessageConfig.operations = new ArrayList<>(
    Arrays.asList( ZIMKitMessageOperationName.REPLY, 
    ZIMKitMessageOperationName.FORWARD, 
    ZIMKitMessageOperationName.MULTIPLE_CHOICE, 
    ZIMKitMessageOperationName.DELETE, 
    ZIMKitMessageOperationName.REVOKE,
    ZIMKitMessageOperationName.REACTION
    ) );

// 文件消息 
config.messageConfig.fileMessageConfig.operations = new ArrayList<>(
    Arrays.asList( ZIMKitMessageOperationName.REPLY, 
    ZIMKitMessageOperationName.FORWARD, 
    ZIMKitMessageOperationName.MULTIPLE_CHOICE, 
    ZIMKitMessageOperationName.DELETE, 
    ZIMKitMessageOperationName.REVOKE,
    ZIMKitMessageOperationName.REACTION
    ) );

// 语音消息 
config.messageConfig.audioMessageConfig.operations = new ArrayList<>(
    Arrays.asList( ZIMKitMessageOperationName.SPEAKER,  // 使用扬声器进行播放
    ZIMKitMessageOperationName.FORWARD, 
    ZIMKitMessageOperationName.MULTIPLE_CHOICE, 
    ZIMKitMessageOperationName.DELETE, 
    ZIMKitMessageOperationName.REVOKE,
    ZIMKitMessageOperationName.REACTION
    ) );

// 合并转发消息
config.messageConfig.combineMessageConfig.operations = new ArrayList<>(
    Arrays.asList( ZIMKitMessageOperationName.REPLY, 
    ZIMKitMessageOperationName.FORWARD, 
    ZIMKitMessageOperationName.MULTIPLE_CHOICE, 
    ZIMKitMessageOperationName.DELETE, 
    ZIMKitMessageOperationName.REVOKE,
    ZIMKitMessageOperationName.REACTION
    ) );

要自定义底部工具栏上的按钮,您可以使用 ZIMKitConfig.inputConfig.smallButtonsZIMKitConfig.inputConfig.expandButtons 进行配置:

  • smallButtons: 配置输入框快捷按钮,目前默认显示语音输入、表情、相册图片以及扩展按钮。
  • expandButtons: 配置输入框扩展按钮,目前默认显示发送拍照,以及发送文件按钮。

以下是参考代码:

// smallButtons 底部工具栏输入框快捷按钮新增发送文件按钮
config.inputConfig.smallButtons.add(ZIMKitInputButtonName.FILE)   

// expandButtons 底部工具栏输入框扩展按钮新增发送图片按钮
config.bottomConfig.expandButtons.add(ZIMKitInputButtonName.PICTURE)  

如需修改底部输入框的默认提示文字,您可以使用 ZIMKitConfig.inputConfig.inputHint 进行配置:

以下是参考代码:

ZIMKitConfig config = ZIMKitConfig()
config.inputConfig.inputHint = "input hint", 

IMKit 提供一系列默认表情用于在会话中发送表情,以及对消息进行表态。如果您不满意默认提供的表情,您可以通过 ZIMKitConfig.inputConfig.emojis 传入所有您需要的表情。

发送表情消息表态
Emoji_1.jpegEmoji_2.jpeg

以下是参考代码:

ZIMKitConfig config = ZIMKitConfig()
ZIMKitConfig.inputConfig.emojis = ["😀", "😃", "😄", "😁", "😆", "😅", "😂"]

API

定义
public interface ZIMKitMessagesListListener {
    ZIMKitHeaderBar getMessageListHeaderBar(ZIMKitMessageFragment fragment);
}

Previous

会话组件

Next

与 音视频通话 UIKit 一起使用

当前页

返回到顶部