传统原生App的更新是要经历较长时间的下载和安装过程的。
所以很多用户干脆不更新app,任由更新角标放着。
流应用下没有这些问题,用户无需触发更新操作,总能使用到最新版。
流应用不需要平时在后台处理更新,而是在启动流应用时进行更新检查。
流应用除了能流式下载,自然也能流式更新,并且这种更新是差量更新。
如果你的app工程里有100个文件,其中5个文件变化了,那么流应用平台会自动识别并只更新这5个文件。
当流应用启动时,会向流应用服务器发起更新检测请求,如果服务器版本有更新则会下载更新包(使用差量更新技术),更新包下载完成后则执行更新操作。
流应用有多种更新模式可选。
开发者在HBuilder里提交流应用时,可以配置更新模式,不同的更新模式有不同的效果。
HBuilder里更新流应用时,可以选择更新模式:
默认模式(Android平台提示用户是否重启升级,iOS平台不提示,下次启动升级)
应用升级时弹出提示框,5秒后自动关闭,效果如下:
顶部“重启”、“忽略”按钮点击后的作用如下:
- 重启:立即更新应用并重启生效。
- 忽略:不立即更新应用(此时仍然使用老版本),下次启动应用时自动更新。
实时更新当前应用
启动时检查到需要更新,立即更新应用,但是已经打开的html页面不会更新。
采用此模式应该注意以下问题:
- 应用已经打开页面不会更新,由于更新文件从网络下载,从而导致更新时机的不确定性,此时无法确定当前用户操作到具体的页面;
- 应用已经加载过的资源存在缓存,更新后无法立即生效,如js/css等,此时还是使用更新前内容;
- 新版本应用更新需删除老版本文件,可能导致老版本业务逻辑无法继续运行;
- 新版本应用更新中JS业务逻辑包含重大调整,可能会出现应用无法预期的状态(如新版本某些页面的js逻辑是认为首页一定会做某些操作,而旧版本首页如果没有这些操作,从而会进入不可预期的状态)。
这种更新模式虽然注意事项很多,但有2个适应场景: - 静态资源更新,即文字图片等非js逻辑,可以立即生效的体验要比重启生效更好。
- 追究极致的高级开发者在经过仔细测试后,也可更新js等逻辑。