UNI-APP APP版本更新方法_老男孩1983的博客-程序员宅基地_uniapp更新版本

技术标签: 前端  php  vue.js  javascript  uni-app  

UNI-APP APP版本更新方法

直接上代码不墨迹

			// 版本更新方法
			wgtUrlupload(){
    
				let _this = this;
				//系统版本升级判断接口(后台获取服务器)
				var urlfun = 你自己后台服务器的接口方法  判断是否需要升级
					// #ifdef APP-PLUS
					/** 锁定屏幕方向 */
					plus.screen.lockOrientation('portrait-primary');
					    console.log("onLaunch锁定屏幕方向")
					/** 检测升级 */
					// 取得版本号
					plus.runtime.getProperty(plus.runtime.appid, function(info) {
    
						// 版本号变量持久化存储
						getApp().globalData.editionnum = info.version; //版本号持久化存储做其它备用
						// console.log("当前应用版本:" + info.version + "---" + plus.runtime.version);
						// console.log("appid:" +plus.runtime.appid);
						// console.log("appid基座版本号:" +plus.runtime.version);
						uni.request({
    
						    url: urlfun, 	//接口地址。url
							method:"POST",		//传输类型
						    data: {
    
								"appid": plus.runtime.appid,
								"version": plus.runtime.version,
								"system":uni.getStorageSync('systemname'),
								"editionnum":info.version,
							},		//必要参数
							// header: data.header,	//https 请求头参数
						    success: (res) => {
    
						        console.log("AJAX数据请求接口--返回状态--"+JSON.stringify(res.data));
								var data = res.data;
								var status = data.status;
								// 判断返回结果,调用升级方法
								if(status == 200){
    
									// 开始调用  data = 服务器返回的数据里面有 新的版本号,下载地址
									_this.checkVersionToLoadUpdate(info.version,data);
								}else{
    
									uni.showToast({
    
										title: data.msg, 
										duration: 1500  
									}); 
								}
						    }
						});
					})
				// #endif
				
			},
			/**
			 * 进行版本型号的比对 以及下载更新请求
			 * @param {Object} server_version 服务器最新 应用版本号
			 * @param {Object} curr_version 当前应用版本号
			 */
			checkVersionToLoadUpdate:function(server_version,data){
    
				if(server_version !== data.edition){
    
					//TODO 此处判断是否为 WIFI连接状态
					if(plus.networkinfo.getCurrentType()!=3){
    
						uni.showToast({
      
							title: '有新的版本发布,检测到您目前非Wifi连接,为节约您的流量,程序已停止自动更新,将在您连接WIFI之后重新检测更新',  
							mask: true,  
							duration: 5000,
							icon:"none"
						});  
						return;  
					}else{
    
						uni.showModal({
    
							title: "版本更新",
							content: '有新的版本发布,检测到您当前为Wifi连接,是否立即进行新版本下载?',
							confirmText:'立即更新',
							cancelText:'稍后进行',
							success: function (res) {
    
								if (res.confirm) {
    
									uni.showToast({
    
										icon:"none",
										mask: true,
										title: '有新的版本发布,检测到您目前为Wifi连接,程序已启动自动更新。新版本下载完成后将自动弹出安装程序',  
										duration: 5000,  
									}); 
									//设置 最新版本apk的下载链接
									var downloadApkUrl = data.uplodurl;
									var dtask = plus.downloader.createDownload( downloadApkUrl, {
    }, function ( d, status ) {
      
											// 下载完成  
											if ( status == 200 ) {
       
												plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename),{
    },{
    },function(error){
      
													uni.showToast({
      
														title: '安装失败', 
														duration: 1500  
													});  
												})
											} else {
      
												 uni.showToast({
      
													title: '更新失败',
													duration: 1500  
												 });  
											}    
										});  
									dtask.start();
								} else if (res.cancel) {
    
									console.log('稍后更新');
								}
							}
						});
					}
				}
			},
## PHP 服务器后台方法
/***************************************************************************
	*	判断APP的应用版本是否需要升级
	* 	appid 		=》必要参数 	__UNI__C5****** 注意你的appid 真机 与 正式的 不一样 真机为 HBuilder
	* 	system 		=》系统 Android || iOS
	*  	editionnum 	=》当前版本号
	*   edition     =》最新版本号
	*   url 		=》下载地址
	***************************************************************************/
	function EditionUploadapp(){
    
		$appid  		= $this->request->param('appid');
		$system  		= $this->request->param('system');
		$editionnum  	= $this->request->param('editionnum');
		if($appid == 'HBuilder'){
    
			if ($system == 'Android') {
    
				$where['type'] = 1;
				# code...
			}if ($system == 'iOS') {
    
				$where['type'] = 2;
				# code...
			}
			// 数据库最新版本查询
			$look = db::name($this->appedition)->where($where)->order("id desc")->find();
			if ($look) {
    
				$data['status'] 	= 200;
				$data['edition'] 	= $look['edition'];
				$data['uplodurl'] 	= $look['url'];
				$data['msg'] 		= "数据查询成功";
				# code...
			}else{
    
				$data['status'] 	= 100;
				$data['msg'] 		= "数据查询失败";
			}
			
		}else{
    
			$data['status'] 	= 100;
			$data['msg'] 		= "appid 序列号不匹配";
		}
		return json($data);

	}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_38483239/article/details/122021067

