Prefácio:
O que queremos alcançar é que, depois que o usuário entrar na página inicial do apk, compare a versão apk da máquina nativa do Android com a versão apk mais recente. 0.0), o número da versão mais recente é 102 (v1.0.2) e solicite a atualização) Para solicitar que o usuário atualize, clique no botão atualizar para baixar o apk mais recente e instalar a experiência! No momento, isso é apenas para apk (aplicativo leve do Android, porque não há certificado oficial do Android, não há como lançá-lo no mercado de aplicativos Android, mas o apk lançado também pode ser experimentado e usado no Android com serviços de interface online , clique no link de download pela primeira vez ou adicione o link de download ao código QR do forage para digitalizar o código para download, lembre-se de fazer o download com um navegador!!!)
texto:
1. Verificação e solicitação da versão da página inicial
Primeiro, depois que o uniapp pular a página de login ou a página de login de autorização, ele entrará na página inicial. Podemos escrever prompts relevantes para verificar o número da versão no App.vue.
<script>
export default {
// 此处globalData为了演示其作用,不是uView框架的一部分
data() {
return {
version: 100, //注意你在uniapp中打包(原生app-云打包)时候的初始版本号
}
},
methods: {
androidCheckUpdate() {
let _this = this;
uni.request({
url: 'https://errong.com/smartAppversion.json?_t='+ new Date().getTime(), //这个是把你apk部署外网服务器的tomcat能访问下载的地址,具体你根据自己的来,然后smartAppversion.json是存放你最新版本好的下载地址啥的和apk关联起来,下面我会展示出代码
data: {},
header: {},
success: (res) => {
if (res.data.code === 0) {
if (res.data.version > _this.version) { // 如果最新版本大于现在已经安装的App的版本
// 新建下载任务
var dtask = plus.downloader.createDownload(res.data.url, {
force: true
}, function(d, status) {
// 下载完成
if (status == 200) {
uni.showModal({
title: '下载完成,即将安装',
showCancel: false,
success: () => {
// 由于install只能安装本地的地址,所以先把下载的地址在本地找到,再调用install
plus.runtime.install(plus.io
.convertLocalFilesSystemURL(d
.filename), {},
function() {
console.log('success');
plus.runtime
.restart(); // 安装成功后重启
},
function(error) {
console.log(error.message);
uni.showToast({
title: "安装失败",
duration: 1500
})
})
}
})
} else {
uni.showToast({
title: '更新失败',
duration: 1500
})
}
})
dtask.start();
} else {
//如果是最新版本了,进入首页就会提示一下,建议屏蔽掉
uni.showModal({
title: '当前已是最新版本',
showCancel: false
})
}
}
}
})
}
},
onLaunch() {
// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
this.version = wgtinfo.versionCode;
})
this.androidCheckUpdate(); // app中检测版本更新
// #endif
// 1.1.0版本之前关于http拦截器代码,已平滑移动到/common/http.interceptor.js中
// 注意,需要在/main.js中实例化Vue之后引入如下(详见文档说明):
// import httpInterceptor from '@/common/http.interceptor.js'
// Vue.use(httpInterceptor, app)
// process.env.VUE_APP_PLATFORM 为通过js判断平台名称的方法,结果分别如下:
/**
* h5,app-plus(nvue下也为app-plus),mp-weixin,mp-alipay......
*/
}
}
</script>
2. Clique no botão atualizar para verificar a versão e baixar o apk atualizado
Isso visa saber se a versão local é a versão mais recente quando o usuário clica no botão. Se for, não fará o download da versão mais recente e solicitará que sua versão já seja a mais recente; se não for, fará o download e a instalação e atualize seu aplicativo local Android!
Você pode adicionar um botão à minha página de informações para verificar e atualizar a versão antiga, o que não é necessário no miniaplicativo WeChat:
<!-- #ifdef APP-PLUS -->
<div class="section" @click="handleCheckVersion">
<div>
<u-icon name="checkmark-circle-fill" size="20" style="margin-right: 5px;"></u-icon>检查更新
</div>
<span><u-loading v-if="isCheckVersion" mode="flower"></u-loading></span>
</div>
<!-- #endif -->
Então:
<script>
export default {
data() {
return {
innerVer: null,
version: null,
isCheckVersion: false,
}
},
methods: {
// 检查版本更新
handleCheckVersion() {
let _this = this;
// #ifdef APP-PLUS
_this.isCheckVersion = true;
plus.screen.lockOrientation('portrait-primary') // 竖屏锁定
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
_this.innerVer = widgetInfo.version;
_this.version = widgetInfo.versionCode;
uni.request({
url: 'https://errong.com/smartAppversion.json?_t='+ new Date().getTime(), //版本检测
data: {},
header: {},
success: (result) => {
if (result.data.code === 0) {
setTimeout(() => {
_this.isCheckVersion = false;
}, 1000);
console.log(result.data.version,_this.version);
if (result.data.version - _this.version > 0) { // 如果最新版本大于现在已经安装的App的版本
uni.showModal({
title: "更新提示",
content: "发现新版本,请确认下载更新?",
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '更新中...'
});
uni.downloadFile({
url: result.data.url,
success: (downloadResult) => {
uni.hideLoading();
if (downloadResult.statusCode === 200) {
plus.runtime.install(downloadResult.tempFilePath, {
force: true
}, function() {
console.log('App安装成功!');
uni.showToast('App安装成功!', 'success');
plus.runtime.restart();
}, function(e) {
console.log('App安装失败!');
})
}
}
});
}
}
})
} else {
_this.$showToast("当前已是最新版本V" + _this.innerVer, "none");
}
}
}
})
})
// #endif
},
},
}
</script>
3. Arquivo de implantação do Tomcat no servidor
O endereço de download do tomcat é inserido diretamente nesses dois arquivos no mesmo nível: android_smartAppV1.0.apk, smartAppversion.json (mantenha a consistência com o código anterior)
O código do arquivo json é o seguinte:
{
"code": 0,
"msg": "success",
"version": 206,
"url": "https://errong.com/android_smartAppV1.0.apk"
}
O texto acima é sobre como verificar se há atualizações no apk Android do uniapp! Se achar útil, pode seguir + curtir + marcar!