codecamp

tt.getUpdateManager

基础库 1.9.0 开始支持本方法。


UpdateManager tt.getUpdateManager()

获取全局唯一的版本更新管理器,用于管理小程序更新。

::: tip 提示 请在小程序启动时执行,否则可能无法及时获取更新状态 :::


小程序运行机制

前台/后台状态

当用户点击右上角胶囊按钮关闭小程序,或者按了设备 Home 键离开时,小程序并没有直接销毁,而是进入了后台状态; 当用户再次进入宿主或再次打开小程序,小程序又会从后台进入前台。 小程序在后台停留超过 5 分钟会被主动销毁。

小程序启动

小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」: 冷启动:用户首次打开或小程序被主动销毁(后台 5 分钟)后再次打开的情况,此时小程序需要重新加载启动,即冷启动。 热启动:非冷启动打开小程序的情况即热启动。 小程序没有重启的概念,所谓的重启即先主动销毁后冷启动打开。

更新

小程序每次冷启动时,都会优先使用本地已经缓存的程序包启动小程序。同时异步检查是否有更新版本。如果发现有新版本,将会异步下载新版本的代码包。因此新的代码包默认是在下一次冷启动时才会应用。如果需要在发布后马上应用最新版本,可以使用 getUpdateManager。


输入

无输入


输出

返回全局唯一的 UpdateManager 对象。


方法列表

updateManager.onCheckForUpdate(callback)

监听向小程序服务请求检查更新结果事件。该方法会在小程序冷启动时自动检查更新。

该方法的唯一参数callback是一个function类型的回调方法,该回调方法会有一个object类型的实参,具体包括的属性如下

属性类型描述
hasUpdateboolean是否需要更新

updateManager.onUpdateReady(callback)

当前小程序存在更新包,且更新包异步下载成功后的回调。

该方法的唯一参数callback是一个function类型的回调方法,该回调方法无实参。

updateManager.onUpdateFailed(callback)

当前小程序存在更新包,但更新包异步下载失败时的回调。

该方法的唯一参数callback是一个function类型的回调方法,该回调方法无实参。

updateManager.applyUpdate()

强制小程序重启并使用新版本。在小程序新版本下载完成后(即收到onUpdateReady回调)调用。


代码示例

const updateManager = tt.getUpdateManager();

updateManager.onCheckForUpdate(function(res) {
  // 请求完新版本信息的回调
  console.log("onCheckForUpdate", res.hasUpdate);
  if (res.hasUpdate) {
    tt.showToast({
      title: "即将有更新请留意"
    });
  }
});

updateManager.onUpdateReady(() => {
  tt.showModal({
    title: "更新提示",
    content: "新版本已经准备好,是否立即使用?",
    success: function(res) {
      if (res.confirm) {
        // 调用 applyUpdate 应用新版本并重启
        updateManager.applyUpdate();
      } else {
        tt.showToast({
          icon: "none",
          title: "小程序下一次「冷启动」时会使用新版本"
        });
      }
    }
  });
});

updateManager.onUpdateFailed(() => {
  tt.showToast({
    title: "更新失败,下次启动继续..."
  });
});


Worker.terminate
UpdateManager
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

无标题目录

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题文章

无标题目录

无标题文章

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }