更新记录

1.0.3(2023-01-07)

已过时

1.0.4(2023-01-07)

nothing


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
× × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

【已过时,项目最后更新于2019】

pure-updater

一个可以用的app更新模板

经测试可支持 Android 9.0 已支持热更新 已支持静默的强制更新


已测试

  • android 8.0 (AVD) 正常可安装更新
  • android 9.0 (真机) 正常可安装更新

Version: 1.0.3

模拟请求数据来自 Easy Mock

用到的模拟的接口:

1.检查版本号(静默强制更新) getVersionID

2.检查版本号(正常更新) getVersionID

3.拉取版本信息 getVersionInfo

  • 注:默认使用1.检查版本号(静默强制更新)接口,若要改为正常更新,请手动于common/checkUpdater.js中修改第一个requesturl

  • 测试静默强制更新还需将main.jscurrentVersionid改为1003,因为插件下载来默认是1004最新版本的


2019.03.27 更新

  • 支持静默强制更新,详情看说明
  • 支持苹果wgt热更新,但因无相关环境,未测试
  • 修复1.0.2版本bug:热更新判断中的错别字,导致.apk被判断为.wgt

2019.03.24 更新

  • 下拉刷新更新信息
  • 支持热更新,详情请看说明

说明

  • 支持wgt格式热更新,能自动判断所下载更新包的文件后缀

  • 支持安装更新后,app再次启动时删除更新安装包

  • 监控用户是否有完成更新安装

  • 静默强制更新已安排上

静默强制更新:三步走

1.要进行强制更新的测试,请先将main.js的currentVersion中的id改为1003(服务器最新版本为1004,当前的版本id改低以触发更新) 2.且common/checkUpdater.js中第一个requesturl需使用上文提到的该接口:1.检查版本号(静默强制更新)


  • 第一次启动:应用载入时获取更新信息,如果request取得的信息中,method内容为force,则直接在后台下载更新资源,并写入缓存

  • 第二次启动:应用载入时安装上次下载的更新资源,并提示用户重启应用(实际上这里已经安装完毕,重启是刷新应用)

  • 第三次启动:应用载入时删除更新包释放空间,整个静默强制更新过程完成


1.静默强制更新一般适用于.wgt热更新包,并未加入其它格式更新包的支持 2.苹果官方禁止这种更新方式,所以请灵活使用 3.如果iosLink不是wgt的下载链接,即便force标记为true也不会进行静默强制更新


热更新:请于HBuilderX菜单栏 - 发行 - 制作移动App资源升级包,打包成wgt格式的更新包并上传到服务器,即可进行热更新(大型更新还请使用apk整包更新)

1.当前的HBuilderX中没有REQUEST_INSTALL_PACKAGES权限,请手动(json源码视图)在manifest.json中添加权限 2.如果使用HBuilderX修改(勾选)过其它的permissions项,会让REQUEST_INSTALL_PACKAGES权限消失,请再次手动添加 3.高版本安卓一定要手动设置targetSdkVersionREQUEST_INSTALL_PACKAGES权限,否则不能正常安装

  • 要进行强制更新的测试,请先将main.js的currentVersion中的id改为1003(服务器最新版本为1004,当前的版本id改低以触发更新)
  • common/checkUpdater.js中第一个requesturl需使用上文提到的该接口:1.检查版本号(静默强制更新)

以下页面

App.vue

  • app 加载时检测更新

main.js

  • prototype 里面放了currentVersion,全局可获取当前的版本信息

for Android >= 8.0

manifest.json

  • permissions 中加入了权限<uses-permissionandroid:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/> 以适配 Android9.0
  • 同时修改了 targetSdkVersion26 以适配 Android 9.0

嗯?

  • 更新页面,我下载好了安装包,也点击安装了,但是一回到app就会显示Modal:安装被取消?
  • 这是因为真正的更新应该是覆盖安装的,你不可能直接回到app,除非你进行的不是覆盖安装
  • 用这个逻辑判断用户是否在安装包下载完成后安装了更新
  • 为什么我在调试过程中每次(刷新)启动应用都触发了更新?
  • 为了演示静默强制热更新,服务器端返回的的最新版本id为1004,而本插件的版本id为1003,所以会触发更新
  • 如果不想触发更新,可以在main.jscurrentVersion中的id改为1004

下载1.0.2版本的朋友请下载1.0.3,因为在1.0.2版本上有个bug……

应该,没什么了,吧

2019年3月27日

隐私、权限声明

1. 本插件需要申请的系统权限列表:

手机存储

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

更新记录缓存

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问