1、总体流程
APP开发完成后将打包的apk文件以及当前APP版本号提交并且保存至后台的版本控制页面(需要新增),此时最新版本已经存储在我们的后台,当用户登录APP时,调用接口获取最新版本的信息(包括:版本号、版本发布时间、安装包下载链接等信息),检查当前版本号与最新版本号是否相符,如果检查到用户当前版本不是最新版本将弹出下载提示框,此时通过我们之前获取的下载链接进行下载并且安装。
后端需要提供 版本列表接口(后台管理系统查看历代版本)、版本发布接口(提交版本编辑各类版本信息)、版本检查接口(移动端调取获取最新版本信息进行对比)
前端需要添加 PC端版本管理页面(增删改查)、移动端编辑弹出框对用户进行提示,调用版本详情接口进行对比并且进行下载
图片示例:
2、前端部分
a.参考文档:
使用uniapp开发APP实现版本更新并安装_uniapp 版本更新_WeiflR10的博客-CSDN博客
uniapp实现app自动检测更新_uniapp检测更新_浮桥的博客-CSDN博客
uniapp之app自动更新_uniapp app更新_赵啸林的博客-CSDN博客
【Uniapp】Uniapp 实现 App 版本自动升级_51CTO博客_uniapp更新版本
b.工作流程:
1、封装更新版本提示框
2、用户登录时调用版本检查接口获取最新版本信息(此接口由后端提供,用于获取版本信息,例如:版本号、
版本下载链接、版本更新内容)
3、调用官方提供API获取当前使用版本的版本号(以下为多个本地版本获取方法未经测试)
// 获取本地版本信息
plus.runtime.getProperty(plus.runtime.appid, (info) => {
uni.setStorageSync('version', info.version)
})
// 每一个应用都有自己的版本号,为了准确的下载更新包,首先需要获取当前应用的版本信息。通过使用uni-app插件App,可以获得应用当前的版本号。
const App = uni.requireNativePlugin('App');
let version = '';
App.getVersionName(function (data) {
version = data.versionName;
})
4、对比两个版本号,查看当前版本是否为最新版本,如果为最新版本用户即可继续进行操作,如果检测结果不是最新版本我们弹出提示框提示用户可以进行更新,当用户点击更新按钮,调用官方的下载接口,将我们获取版本信息中下载链接填入接口中,下载成功之后安装重启
doUpData(Url) {
uni.showLoading({
title: '更新中……'
});
const downloadTask = uni.downloadFile({
//执行下载
url: Url, //下载地址
timeout: 1000 * 30, //30秒超时时间
success: downloadResult => {
//下载成功
console.log(downloadResult);
this.showdownLine = false;
uni.hideLoading();
if (downloadResult.statusCode == 200) {
plus.runtime.install(
//安装软件
downloadResult.tempFilePath,
{
force: true
},
function(res) {
plus.runtime.restart();
}
);
}
},
fail: err => {
uni.hideLoading();
this.showdownLine = false;
this.$u.toast(err.errMsg);
console.log(err);
},
complete: com => {
console.log(com);
}
});
}
5、后台管理系统添加APP版本管理页面(用于展示应用名称、发布平台、更新内容、版本号、上传的APK文件以及APK文件的下载链接)
6、新增,编辑 APP版本 上传APK文件 编辑应用名称,发布平台,更新内容等信息
3、后端部分
a.参考文档:
服务器上传apk包,生成访问链接_apk链接_cfy_wyl的博客-CSDN博客
b.工作流程:
1、展示APP版本列表(增删改查)
2、保存用户编辑的版本信息 --- 增
3、提供上传文件接口,用于上传APK文件,返回值为:
{
code: 0 ,
url:'https://xxx.com/xxx.apk',
msg:"success"
}
4、移动端调用检查版本接口返回最新版本信息,返回值为:
{
code: 0 ,
data:{
name:'xxxAPP',
version:'1.1.1',
platform:'Android',
content:'修改bug',
updateTime:'',
downloadPath:'https://xxx.com/xxx.apk'
...
},
msg:"success"
}