3.6 KiB
3.6 KiB
小程序接口与 WebView 版本一致性方案
目标
- 小程序获取接口地址与 WebView 地址。
- 判断版本一致性与可用性。
- 不可用时提示用户退出小程序重新打开。
总体思路
采用“配置中心 + 启动校验 + 缓存兜底 + 失效提示”的方案:
- 小程序启动时请求配置中心接口获取最新配置。
- 校验小程序版本、API版本、WebView版本一致性。
- 校验失败则提示退出重启;通过则写入缓存并使用配置。
- 配置接口不可用时使用缓存,缓存失效则提示退出重启。
配置中心接口
- 方法:
GET - 路径:
/api/open/app/config
返回示例
{
"app": {
"minVersion": "1.2.0",
"latestVersion": "1.3.5",
"forceUpdate": true
},
"api": {
"baseUrl": "https://api.xxx.com",
"version": "2026-03-16",
"minClientVersion": "1.2.0"
},
"webview": {
"baseUrl": "https://m.xxx.com",
"version": "2026-03-16",
"minClientVersion": "1.2.0"
},
"ttlSeconds": 3600,
"disabled": false,
"disableReason": ""
}
字段说明
app.minVersion: 最低可用小程序版本。app.latestVersion: 最新版本号。app.forceUpdate: 是否强制更新。api.baseUrl: API 入口地址。api.version: API 版本号(用于一致性校验)。api.minClientVersion: API 允许的最小客户端版本。webview.baseUrl: WebView 入口地址。webview.version: WebView 版本号(用于一致性校验)。webview.minClientVersion: WebView 允许的最小客户端版本。ttlSeconds: 配置缓存有效期(秒)。disabled: 服务下线开关。disableReason: 下线原因。
小程序启动校验流程
- 小程序
App.onLaunch请求/api/open/app/config。 - 校验顺序:
disabled == true→ 提示“服务暂不可用,请退出小程序重新打开”。当前版本 < app.minVersion→ 提示强更并阻断。api.version != webview.version→ 提示“版本不一致,请退出小程序重新打开”。当前版本 < api.minClientVersion或当前版本 < webview.minClientVersion→ 提示强更。
- 校验通过:
- 缓存配置(本地
storage)。 - 全局设置 API baseUrl 与 WebView baseUrl。
- 缓存配置(本地
缓存与兜底策略
- 配置接口失败:
- 如果本地缓存存在且未过期 → 使用缓存。
- 若缓存过期或不存在 → 提示“配置获取失败,请退出小程序重新打开”。
提示文案建议
- 版本不一致:
- “当前版本不一致,请退出小程序并重新打开以获取最新配置。”
- 服务不可用:
- “服务暂不可用,请退出小程序重新打开。”
- 配置获取失败:
- “配置获取失败,请退出小程序重新打开。”
WebView 入口处理
- WebView URL 必须由配置中心下发,避免在客户端写死。
- 进入 WebView 前再次校验缓存是否过期;过期则重新拉取。
前端需要完成的部分
- 在
App.onLaunch拉取/api/open/app/config,并写入本地缓存。 - 实现版本校验逻辑(
app.minVersion、api.version、webview.version、minClientVersion)。 - 校验失败时弹窗提示,并引导退出小程序重新打开。
- 缓存过期或接口失败时,优先使用缓存;无缓存则提示退出。
- WebView 入口统一从配置下发的
webview.baseUrl拼接跳转。 - 请求 API 时统一使用配置下发的
api.baseUrl。
可选扩展
- 灰度策略:按用户或设备下发不同配置。
- 公告字段:返回
notice用于维护提示。