[toc]
版本检查
一、App的版本检查
1、流程图
图片来源于 版本检查.graffle
二、接口设计
公共参数详见:《基础规范-请求规范》 中的request公共入参保持一致
序号 | 标识 | 示例 | 描述 | 必传 | 用途 |
---|---|---|---|---|---|
1 | isManualCheck | true/false | 是否是手动检查更新 | 否 | 避免关闭后无法弹出 |
2 | callOwner | app、h5 | 调用者 | 否 | 不同调用者版本提示语可能不一致 |
三、JS方法提供
背景:一些新活动需要触发弹出新版本
序号 | js接口 | 描述 | 场景 |
---|---|---|---|
1 | h5CallBridgeAction_checkVersion | 检查更新 | |
2 | h5CallBridgeAction_updateVersion | 马上更新 | 更新弹窗h5游戏自定义不同的风格 |
二、版本修改
1、iOS版本设置
略
2、Android版本修改
进入bulid.gradle
文件,修改如下:
1 | flutterVersionName ="1."+new Date().format("MM.dd", TimeZone.getTimeZone("GMT+8:00")) |
3、Jenkins中的版本设置
进入Jenkins指定iOS项目的配置,修改
1 | VERSION=$(date "+%y.%m.%d") # 19.02.21 小y是19,大Y是2019 |
二、网页的版本检查/版本更新
以 https://www.google.com 为例,即访问google的时候,想要访问到最新的版本内容。
其他参考文章:
一、直接版本地址方案
有版本更新时候,接口直接返回最终的访问地址。形如:https://www.google.com/v10201000
缺点:
返回给app的地址得一直变化。
app中历史记录得做映射,不能直接保存网页地址。否则会出现点击了一个历史记录,发现之前的地址无法访问的问题。(为此,app就得通过类似id的方式,每次去向接口取最新的值)
退一步将每次获取改为切换前后台的时候,才去获取,也会出现有地址id,却出现通过id取接口失败的一些异常情况出现。
二、重定向方案
版本举例如下:
时间 | 发布的版本号 | 浏览器/客户端访问的【输入地址】 | 浏览器/客户端【访问的实际地址】 |
---|---|---|---|
10.20 10:00 | v10201000 | https://www.google.com | https://www.google.com/v10201000 |
10.24 10:00 | v10241000 | 同上 | https://www.google.com/v10241000 |
11.01 10:00 | V11011000 | 同上 | https://www.google.com/v10311000 |
11.01 12:00 | V11011200 | 同上 | https://www.google.com/v10311200 |
方案过程如下:
1、浏览器/客户端访问 https://www.google.com
2、https://www.google.com 所对应的网页 https://www.google.com/index.html 进行 check_version 接口请求
1 | 网页:https://www.google.com/index.html |
3、https://www.google.com/index.html 根据所得地址重定向
4、最终即看到的是用户在浏览器/客户端访问 https://www.google.com ,但实际上会访问最新的版本 https://www.google.com/v10241000/index.html 。
优点:
- 浏览器/客户端访问的【输入地址】版本变化时,也不用变化。
三、常见问题(FAQ)
问题1:访问google没看到变化的内容
1、无重定向时,即访问的地址是 https://www.google.com/v10201000
可能原因为:有缓存,需要在url后加参数 来刷缓存,形如: https://www.google.com/v10201000?refresh=123
2、有重定向时,即访问的地址一直是 https://www.google.com
可能原因为:https://www.google.com/index.html 没做重定向到最新的版本地址