uniapp热更新 版本不变,uniapp热更新不支持的情况

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: