HeimLink 锐同小程序:按产品选择、跟随渠道更新
每个产品在产品契约里用 appletId 指定一个锐同小程序(设备控制界面)。App 跟随发布渠道更新小程序,渠道回退时也会跟着装回较早的版本;随 App 打包的内置副本只作兜底。更新入口在设备设置页的「小程序」分组。
三条规则
- 按产品选择:用哪个小程序只看产品的
appletId,品类只是分类标签;多个产品可以共用一个小程序。 - 跟随渠道:渠道版本与已下载的版本不同就下载,更高或更低都下载。出了问题,把渠道指回上一个可用版本,已装上坏版本的设备就会换回去。
- 内置只兜底:有可用的已下载副本就运行它,否则运行内置副本,内置版本不参与比较。
设备设置页的「小程序」分组
原生设备设置页,控制界面右上角的齿轮进入
下面三张是界面示意。测试机 Nokia X6 截取 HeimLink 画面只得到黑屏,所以按真机导出的界面文字和 App 源码里的样式还原:第二张的文字取自真机当前画面;另外两张按 App 的中文文案和显示格式还原,其中的时间只是示例。
渠道有新版本时
小程序
Thermostat1.2.0 · 内置
自动更新
上次检查22:40 · 可安装 1.2.1
渠道stable ›
更新到 1.2.1
更新对使用此小程序的所有设备生效。
安装完成后(真机当前画面)
小程序
Thermostat1.2.1 · 已下载
自动更新
上次检查下午10:49 · 已安装 1.2.1
渠道stable ›
检查更新
更新对使用此小程序的所有设备生效。
发布方把渠道退回较早版本时
小程序
Thermostat1.2.1 · 已下载
自动更新
上次检查23:05 · 可安装 1.2.0
渠道stable ›
安装 1.2.0
发布方已将此渠道退回到较早的版本。
更新对使用此小程序的所有设备生效。
- 「自动更新」开关按小程序保存,默认开启;同一个小程序只有一个开关,在任何一台使用它的设备上切换都对所有设备生效。
- 「渠道」一行只在开发者选项解锁后显示,点按在 stable、beta、dev 之间切换;开发者选项锁上时一律按 stable。
- 「上次检查」:check 返回 404 时显示「该渠道没有可用版本」;修复分支
bugfix/applet-check-http-error合入后,其他 HTTP 错误显示「检查失败(HTTP 状态码)」。 - 产品没有指定小程序时,这一组只显示「该产品暂无小程序。」。
控制界面:内置 1.2.0 与下载的 1.2.1
用浏览器直接渲染两个小程序包里的页面文件
1.2.1 是为这次验证做的测试包:页面顶部加了红色斜纹色条「测试版 1.2.1 · 从 Console 下载」,表盘强调色改为红到琥珀。手动更新完成后返回设备页,立刻显示新版本;后台自动下载的版本在下次进入设备页时生效,不会在使用中途切换。
App 侧规则
对应 App 源码 src/features/devices/built-in-web-apps/
| 选择小程序 | 按已认证产品契约的 appletId。产品没有 appletId,或指定的小程序既没内置也没下载时,设备页显示「该产品暂无小程序」。 |
| 运行哪份副本 | 已下载副本通过结构检查(平铺文件名、manifest、id 一致、路由文件齐全)就运行它,否则运行内置副本。 |
| 是否下载 | 渠道版本与已下载版本不同就下载;没有已下载副本时,渠道里有任何版本都下载。渠道为空、404、离线时保持现状。不采用服务端的 updateAvailable。 |
| 自动检查 | App 冷启动和回到前台时,检查已保存设备用到的小程序;同一个小程序 6 小时内最多检查一次,从上次得到答复(渠道版本或 404)算起。 |
| 渠道 | 普通用户固定 stable;开发者选项解锁后可选 beta、dev,按小程序保存。 |
| 生效时机 | 手动更新后返回设备页立即生效;后台下载的版本在设备页下次变为活动时生效。 |
| 兼容旧版 App | 小程序不声明最低 App 版本,调用宿主不支持的接口会得到 NOT_SUPPORTED 或 NOT_PLANNED,小程序必须据此降级。 |
Console 上的效果
#94、#95 已上线;#96(先新建、再上传、小程序详情页)尚未合并,下面截图来自本机运行的 #96 预览
预览使用一次性数据库,不连接 Workbench 数据库;产品详情里的 rtitek-therm-01 是预览库自带的示例产品。
heimlink-thermostat 保留原 ID。app.json 的 id 必须是它);往下依次是基本信息、渠道、版本(「上传新版本」)、使用此小程序的产品、删除。heimlink-thermostat 的详情页:「使用此小程序的产品」列出引用它的产品(当前草稿或快照 rN),可点进产品详情;有产品引用时删除按钮禁用并写明原因。- 版本号只增(已上线):上传的新版本号必须高于这个小程序以前上传过的所有版本(含已删除的);「最新版本」按版本号排序。渠道仍可指回任意旧版本,用于回滚。
- 上传不改应用信息(#96):名称和品类标签只在管理页修改,上传包时不会被包里的内容覆盖。
发版前必须核对 stable 渠道
App 跟随渠道,没有已下载副本的 App 会下载渠道里的任何版本。发布新 App 前,每个内置小程序的 stable 必须指向本次 APK 内置的版本,否则新装 App 的设备会被渠道里的版本替换掉内置版本。
heimlink-thermostat:内置 1.2.0,stable 当前指向测试包 1.2.1,发版前要改。trv901z-valve:内置 0.2.0,stable 当前指向更旧的 0.1.1,发版前先上传 0.2.0 再指向它。