四时宝库

程序员的知识宝库

4,uniapp功能之——APP更新,上线后随时更新,页面显示百分比

App.vue这文件都有吧,当然,也可以写在其他页面,看项目需求了。

思路:第一个方法调接口返回来的是版本号和新的版本链接,将这个版本号与当前app的版本号进行比较,接口返回的版本号大于当前的版本号就弹窗提示用户有新版本了,要进行更新了,弹框有两个按钮,“立即更新”, “以后再说”],立即更新就跳转链接进行更新,链接的地址就是接口返回过来的地址,赋值就可以了,以后再说就代表用户不更新,不更新可以让他继续使用这个软件,我这里是强制更新,不更新就退出软件,

第二个方法就是下载新版本app了,等他下完就可以进行安装。

一遍看不懂就看两遍,两遍看不懂就看三遍,三遍看不懂就别看了,浪费时间。赶紧做下一个功能。

<script>
import {$POST} from "static/js/https.js"
export default {
	data() {
		return {
			version:'',
			sjAppUrl:''
		}
	},
	methods: {
		CheckUpdate(data) {
			//获取当前app版本信息
			plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
				this.version = wgtinfo.version;
				$POST("selectSjAppVersion","",data).then(data=>{
					this.sjAppUrl = data.result.appUrl;//新版本下载地址
						if (data.result.appVersion > this.version) {
							plus.nativeUI.confirm("检测到有新版本,是否更新", (e)=> {
								if (e.index == 0) {
									if (plus.networkinfo.getCurrentType() != 3) {
										plus.nativeUI.confirm("检测到您目前非Wifi连接,是否继续更新", (e)=> {
											if (e.index == 0) {
												this.downWgt();//下载文件
											}else{
												plus.runtime.quit();//安卓控制不更新退出应用
											}
										}, "", ["确定", "取消"]);
									}
									this.downWgt(); //下载文件
								} else {plus.runtime.quit()};//安卓控制不更新退出应用
							}, "", ["立即更新", "以后再说"]);
						}
					}
				})
			})
		},
		downWgt() {
			let dtask = plus.downloader.createDownload( this.sjAppUrl, {method:"GET"});
			var prg = 0;
			var showLoading = plus.nativeUI.showWaiting("正在下载");
			dtask.addEventListener("statechanged",  (task,  status)=>  {
				if (!dtask) { return }   
				switch (task.state) {
					case 1:
						showLoading.setTitle("正在下载");
						break;
					case 2:
						showLoading.setTitle("已连接到服务器");
						break;
					case 3:
						var prg = parseInt((parseFloat(task.downloadedSize)/parseFloat(task.totalSize)) * 100);
						showLoading.setTitle("正在下载" + prg + "%,请耐心等待...");
						break;
					case 4:
						plus.nativeUI.closeWaiting();
						plus.runtime.install(task.filename);
						break;
				}
			},false);  
			dtask.start(); 
		},
	},
	mounted() {
		this.CheckUpdate(res.data.token);
	}
}
</script>

没了,结束了,是不是很简单呐,如有问题,欢迎留言。
最后:如果此篇博文对您有帮助,还请动动小手点点关注点点赞呐~,谢谢 ~ ~

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接