跳到主要内容

H5 热更新

Alphio 移动 App 内嵌一个 H5(Web)层,它的 UI 更新可以 无需 App Store / Play Store 审核 就发布。


1. H5 层是什么

iOS / Android 原生 App 是 两层结构

  • 原生壳(Flutter / 平台代码)—— 负责底层:Push token、生物识别、Deep Link、IAP、硬件集成。
  • H5 层apps/h5 —— 与服务于 m.alphio.ai 同一份 Vite + React 代码)—— 在内嵌 WebView 中渲染绝大多数用户面屏。

你点 Tab、打开页面时看到的,通常就是原生壳内嵌的 H5 层。但你感知不到 —— 看起来像原生,外层套着原生导航和手势。


2. 为什么要热更新

走 App Store / Play Store 发版有两个成本:

  • 审核延迟 —— 通常数小时到数天。
  • 用户更新延迟 —— 用户按自己节奏升级;有些永远不升级。

把业务逻辑放在 H5 层,Alphio 可以:

  • 数小时内修复 bug,而不是数天。
  • 立刻对所有人 改 Feature Flag。
  • 回滚问题版本 只需回滚 H5 包,无需用户卸载重装原生 App。

只有真正的原生改动(新 SDK、新权限、新 Push 集成)才需要发原生壳。


3. 更新何时生效

更新流程每次启动 App 都跑:

  1. App 打开 —— 原生壳拉 H5 manifest(/v1/dashboard/h5/manifest)。
  2. 比对版本 —— 如有新版本,壳 后台下载新包
  3. 暂存 —— 新包落本地但不激活,当前会话继续用旧包。
  4. 下次冷启动激活 —— 下次冷启动 App 时新包生效。

实际效果:新 H5 版本通常在 App 启动后约 5 分钟内可用(下载完后下一次启动即生效)。


4. 用户感受

热更新设计为无感

  • 不会提示重启 —— App 不会打断你装更新。
  • 没有 "正在下载更新" 屏 —— 包是后台拉的。
  • 不丢数据 —— 隐式重载前的会话状态保留。

唯一可见的信号是:下次重新打开 App 时,可能看到新 UI 或修好的行为。不会有通知步骤


5. 原生 vs H5 的能力归属

归它管
原生壳Push 注册、生物识别、Deep Link 路由、IAP、App 级权限、内嵌 WebView 自身
H5 层所有业务逻辑:Chat、自选股、Signals 产品、Trade 轨道、账户页、设置、告警偏好

经验法则:手机浏览器上 m.alphio.ai 能做的,原生 App 里同一份代码通过 H5 层也能做。需要 OS 级集成(Face ID、Push 权限流、IAP 收据校验)的则由原生壳处理,并通过桥给 H5 调用。


6. 强制刷新

如果你想 马上拿到最新 H5 包(不等下一次冷启动):

  1. 彻底杀掉 App(在 iOS / Android 的最近任务里上划掉,不只是切后台)。
  2. 重新打开。

重启会再走一遍 manifest 检查,已暂存的包被激活,你就是最新版本了。

如果强刷之后还看不到预期改动,可能是 H5 灰度发布尚未到达你的账号(通过 Feature Flag 灰度)。见 权益


H5 热更新流程


Agent Instructions: Querying This Documentation

If you need information not on this page, you can query the docs dynamically by sending a GET request with the ask query parameter:

GET https://docs.alphio.ai/zh/mobile/h5-hot-update.md?ask=<question>

The question should be specific, self-contained, and written in natural language. The response includes a direct answer plus relevant excerpts and sources.