与融云桌面端方案对齐
口径说明
融云公开文档不覆盖 macOS 原生 SDK 与桌面交付链(dmg / 代码签名 / 公证 / 分发 / Gatekeeper);本页为本项目按 Apple 与 Electron 官方实践补齐的接入文档。
融云桌面端(Windows / macOS / Linux)以 Electron 为官方方案:主进程承载通信与本地存储,渲染进程承载 UI,安装包按平台签名分发。本项目的 macOS 交付与之一致,并在文档上按“桌面端能力 + macOS 交付链”两层组织,避免把平台差异写成两套互不相干的 API。
对齐点
| 维度 | 融云桌面端方案 | 本项目 macOS 实现 |
|---|---|---|
| 运行时 | Electron(Chromium + Node.js) | Electron 35(内置 Node.js 22) |
| 进程模型 | 主进程通信 + 本地存储,渲染进程 UI | 主进程 IMLib + SQLite 单写者;preload 白名单;渲染进程薄代理 |
| 本地存储 | 本地数据库承载会话与历史消息,冷启动可离线展示 | 主进程 SQLite(可配置 `dbPath`),会话 / 消息 / 草稿 / 未读持久化 |
| UI 组件 | 会话列表、会话页、气泡、输入区等组件化交付 | SDK 不导出 UI 组件;宿主按 IDL 的 10 个 IMKit 组件契约(props / events / behaviors)自渲染 |
| 安装包 | macOS 用 `.dmg`,拖入 Applications | electron-builder 产出 `.app` + `.dmg`(x64 / arm64) |
| 签名与分发 | Developer ID + 公证,Gatekeeper 校验通过 | ad-hoc(本地)/ Developer ID + notarization(发布);分发与自动更新按需接入 |
| 多端同步 | 同一账号多端在线、离线补发 | 复用 IMLib 多端游标与离线补发语义(见多设备投递游标指南) |
为什么不是「另写一套 macOS SDK」
- 公开 API 只有一份:bindings.macos.inherits = electron,103 个语义操作与 10 个组件符号由同一份 IDL 生成,文档不会出现两套漂移签名。
- macOS 的差异集中在交付链:`.app` 目录结构、代码签名、公证、Gatekeeper、dmg 分发与更新;这些是平台工程问题,不是 API 问题。
- 因此本分区把 API 说明放在 IMLib / IMKit 页面(IDL 生成),把 mac 专属步骤放在构建、打包、签名、公证、分发、排障页面(命令可复制执行)。
与融云文档 IA 的对应
| 融云桌面端文档 | 本分区页面 |
|---|---|
| 桌面端快速开始 / 接入 | 快速开始、安装 |
| 进程模型与本地存储 | 架构、本地 SQLite |
| 打包与签名 | 构建、打包、签名、公证 |
| 分发与升级 | 分发、升级与兼容 |
| 排障 | Gatekeeper 排障、错误码 |
| API 参考 | API Reference(IDL 生成) |
取舍
macOS 暂无独立 UI 框架(AppKit / SwiftUI)绑定:桌面端统一走 Electron + IMKit,避免出现两套并行维护的 UI 实现。若未来需要原生外壳,可复用 IMLib 的 Native C ABI 绑定,本文档分区届时会新增对应页面。