uniapp WeChat ミニ プログラム: アップデート
ミニプログラム動作の仕組み - ミニプログラム起動
- コールド スタート: ユーザーが初めてアプレットを開いた場合、またはアプレットが破棄された後に再度アプレットを開いた場合、アプレットを再ロードして開始する (コールド スタート) 必要があります。
- ホットスタート: ユーザーがすでに小さなプログラムを開いていて、一定時間内にその小さなプログラムを再度開いた場合、この時点では小さなプログラムは破棄されませんが、このプロセスはバックグラウンド状態からフォアグラウンド状態に入ります。熱いスタート。
小さなプログラム更新メカニズム
- 起動時の同期更新
1.1. バージョンの更新を定期的に確認する: WeChat の実行中、最近使用したアプレットに更新があるかどうかを定期的に確認します。その場合は、次回起動するときに新しいバージョンを開いてください。
1.2. ユーザーがアプレットを長期間使用していない場合、バージョンの更新を同期的にチェックする必要があります。(新しいバージョンのダウンロードに失敗しました。ローカルの古いバージョンが引き続き使用されます) - 起動時の非同期更新
2.1. アプレットがコールドスタートされるたびに、更新されたバージョンがあるかどうかを非同期的にチェックします。新しいバージョンが見つかった場合、新しいバージョンのコード パッケージが非同期的にダウンロードされます。ただし、現在の起動ではクライアントのローカル コードの古いバージョンが引き続き使用されます。つまり、新しいバージョンのアプレットは次のコールド スタートアップまで使用されません。
したがって、私たちが対処しなければならないのは、热启动
更新を時々チェックし、更新がある場合は強制的に更新することです。onShow
ライフサイクル中に聞いてください。
uni.getUpdateManager
const updateManager = uni.getUpdateManager();
export default {
data() {
return {
}; },
onShow: function() {
// 当向小程序后台请求完新版本信息,会进行回调。res: {hasUpdate: true, version: 1.0.0}
updateManager.onCheckForUpdate(function (res) {
if (res.hasUpdate) {
// 有更新
uni.showLoading({
title:'更新中...'}); // 开始下载前,显示Loading
}
});
// 当新版本下载完成,会进行回调
updateManager.onUpdateReady(function () {
uni.hideLoading(); // 关闭 Loading
uni.showModal({
// 弹确认框(强制更新)
title:'更新提示',
content:'更新完毕,是否重启?',
success:function (res) {
if (res.confirm) {
updateManager.applyUpdate(); // 强制小程序重启并使用新版本。
}
}
})
});
// 当新版本下载失败,会进行回调
updateManager.onUpdateFailed(function () {
uni.hideLoading(); // 关闭 Loading
uni.showToast({
title:'更新失败,稍后再试...', icon:"error" });
});
},
methods: {
}
};
上記の外部コードで使用されている場合は、uni
WeChat アプレット プロジェクトで直接置き換えることができますwx
。
開発環境のデバッグ
- WeChat 開発者ツールでは、「コンパイル モード」の「次のコンパイル シミュレーション更新」のスイッチを介してデバッグできます。
- ミニプログラムの開発版/実験版には「バージョン」の概念がないため、開発版/実験版でのバージョン更新をテストすることはできません。