tt.getUpdateManager
基础库 1.9.0 开始支持本方法。
UpdateManager tt.getUpdateManager()
获取全局唯一的版本更新管理器,用于管理小程序更新。
::: tip 提示 请在小程序启动时执行,否则可能无法及时获取更新状态 :::
小程序运行机制
前台/后台状态
当用户点击右上角胶囊按钮关闭小程序,或者按了设备 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: "更新失败,下次启动继续..."
});
});
更多建议: