阅读(3969) (0)

字节跳动小程序开发API UpdateManager

2019-08-12 16:14:05 更新

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

小程序运行机制


前台/后台状态

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

小程序启动

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

更新

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

输入


无输入

输出


返回全局唯一的UpdateManager对象。

方法列表


updateManager.onCheckForUpdate(callback)

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

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

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

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: '更新失败,下次启动继续...'
  });
});