「关于我们」页面新增检测更新入口 · iOS 平台命中新版本时跳转 App Store · 高保真原型 + 关键交互说明
用户入口 · 设置 → 关于我们 → 检测更新
GET /api/version/check?platform=ios¤t=260
v2.6.0 显示当前版本;服务端返回有新版本时显示 NEW 红角标
服务端 versionCode ≤ 客户端 · 居中 Toast 1.5s 自动消失
latest.versionCode ≤ current.versionCode
UIVisualEffectView,Android 用 Toast/自定义 Dialog
命中新版本 · 弹窗确认 → 打开 App Store
latest.versionCode > current.versionCode
data.releaseNotes[](数组,每行一条)
data.forceUpdate=true 时隐藏"稍后再说"按钮,弹窗不可关闭
UIApplication.shared.open(URL)
data.storeUrl(形如 itms-apps://apps.apple.com/app/idXXXXXXXXX)
用户入口 · 设置 → 关于我们 → 检测更新
GET /api/version/check?platform=android¤t=260
命中新版本 · Material 3 弹窗 · 点击立即下载
latest.versionCode > current.versionCode
forceUpdate=true 时隐藏「稍后再说」,弹窗不可关闭
FileProvider + Intent(ACTION_VIEW) 唤起系统安装器(Android 8+ 需 REQUEST_INSTALL_PACKAGES)
服务端 versionCode ≤ 客户端 · Material Snackbar 3s 自动消失
latest.versionCode ≤ current.versionCode
com.google.android.material.snackbar.Snackbar
LENGTH_LONG (3s),含「好的」action 可手动关闭
单一接口 GET /api/version/check · 根据 platform 与 versionCode 分支
GET /api/version/check
?platform=ios/android
¤t=260
请求参数:platform (ios/android)、current (当前 versionCode)、channel (可选灰度标识)
SELECT * FROM versions
WHERE platform=?
AND status='published'
ORDER BY version_code
DESC LIMIT 1
后台分设备类型维护:Android 走自托管 downloadUrl,iOS 走 App Store storeUrl
{
status: "update" | "latest",
data: {
versionName, versionCode,
size, releaseNotes[],
storeUrl | downloadUrl,
forceUpdate
}
}
status=latest → Toast(屏 2/已是最新);status=update → 弹窗(屏 3/A2)
if (status === 'latest') {
showToast()
} else {
showUpdateDialog()
if (platform === 'ios') {
open(storeUrl) // 屏 3
} else {
// 弹窗内显示下载进度,完成后点击「立即安装」唤起系统安装器
startForegroundDownload(downloadUrl)
then installWithFileProvider()
}
}
iOS 跳转 App Store;Android 弹窗内显示进度,下载完成后直接唤起系统安装