uniappはAPPをパックして、パッケージ全体の更新またはアプリケーションのホットアップデートを実現します

アイデア:

1. まず、サイレント更新、弱い更新、強制更新の違いを理解する必要があります。

APP アップデートのメカニズム - サイレント アップデート、弱いアップデート、強力なアップデート - について知っておく

2. 次に、さまざまな更新方法で使用されるプラグインを理解する必要があります ---------- ここでは、プラグイン アプリケーション マーケットで推奨されているプラ​​グインを紹介します。

アプリのアップグレード、パッケージのアップデート、ホット アップデートのコンポーネントは vue3 をサポート、Android および Apple アプリケーション マーケットの開設をサポート、wgt サイレント アップデート - DCloud プラグイン マーケットをサポート

3. 通常、各 APP は自動的にリリースされ、バックグラウンド管理システムには通常、APP 情報を配置するためのメニューがあります。

4. 最後に、バックエンドと通信して APP 情報を返します。フロントエンドは、個々のニーズに応じて APP.vue ファイル内で動作します。

知らせ:

1. プラグイン マーケットのドキュメントを注意深く読んでください。これは非常に信頼性があります。

2. wgt ホット アップデートの場合、ダウンロード アドレスは wgt で終わる必要があります。そうでない場合は、エラーが表示されます。パッケージ全体を更新する場合、Android は apk で終わる URL である必要があります。それ以外の場合は、ブラウザーにスキップしてダウンロードします。

3. バックエンドによって返される形式とフィールドは、コンポーネント内の形式とフィールドと一致している必要があることが特に強調されます。

作業手順

1. まずプラグイン マーケットに参入し、このプラグインをプロジェクトにインポートします。(プラグインをインポートするときに、ページを登録するかどうかのプロンプトが表示されます。はいを選択しますが、最初の項目にはできません)

 2. 次に、App.vue ファイルで初期化情報を構成します。

 3. ここでは、シミュレートされたインターフェイス データをテストに使用します。---後の段階では、バックエンドから返されたデータに置き換える必要があります

updateAPPTest() {
				//#ifdef APP-PLUS
				// 获取本地应用资源版本号
				plus.runtime.getProperty(plus.runtime.appid, (inf) => {
					//获取服务器的版本号
					const data = {
						// 版本更新内容 支持<br>自动换行
						describe: '1. 修复已知问题 <br/> 2. 优化用户体验1 ',
						edition_url: 'http://192.1.1.48:80/sc.apk', //apk、wgt包下载地址或者应用市场地址  安卓应用市场 market://details?id=xxxx 苹果store itms-apps://itunes.apple.com/cn/app/xxxxxx
						edition_force: 0, //是否强制更新 0代表否 1代表是
						package_type: 0, //0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级
						edition_issue: 1, //是否发行  0否 1是 为了控制上架应用市场审核时不能弹出热更新框
						edition_number: 101, //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
						edition_name: '1.0.1', // 版本名称 manifest里的版本名称
						edition_silence: 0, // 是否静默更新 0代表否 1代表是
					}
					//res.data.xxx根据后台返回的数据决定(我这里后端返回的是data),所以是res.data.data 
					//判断后台返回版本号是否大于当前应用版本号 && 是否发行 (上架应用市场时一定不能弹出更新提示)
					if (Number(data.edition_number) > Number(inf.versionCode) && data.edition_issue == 1) {
						console.log('找到新版本')
						//如果是wgt升级,并且是静默更新 (注意!!! 如果是手动检查新版本,就不用判断静默更新,请直接跳转更新页,不然点击检查新版本后会没反应)
						if (data.package_type == 1 && data.edition_silence ==
							1) {
							//调用静默更新方法 传入下载地址
							silenceUpdate(data.edition_url)
						} else {
							//跳转更新页面 (注意!!!如果pages.json第一页的代码里有一打开就跳转其他页面的操作,下面这行代码最好写在setTimeout里面设置延时3到5秒再执行)
							uni.navigateTo({
								url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update?obj=' +
									JSON.stringify(data)
							});
						}
					} else {
						console.log('已经是最新版本了')
						
						// 如果是手动检查新版本 需开启以下注释
						uni.showModal({
							title: '提示',
							content: '已是最新版本',
							showCancel: false
						})
					}

				});

				//#endif    
			},

バックエンドから返されるフィールド結果情報に注意してください。

data:{
    // 版本更新内容 支持<br>自动换行
    describe: '1. 修复已知问题<br>
                2. 优化用户体验', 
    edition_url: '', //apk、wgt包下载地址或者应用市场地址  安卓应用市场 market://details?id=xxxx 苹果store itms-apps://itunes.apple.com/cn/app/xxxxxx
    edition_force: 0, //是否强制更新 0代表否 1代表是
    package_type: 1, //0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级
    edition_issue:1, //是否发行  0否 1是 为了控制上架应用市场审核时不能弹出热更新框
    edition_number:100, //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
    edition_name:'1.0.0',// 版本名称 manifest里的版本名称
    edition_silence:0, // 是否静默更新 0代表否 1代表是
}

4. 導入効果を確認します(アプリ内 Android パッケージのアップデートはこちら)

 

 

おすすめ

転載: blog.csdn.net/weixin_53339757/article/details/131678190