项目要求:

用户打开APP后,检测是否是最新版本,不是最新版本提示用户更新。


解决思路:

步骤一:需要一个接口,用来和本地版本号对比判断是不是最新的版本。
步骤二:需要一个弹框,提示用户更新。
步骤三:下载状态显示


效果图:

先有提示框

用户点击更新后按钮文字改为正在更新(图没截好,但是代码以实现)


具体代码:

先来弹框样式代码

 <!-- #ifdef APP-PLUS --><view v-show="isupAppStatu" class="upAppBg"><view class="upAppBox"><view class="upAppBox_title">发现新版本<text >{{isupAppList.version}}</text></view><view class="upAppBox_content">{{isupAppList.descrption}}<!-- 版本描述 --></view><view v-show="updateprogress" style="width: 80%;margin-bottom: 30rpx;"><progress :percent="updatesum" activeColor="red" stroke-width="8" /></view><view @click="upApp" class="upAppBox_btn">{{updateprogresstxt}}</view></view></view><!-- #endif -->
<!-- css样式 -->
<style>.upAppBg{position: fixed;width: 750rpx;height: 100vh;background: rgba(0,0,0,0.3);z-index: 100;display: flex;align-items: center;justify-content: center;}.upAppBox{width: 600rpx;padding: 20rpx 0 50rpx;background: #FFFFFF;border-radius: 20rpx;display: flex;flex-direction: column;align-items: center;}.upAppBox_title{line-height: 80rpx;font-weight: bold;}.upAppBox_content{padding: 20rpx 0 40rpx;font-size: 26rpx;}.upAppBox_btn{width: 400rpx;line-height: 60rpx;text-align: center;background: rgb(250, 66, 55);border-radius: 20rpx;color: #FFFFFF;}
</style>

弹框需要的data中的变量,首页是否显示提示框,以及更新按钮的方法

export default {data() {return {isupAppStatu:false, // 更新提示框updatesys:'', // 更新系统型号isupAppList:'', // 更新系统型号updateprogresstxt :'更新',updatesum:0, // 更新进度条updateprogress: false, // 更新进行状态}},onShow() {//#ifdef APP-PLUS//发起http请求,res中包含安卓和ios最新版本号,更新描述等数据getVersion().then(res => {// 需要区分ios和安卓(两者更新APP方式不一致)if (/android/.test(uni.getSystemInfoSync().platform)) {var _this = this // 改变this的指向在下面方法可使用thisplus.runtime.getProperty(plus.runtime.appid, function(inf) {const ver = inf.version; //测试if (res.data.android.version > ver) {uni.hideTabBar()//隐藏底部导航栏_this.isupAppList = res.data.android // 更新描述_this.isupAppStatu = true // 显示更新提示框}})}else if (/ios/.test(uni.getSystemInfoSync().platform)){var _this = this // 改变this的指向在下面方法可使用thisplus.runtime.getProperty(plus.runtime.appid, function(inf) {const ver = inf.version; //测试if (res.data.ios.version > ver) {uni.hideTabBar()//隐藏底部导航栏_this.isupAppList = res.data.ios // 更新描述_this.isupAppStatu = true // 显示更新提示框}})}})//#endif},methods: {// 更新APPupApp(){// 防止用户多次点击if (this.updateprogress) {return} else {if (/android/.test(uni.getSystemInfoSync().platform)) {this.updateprogress = true //显示进度条this.updateprogresstxt = '正在更新...' //更改按钮文字 // console.log(this.isupAppList)const downloadTask = uni.downloadFile({url: this.isupAppList.address,success: (res) => {if (res.statusCode === 200) {this.updateprogress = falseplus.runtime.install(res.tempFilePath); // 自动安装apk文件plus.runtime.quit();} else {this.updateprogress = false}}})// 监控下载apk的进度downloadTask.onProgressUpdate((res) => {this.updatesum = res.progress});}else {// 苹果更新需要携带参数打开APPStore跳转到上架的应用上var urlStr = encodeURI("APPStore中你们ios的地址")plus.runtime.openURL(urlStr, function(res) {})}}}}}

总结

最开始的时候底部导航栏无法被覆盖,
使用uni.hideTabBar()隐藏底部导航栏。

APP强制更新(uni-app)相关推荐

  1. maven 强制更新_Android App内部更新Library的方法

    超详细!安卓巴士开发者大会嘉宾及主题介绍 AutoUpdateProject 最新版本及说明请关注GitHub,欢迎Star. 有什么意见与建议欢迎交流! github地址: https://gith ...

  2. 对APP强制更新的思考

    "作为一名产品人员,要永远保持好奇心",这句话,一直烙印在我心里 今天,在体验一款金融型APP的时候,遇到了一个平时比较少遇到的问题--APP强制更新,不更新就不能用.我不信这个邪 ...

  3. APP强制更新和非强制更新测试要点

    需求:有最新版本的时候,如果强制更新不管是在无线还是数据状态都要去更新,在状态栏上显示;如果是非强制更新,如果设置了wifi自动下载则去自动下载;否则弹出提示框提示是否下载更新 ----------安 ...

  4. uniapp实现app的强制更新

    App.vue 是首次加载项目时,走的一个vue页面,这个页面时全局的. // App.vue var server = baseUrl + "baseInfo/wmsAppVersion/ ...

  5. 如何规避苹果审查,实现app store上的app版本强制更新

    要想规避苹果审查,我们需要通过调用数据接口来控制调用app 版本强制更新功能:当苹果在审查的时候,我们可以通过后台数据控制关闭版本强制更新功能,等苹果审核通过以后我通过后台控制打开版本强制更新功能.下 ...

  6. android app 自动更新,app升级项目,新增强制更新(可静默),支持热更新(wgt),可支持高版本安卓系统...

    pure-updater 一个可以用的自动更新方案 经测试可支持 Android 9.0 已支持热更新 已支持静默的强制更新 如果您觉得还可以的话那就点个五星吧!谢谢! 已测试 android 8.0 ...

  7. iOS 规避苹果审查,实现app store上的app版本强制更新

    要想规避苹果审查,我们需要通过调用数据接口来控制调用app 版本强制更新功能:当苹果在审查的时候,我们可以通过后台数据控制关闭版本强制更新功能,等苹果审核通过以后我通过后台控制打开版本强制更新功能.下 ...

  8. XZ_iOS 之企业版APP安装和强制更新

    企业版的安装流程: 1.打包企业版证书的ipa包,放在 https 服务器上,把下载的链接地址,放在plist文件中: 2.把plist也放在服务器上面,plist中的代码如下所示: 3.根据下载下面 ...

  9. 乐变黄杲:当前如何选择App热更新服务

    在2017年6月这个时间点,我们有必要谈谈热更新这个技术到底何去何从. \\ 上半年苹果的两次警告,通知iOS开发者在6月12日前移除热更新相关代码,否则将会下架相关App,一时间风声鹤唳,那么App ...

最新文章

  1. Python在linux服务器上解压,python3传文件到linux服务器然后解压
  2. Android Context getSystemService分析
  3. Spring的配置文件详解
  4. 前端学习(1925)vue之电商管理系统电商系统之通过一层for循环渲染
  5. git log 你学废了吗?
  6. qgis在地图上画导航线_在Laravel中的航线
  7. js+excel+mysql_js导出数据到excel
  8. 一文搞懂*argv和**kwargs
  9. 两轮差速机器人舵机转轴示意图_灵活、快捷的机房巡检机器人少不了伺服电动轮...
  10. Java招聘数据统计_拉勾网2019年3月20日招聘数据统计
  11. 2018蓝桥杯A组:星期一(年份判断)
  12. ubuntu下oracle数据的导入,Ubuntu下Oracle10g的导入与导出
  13. 用SQL语句可以取出中文汉字的首字母
  14. spring mvc 学习 转载
  15. SVM入门(十)将SVM用于多类分类
  16. Oracle创建用户、授权、规则
  17. 计算机论文的字体要求,论文格式要求及字体大小
  18. 习题6.14 编一个程序,将两个字符串s1和s2比较,若s1 > s2,输出一个正数;若s1 = s2, 输出0;若s1 < s2,输出一个负数。不要用strcmp函数。两个字符串用gets函数输入。
  19. 父母尚在苟且,你却在炫耀诗和远方
  20. eWebEditor授权序列号

热门文章

  1. 我厌倦玩计算机游戏了英语翻译,我喜欢玩电子游戏英文翻译,我喜欢电脑游戏怎么说...
  2. python数字求和菜鸟教程_Python Number(数字) | 菜鸟教程
  3. 精益管理学会|什么是ECRS改善方法?
  4. 程序员应了解的那些事(107)之图灵完备
  5. key_t键和ftok函数(转)
  6. Delphi 10.3 安装TM Scripter控件包出现关于提示can‘t load package ‘xxx.bpl.‘ 错误问题的简单解决方法
  7. 查看ajax传来的数据,jQuery AJAX 方法 success()后台传来的4种数据
  8. 黑马头条登录到个人中心页面
  9. 最简单的,安装flash插件
  10. 实战:浪潮服务器安装凝思 6.0.8 版本操作系统