Ideias:
1. Em primeiro lugar, devemos entender a diferença entre atualização silenciosa, atualização fraca e atualização forçada.
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.
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)