# Boom Electron SDK

## 简介

Boom Electron SDK 是一个基于 Electron 的桌面应用开发框架，提供了音视频会议、屏幕共享、白板等功能的集成解决方案。该 SDK 旨在简化开发者在 Electron 环境下构建高质量音视频应用的过程。

## 安装

### 前置条件

- Node.js 16.x 或更高版本
- npm 8.x 或更高版本
- Electron 18.x 或更高版本

### 安装方式

```bash
npm install @hysc/electron-sdk --save
```

或者使用 yarn：

```bash
yarn add @hysc/electron-sdk
```

## 快速开始

### 基本用法

```javascript
const { app, BrowserWindow } = require('electron');
const { BoomUISDK, RoomWindow } = require('@hysc/electron-sdk');

// 初始化 SDK
const boomSDK = new BoomUISDK({
  appId: 'YOUR_APP_ID',
  userId: 'userId'
});

// 创建主窗口
let mainWindow;

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 960,
    height: 655,
    resizable: true,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false
    }
  });
  
  mainWindow.loadURL('http://localhost:3000'); // 加载您的应用
}

app.whenReady().then(() => {
  createWindow();
  
  // 初始化会议窗口
  BoomUISDK.getInstance({
    appId: 'YOUR_APP_ID',
    userId: 'userId'
  }).initEvent();
});
```

### 会议功能

```javascript
// 创建会议窗口
const roomWindow = new RoomWindow({
  domain: 'http://your-meeting-url.com'
});

// 渲染进程 发送 window.electron?.ipcRenderer('joinBoomRoom', {url})


// 调整窗口大小
roomWindow.setBounds({
  width: 960,
  height: 655
});

// 关闭会议窗口
roomWindow.close();
```

## 主要功能

### RoomWindow 类

RoomWindow 类提供了会议窗口的创建和管理功能：

| 方法 | 描述 |
|------|------|
| `constructor({ domain })` | 创建会议窗口实例 |
| `setBounds(bounds, animate)` | 设置窗口大小和位置 |
| `close()` | 关闭会议窗口 |
| `isWindowShow()` | 检查窗口是否显示 |
| `createChatWindow(opt)` | 创建聊天窗口 |
| `createInviteWindow(opt)` | 创建邀请窗口 |
| `createUsersWindow(opt)` | 创建用户列表窗口 |

### BoomUISDK 类

BoomUISDK 类提供了 SDK 的核心功能：

| 方法 | 描述 |
|------|------|
| `constructor(options)` | 初始化 SDK |
| `init()` | 初始化 SDK 资源 |
| `destroy()` | 销毁 SDK 实例 |

## 注意事项

1. **窗口大小调整**：
   - Electron 对窗口大小调整有一些隐含的限制
   - 在调用 `setBounds` 方法前，确保窗口不处于最大化、最小化或全屏状态
   - Windows 和 macOS 平台的窗口大小可能略有不同，建议使用 `defaultWidth` 和 `defaultHeight` 属性

2. **资源清理**：
   - 在应用关闭前，确保调用 `close()` 方法清理所有资源
   - 特别是 IPC 事件监听器和定时器，这些如果不清理可能导致内存泄漏

3. **平台差异**：
   - Linux 平台上的透明窗口可能需要特殊处理
   - macOS 和 Windows 平台的窗口行为有所不同

## 示例项目

您可以在 `/electron-sample` 目录下找到一个完整的示例项目，展示了如何集成和使用 Boom Electron SDK。

## 故障排除

### 常见问题

1. **安装失败**：
   - 确保您有正确的 Node.js 和 npm 版本
   - 检查网络连接，确保可以访问 npm 仓库
   - 如果遇到 `install.js` 相关错误，请确保您的网络可以下载 ffmpeg 二进制文件

2. **窗口无法调整大小**：
   - 检查是否设置了 `resizable: true`
   - 确保窗口不处于最大化或全屏状态

3. **IPC 通信问题**：
   - 确保 `nodeIntegration: true` 和 `contextIsolation: false`
   - 检查 IPC 事件名称是否匹配
   - 在应用关闭时正确清理所有 IPC 事件监听器

## 版本历史

- **1.0.1-1.0.5**：初始版本，基础功能实现
- **1.0.6**：
  - 优化窗口管理
  - 修复 IPC 事件监听器清理问题
  - 添加 ffmpeg 下载进度显示
- **1.0.7**：
  - 修复窗口大小调整问题
  - 改进 BoomUISDK 接口，添加 appId 和 userId 参数
  - 优化 Linux 平台透明窗口支持
  - 移除开发调试代码

## 许可证

Copyright © 2025 HYSC Technology Co., Ltd.
