uni-app 小程序更新后强制用户升级

朱雀 2021-03-24 01:07 1201阅读 0赞

我们在 uni-app 开发小程序的时候,小程序更新版本后,由于小程序客户端是异步更新,新版本覆盖较慢。因此如果用户之前已经打开过该小程序,那么通过 热启动 再进入小程序时,可能访问的还是旧版本,需要一段时间才能更新。但是如果小程序存在严重 bug 需要用户强制升级,那该怎么办呢?办法总是有的,直接上代码:

在项目根路径下的 App.vue 文件 onLaunch 中增加如下代码:

  1. onLaunch: function() {
  2. // #ifdef MP
  3. this.mpUpdate()
  4. // #endif
  5. }
  6. methods: {
  7. mpUpdate() {
  8. const updateManager = uni.getUpdateManager() // 小程序版本更新管理器
  9. updateManager.onCheckForUpdate(res => { // 检测新版本后的回调
  10. if(res.hasUpdate) { // 如果有新版本提醒并进行强制升级
  11. uni.showModal({
  12. content: '发现新版本',
  13. showCancel: false,
  14. confirmText: '升级',
  15. success: res => {
  16. if (res.confirm) {
  17. updateManager.onUpdateReady(res => { // 新版本下载完成的回调
  18. updateManager.applyUpdate() // 强制当前小程序应用上新版本并重启
  19. })
  20. updateManager.onUpdateFailed(res => { // 新版本下载失败的回调
  21. // 新版本下载失败,提示用户删除后通过冷启动重新打开
  22. uni.showModal({
  23. content: '下载失败,请删除当前小程序后重新打开',
  24. showCancel: false,
  25. confirmText: '知道了'
  26. })
  27. })
  28. }
  29. }
  30. })
  31. }
  32. })
  33. }
  34. }

官方文档:
uni-app 小程序更新官方文档

小程序启动方式小贴士:

  • 冷启动:指用户首次打开或小程序被微信主动销毁后再次打开,此时小程序需要重新加载启动。
  • 热启动:指用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程并不会重新加载启动。

发表评论

表情:
评论列表 (有 0 条评论,1201人围观)

还没有评论,来说两句吧...

相关阅读