智能推荐

PHP语法分析器:RE2C && BISON 总结_weixin_43224306的博客-程序员宅基地

在这之前,我曾经尝试过一个项目,就是将我们的PHP代码自动生成so扩展,编译到PHP中,我叫它 phptoc。但是由于各种原因,暂停了此项目。写这篇文章一是因为这方面资料太少,二是把自己的收获总结下来,以便以后参考,如果能明白PHP语法分析那对PHP源码的研究会更上一层楼地 ^.^…我尽可能写的通俗易懂些。这个项目思路源于facebook的开源项目 HipHop .其实我对这个项目...

谁是谁非?MTK手机平台、黑手机、国产手机(转帖)_lijunjieone的博客-程序员宅基地

前序传统农历春节将至,小编代表小熊河南全体工作人员预祝广大网友、经销商朋友们春节愉快,合家欢乐!在放假前夕,小编想跟大家探讨一个名词:“黑手机”,何谓黑手机?原来中国的手机生产厂家都是有手机生产牌照的,而没有牌照的小厂家做出来的手机一般都是仿品牌手机外观甚至操作系统,这样的是哦及被统称为黑手机,它是中国的特色产品,它的出现的确迎合了一部分低端消费者的需求,因此其也占据了一部分市场份额,而这...

servlet底层原理,实现方式,生命周期_长河的博客-程序员宅基地_servlet底层实现原理

Servlet简介Servlet定义Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。Servlet的特点(1)Servlet对像,由Servlet容器(Tomcat)创建。(2)Servlet是一个接口:位于javax.servlet包中。(3)service方法用于接收用户的请求并返回响应。(4)用户访问时多次被执行(...

python爬虫之requests模块_weixin_33827590的博客-程序员宅基地

一. 登录事例a. 查找汽车之家新闻 标题 链接 图片写入本地import requestsfrom bs4 import BeautifulSoupimport uuidresponse = requests.get( 'http://www.autohome.com.cn/news/')response.encoding = 'gbk'so...

oracle 数据泵介绍,ORACLE-数据泵_正义网的博客-程序员宅基地

oracle通过数据泵进行导入导出(impdp/expdp),区别于普通的导入导出(imp/exp),导出的文件不通用,数据泵导出的只能数据泵进行导入。数据泵导出速度要比普通的exp导出要快,但需要在数据库服务器上才能导出,不能远程导出。1.导出expdp 帐号/密码 directory=路径 tables=导出的表名(可选) dumpfile=导出文件名(abc.dmp) logfile=日志...

随便推点

滚动条滚动到页面底部继续加载的处理实例_ajb11683的博客-程序员宅基地

  这个实例应该说可以很简单,直接使用jQuery的方法来处理也是可以的。但本文底层使用原生的js来处理,遇到一些小知识点可以分析一下也算有所得。  原理很简单,就是为window添加一个scroll事件,浏览器每次触发scroll事件时判断是否滚动到了浏览器底部,如果到了底部则加载新数据。关键是计算滚动条是否滚动到了浏览器底部,算法如下  滚动条卷起来的高度 + 窗口高度 &g...

高清视频传输系统保障城市整体监控传输网络安全_光网视PoE交换机的博客-程序员宅基地

高清视频传输系统传输系统是整个社会治安视频监控网络的数据传送平台,承担着平安城市从接入点中心以之间的视频数据传输重担,是搭建整个监控网络的血脉,因此,治安视频监控网络传输系统将采用全数字化的计算机网络传输系统,从监控点的接入到监控中心的数据汇聚完全采用全数字化通道,整个传输网络结构主干万兆汇聚,千兆到监控点接入,户外接入层交换机选用宽温宽压工业级交换机产品,保证视频数据的无阻塞、无延迟传输以及与原...

luogu1160:队列安排:双向链表/树的中序遍历_liusu201601的博客-程序员宅基地

题目连接该题是luogu试炼场的2-13:T4题目大意n个数字组成的队列,多次的插入;再删除其中m个元素;要求输出最后的队列状态题目分析看题目第一反应是队列:但因为多次的间隔插入和条空删除,应该要用链表来做,链表的思想请参考 思路1:双向链表 思路2:用树来存储,中序遍历输出解题思路1:双向链表最开始的时候队伍里只有1号同学;接下来的...

算法-动态规划-解决01背包问题_非琴不是筝的博客-程序员宅基地

一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?二、总体思路:根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背包问题的最优解以及解组成,然后编写代码实现;三、动态规划的原理及过程:eg:number=4,capacity=8i...

git如何同步fork的项目_shenkaibo的博客-程序员宅基地_git同步fork

同步fork项目确定下是否建立了住repo的远程源git remote -v添加项目A的远程仓库地址到upstreamgit remote add upstream <你朋友项目A的仓库地址>再次确认下git remote -v把项目A的更新来到本地的upstream里git fetch upstream切换到你自己想要merge的分支,这里我用举例:mastergit checkout mastermerge项目A的更新到你的branchgit

c3p0参数的说明以及整合spring使用_迪迪调调的博客-程序员宅基地

准备需要的jar包,如下:这些jar包,我已经放到后面贴的源码里了,可自行下载。列出常用的c3p0参数的配置:<!-- c3p0连接池配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 用户名--> <property name="u

推荐文章

热门文章

相关标签