自定义菜单

更新时间: 2024/08/07 16:14:03

会议组件 NEMeetingKit 为您提供了一套会议中自定义菜单的接口,允许您对会议中的菜单进行更个性化的定制。

功能介绍

NEMeetingKit 支持底部 Toolbar 菜单与更多展开菜单两个区域的菜单定制,包括:

  • 支持设置菜单项图标。
  • 支持自定义 SDK 内置菜单与外部注入菜单的排序。
  • 支持设置菜单显示规则,包括:始终可见、仅普通参会者可见、仅主持人可见。
  • 支持无状态菜单项和有状态菜单项,且支持点击有状态的菜单项后触发状态迁移,并更新菜单的 UI 展示。
  • 支持显示或隐藏 SDK 的内置菜单。
  • 支持修改 SDK 内置菜单的 UI 展示。

注意事项

自定义菜单时,您需要通过 options 参数进行配置,但此参数仅支持在入会前完成设置,在会议中设置不会生效。

配置 Toolbar 菜单列表

在创建会议、加入会议或匿名入会时,设置 options 相关参数。

NEJoinMeetingParams params;
params.meetingId = "123456789";
params.displayName = "Meeting";

NEJoinMeetingOptions options;
options.noAudio = true;
options.noVideo = true;

NEMeetingMenuItem menuItem;
#ifdef _WIN32
    menuItem.itemImage = "C://feedback.png";
#else
    menuItem.itemImage = "/Users/XX/feedback.png";
#endif
    
menuItem.itemId = 101;
menuItem.itemTitle = tr("Feedback").toStdString();
options.full_toolbar_menu_items_.push_back(menuItem);

ipcMeetingService->joinMeeting(params, options, [this](NEErrorCode errorCode, const std::string& errorMessage) {
});

配置更多展开菜单列表

  1. 在创建会议、加入会议或匿名入会时,设置 options 相关参数。
NEJoinMeetingParams params;
params.meetingId = "123456789";
params.displayName = "Meeting";

NEJoinMeetingOptions options;
options.noAudio = true;
options.noVideo = true;

NEMeetingMenuItem menuItem;
#ifdef _WIN32
    menuItem.itemImage = "C://feedback.png";
#else
    menuItem.itemImage = "/Users/XX/feedback.png";
#endif
    
menuItem.itemId = 101;
menuItem.itemTitle = tr("Feedback").toStdString();
options.full_more_menu_items_.push_back(menuItem);

ipcMeetingService->joinMeeting(params, options, [this](NEErrorCode errorCode, const std::string& errorMessage) {
});
  1. 注册回调接口 setOnInjectedMenuItemClickListener 开始监听,并在回调方法中处理相应事件。
// 继承按钮点击状态变更类,并处理点击
class NEMeetingMenuItemClickListener : public NEMeetingOnInjectedMenuItemClickListener {
public:
    explicit NEMeetingMenuItemClickListener() {}
    ~NEMeetingMenuItemClickListener() {}

    // 处理点击
    virtual void onInjectedMenuItemClick(const NEMeetingMenuItem& meeting_menu_item) {}
    // 处理点击,并回调状态变更
    virtual void onInjectedMenuItemClickEx(const NEMeetingMenuItem& meeting_menu_item, const NEInjectedMenuItemClickCallback& cb) {}
};

NEMeetingMenuItemClickListener listener;
// 注册监听
auto pMeetingSDK = NEMeetingKit::getInstance();
auto ipcMeetingService = pMeetingSDK->getMeetingService();
if (ipcMeetingService) {
    ipcMeetingService->setOnInjectedMenuItemClickListener(&listener);
}

相关参考

API 参考

会议组件 NEMeetingKit Windows&macOS 端的自定义菜单相关的关键类、接口和字段的介绍如下。

自定义菜单项相关

类/接口 描述
NEMenuVisibility 菜单项可见性的枚举值。
NEMeetingMenuItem 自定义菜单项的 UI 展示,包括菜单项的 ID 与菜单项可见性。

监听点击菜单项操作相关

类/接口 描述
NEMeetingOnInjectedMenuItemClickListener 菜单项点击事件监听基类。
onInjectedMenuItemClick 点击单状态菜单项时的描述信息。
onInjectedMenuItemClickEx 点击多状态菜单项时的描述信息,支持返回状态转移的回调。

菜单项注入相关

字段 说明
NEMeetingOptions#full_toolbar_menu_items_ 配置会议中Toolbar菜单的完整列表。
NEMeetingOptions#full_more_menu_items_ 配置会议中更多展开菜单的完整列表。

菜单图标规格说明

添加自定义菜单项时,建议图标资源的尺寸大小为 24px*24px。

SDK 内置菜单项

NEMeetingKit 目前内置了以下菜单项,您可根据需要调整内置菜单项的位置、标题、图标和可见性。

菜单项
菜单 ID
是否允许在Toolbar菜单中显示
是否允许在更多展开菜单中显示
音频 kMicMenuId
视频 kCameraMenuId
屏幕共享 kScreenShareMenuId
参会者 kParticipantsMenuId
管理参会者 kMangeParticipantsMenuId
邀请 kInviteMenuId
聊天 kChatMenuId
视图 kViewMenuId
白板 kWhiteboardMenuId
此文档是否对你有帮助?
有帮助
去反馈
  • 功能介绍
  • 注意事项
  • 配置 Toolbar 菜单列表
  • 配置更多展开菜单列表
  • 相关参考
  • API 参考
  • 自定义菜单项相关
  • 监听点击菜单项操作相关
  • 菜单项注入相关
  • 菜单图标规格说明
  • SDK 内置菜单项