终端、设备与主题 SDK
先确定扩展运行在哪里。收银机属于登录终端,电视门店屏属于受控设备;给顾客屏换一套界面则是主题开发,不需要实现整个连接插件。
| 开发目标 | 契约 | 第一步 |
|---|---|---|
| 给 Foodiy 收银端增加连接能力 | FOH 的 FoodiyPlugin / PluginHost |
实现 initialize、start、invoke、stop;通过 requestId 关联调用结果。 |
| 控制局域网设备 / 让自己的设备受控 | SEG 的 ControllerClient / LanControlledEndpoint |
控制端发现并选择网关;受控端注册端点并回报实际执行结果。 |
| 给 Screen King 门店屏扩展功能 | Android screen-module 与宿主能力声明 |
为目标宿主声明必需能力,通过会话和请求 ID 处理异步回执;模块按官方签名 ZIP 分发。 |
| 改顾客屏购物车、结账与输入界面 | @foodiy/cds-theme-sdk,协议 cds-theme.v1 |
从已有 Vue 主题开始,使用只读状态及原生槽位,在浏览器预览后再打包。 |
示例:开发顾客屏主题
链接到「示例:开发顾客屏主题」- 在已有主题工程的
theme.json中设置主题 ID、版本、必需能力requires和可选能力optional。 - 在 Vue 入口通过
createTheme(...).mount()建立桥接,组件用useCds()读取状态。输入框、二维码与键盘用对应的CdsSlot留给宿主绘制;主题不接触明文输入或支付二维码内容。 - 在主题工程运行
npx vite,打开开发地址并加上/?cds-preview,用预览数据检查不同状态。使用cds-theme-pack生成文件清单和 ZIP,交给受信任的签名、分发流程。预览成功不等于宿主已安装。
连接与兼容性
链接到「连接与兼容性」SEG 的“已批准”表示取得准入凭据;收到有效状态和能力目录后,才可按目录操作。断线后重新读取设备状态,不自动重发结果未知的命令。
已有插件或主题按协议、能力、签名和文件完整性校验。不要仅凭目标版本号与已装版本号不同就强制更新,也不要以能打开预览代替真机能力检查。