与融云桌面端方案对齐

口径说明

融云公开文档不覆盖 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`,拖入 Applicationselectron-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 绑定,本文档分区届时会新增对应页面。