uniapp empacota o APP para realizar toda a atualização do pacote ou hot update no aplicativo

Ideias:

1. Em primeiro lugar, devemos entender a diferença entre atualização silenciosa, atualização fraca e atualização forçada.

Mecanismo de atualização de APP - atualização silenciosa, atualização fraca, atualização forte - Conheça

2. Em segundo lugar, precisamos entender os plug-ins usados ​​em diferentes métodos de atualização ---------- aqui estão os plug-ins recomendados no mercado de aplicativos de plug-in.

Atualização de aplicativo, atualização de pacote e componentes de atualização quente suportam vue3, suportam a abertura de mercados de aplicativos Android e Apple, atualização silenciosa wgt- mercado de plugins DCloud

3. De um modo geral, cada APP se libera.O sistema de gerenciamento de segundo plano geralmente possui um menu para colocar as informações do APP.

4. Por fim, comunique-se com o back-end para retornar as informações do APP e o front-end opera no arquivo APP.vue de acordo com as necessidades individuais.

Perceber:

1. Leia atentamente a documentação do mercado de plug-ins, é muito confiável.

2. Se for um wgt hot update, o endereço de download deve terminar com wgt, caso contrário, um erro será exibido. Se for todo o pacote de atualização do Android, deve ser a URL terminando em apk, caso contrário, ele pulará para o navegador para fazer o download.

3. É especialmente enfatizado que o formato e os campos retornados pelo back-end devem ser consistentes com os do componente.

Procedimentos operacionais

1. Primeiro, entre no mercado de plug-ins e importe-o para o projeto. ( Ao importar o plug-in, aparecerá uma pergunta se deseja registrar a página, escolha sim, mas não pode ser o primeiro item )

 2. Em segundo lugar, configure as informações de inicialização no arquivo App.vue.

 3. Aqui eu uso os dados da interface simulada para testar. ---Na fase posterior, ele precisa ser substituído pelos dados retornados pelo back-end

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    
			},

Preste atenção nas informações do resultado do campo retornadas pelo back-end:

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. Observe o efeito da implementação (aqui está a atualização do pacote Android no aplicativo)

 

 

Acho que você gosta

Origin blog.csdn.net/weixin_53339757/article/details/131678190
Recomendado
Clasificación