uniapp热更新 版本不变,uniapp热更新不支持的情况
uniapp开发教程栏目分析APP升级的业务
UNI-APP开发(仿饿)开发课程:进入学习
推荐(免费):uniapp开发教程
第一、分析APP升级的业务
1.每次打开APP都需要在全局App.vue中查看请求的后台界面
2.通过对比版本号检查是否升级。
3.识别是热更新还是在线升级,处理不同的服务。热更新下载包使用官方api升级(根据实际界面返回字段判断)。
4.识别是强制升级还是非强制升级,子弹框提醒用户。
5.识别是IOS还是Android升级。用户点击跳转升级。
第二、编写代码
1.进入APP.vue onLaunch。
2.根据业务分析写升级代码。
//#ifdef APP-PLUS
APP检测和更新的具体打包流程请参考https://ask.dcloud.net.cn/article/35667。
plus.screen.lockOrientation(纵向-主要);//垂直屏幕锁定在正方向
//获取是否已经热更新。
const updated=uni . getstoragesync( updated );//尝试读取存储
if (updated.completed===true) {
//如果上次刚更新过
//删除安装包和安装记录
Console.log(安装记录删除更新成功);
uni.removeSavedFile({
filePath: updated.packgePath,
成功:res={
uni . removestoragesync(“updated”);
}
});
} else if(updated . completed===false){
uni . removestoragesync(“updated”);
plus . runtime . install(updated . pack gepath,{
力:真
});
uni.setStorage({
密钥:“已更新”,
数据:{
已完成:真,
packgePath: updated.packgePath
},
成功:res={
Console.log(上次更新安装成功,需要重启应用程序才能继续完成);
}
});
uni.showModal({
标题:“提示”,
内容:“应用程序将重新启动以完成更新”,
showCancel: false,
完成:()={
plus . runtime . restart();
}
});
}否则{
//获取当前系统版本信息
plus . runtime . getproperty(plus . runtime . appid,widgetInfo={
//请求后台接口分析数据对比版本。
这个。$Request.getT(/appinfo/)。然后(res={
RES=RES . data[0];
if(RES . wgturl widget info . version RES . version){
let download link=“”;
设androidLink=res.androidWgtUrl
设iosLink=res.iosWgtUrl
let ready=false
//检查是否是热更新。
if (res.wgtUrl.match(RegExp(/)。wgt/))) {
//确定系统类型
if(plus . OS . name . to lower case()=== Android ){
console . log( Android );
如果(androidLink androidLink!==#) {
//我这里默认是#没有地址。请根据您的业务进行修改。
Console.log(“找到下载地址”);
//Android:创建下载任务
if (androidLink.match(RegExp(/)。wgt/))) {
Console.log(确认wgt热更新包);
downloadLink=androidLink
就绪=真;
}否则{
Console.log (Android建议强制更新。wgt和强制更新。apk,请自行修改程序’);
}
}否则{
Console.log(下载地址为空,无法继续);
}
}否则{
Console.log(苹果系统);
if (iosLink iosLink!==#) {
//我这里默认是#没有地址。请根据您的业务进行修改。
Console.log(“找到下载地址”);
//Apple (A):进行热更新(如果iosLink是wgt更新包的下载地址)确定文件名是否包含。wgt。
if (iosLink.match(RegExp(/)。wgt/))) {
Console.log(确认wgt热更新包);
downloadLink=iosLink
就绪=真;
}否则{
Console.log(苹果只支持强制更新。wgt’);
}
}否则{
Console.log(下载地址为空,无法继续);
}
}
如果(准备好){
Console.log(任务开始);
let download task=uni . download file({
网址:下载链接,
成功:res={
if (res.statusCode===200) {
//保存下载的安装包
Console.log(保存安装包);
uni.saveFile({
tempFilePath: res.tempFilePath,
成功:res={
const pack gepath=RES . saved file path;
//将更新记录保存到存储中,并在下次启动应用程序时安装更新
uni.setStorage({
密钥:“已更新”,
数据:{
已完成:假,
打包路径:打包路径
},
成功:()={
Console.log(“记录保存成功”);
}
});
//任务完成后,关闭下载任务。
Console.log(任务完成,关闭下载任务,下次启动应用程序时安装更新);
download task . abort();
downloadTask=null
}
});
}
}
});
}否则{
console.log(下载地址未准备,无法开启下载任务);
}
}否则{
//不是热更新是在线更新校验是否强制升级
if (res.method==true) {
uni.showModal({
showCancel: false,
确认文本: 立即更新,
标题: 发现新版本,
内容:研究和发展
成功:res={
if (res.confirm) {
这个 queue.showLoading(下载中.);
if (uni.getSystemInfoSync().platform==android) {
uni.downloadFile({
网址:androidLink,
成功:下载结果={
如果(下载结果。状态码===200){
plus.runtime.install(
downloadResult.tempFilePath,{
力:假
},
d={
console.log(安装成功.);
另外。运行时。restart();
},
e={
console.error(安装失败.);
}
);
}
}
});
}
if (uni.getSystemInfoSync().platform==ios) {
plus.runtime.openURL(iosLink,function(RES){ });
}
} else if (res.cancel) {
console.log(取消);
}
}
});
}否则{
uni.showModal({
标题: 发现新版本,
确认文本: 立即更新,
取消文本: 下次更新,
内容:研究和发展
成功:res={
if (res.confirm) {
这个 queue.showLoading(下载中.);
if (uni.getSystemInfoSync().platform==android) {
uni.downloadFile({
网址:androidLink,
成功:下载结果={
如果(下载结果。状态码===200){
plus.runtime.install(
downloadResult.tempFilePath,{
力:假
},
d={
console.log(安装成功.);
另外。运行时。restart();
},
e={
console.error(安装失败.);
}
);
}
}
});
}
if (uni.getSystemInfoSync().platform==ios) {
plus.runtime.openURL(iosLink,function(RES){ });
}
} else if (res.cancel) {
console.log(取消);
}
}
});
}
}
}
});
});
}
//#endif以上就是介绍单一应用程序在线升级和热更新实现的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。