IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 记Uniapp自动更新问题 -> 正文阅读

[移动开发]记Uniapp自动更新问题

百度上搜到很多uniapp自动更新的写法,但是测试之后基本上都是可以检查版本号,下载更新包,然后无法唤起自动更新的安装程序,最后找到解决的办法记录一下。

打包过程还是一样,但是需要修改一些配置,如果忘记怎么打包可以参考?HBuilderX项目打包安卓操作记录

1、Android Studio中build.gradle(:app)的targetSdkVersion 改为26以上

2、确保HBuilderX中的权限是否有完整添加

3、将2中添加的权限添加到Android Studio的Androidmanifest.xml 中

自动更新代码

//检查平台类型,在需要做更新检查的地方可以调用CheckPlatForm
function CheckPlatForm() {
	uni.getSystemInfo({
		success: (res) => {
			//检测当前平台,如果是安卓则启动安卓更新  
			if (res.platform == "android") {
				this.AndroidCheckUpdate();
			}
		}
	})
}

?

AndroidCheckUpdate: function() {
	var that = this;

	//uni.removeStorageSync("lastCheckUpdate") //test
	var lastCheckUpdate = uni.getStorageSync("lastCheckUpdate"); //上次检查日期
	var tipTimeLength = 3600; //提示间隔1小时
	var curTime = new Date().getTime(); //当前日期

	//如果近期有提示过,则不需要再提示
	if (lastCheckUpdate != '' && lastCheckUpdate != undefined) {
		if (lastCheckUpdate + tipTimeLength <= curTime)
			return
	}

	//请求获取最新版本号 
	that.tui.request(that.$global.ApiUrl.CheckVersion, "get")
		.then((data) => {
			if (data.success) {
				var downLoadUrl = data.data.downloadUrl;
				var updType = data.data.updType;
				var force = data.data.force;
				var serverVersion = data.data.code;


				plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
					var curVersion = wgtinfo.version

					if (data.data.code == curVersion) {
						return;
					}
					if (force) {
						that.GetInstallFile(downLoadUrl, updType, force)

					} else {
						uni.showModal({
							title: "版本更新",
							content: "当前版本:" + curVersion + "\r\n服务器版本:" + data.data
								.code + "\r\n\r\n是否开始更新?",
							showCancel: !force,
							confirmText: "立即更新",
							cancelText: "稍后提醒",
							success: function(res) {
								if (res.confirm) {
									that.GetInstallFile(downLoadUrl, updType, force)
								} else {
									//记录最后更新时间
									uni.setStorageSync("lastCheckUpdate",
									new Date().getTime());
								}
							}
						})
					}
				});
			} else {
				that.tui.toast("无法获取最新版本号")
			}
		})
		.catch((res) => {

		})
}
GetInstallFile:function(url, updType, force){
	var that = this
	var list = url.split('/');
	var fileName = list[list.length - 1];
	var filePath = "_downloads/"+fileName
	
	plus.io.resolveLocalFileSystemURL(filePath,
		function(res){
			that.installApp(filePath)
		},function(res){
			that.StarDownLoad(url,updType,force)
		})
}
//下载最新版本
StarDownLoad: function(url, updType, force) {
	var that = this
	if (url == undefined || url == "") {
		that.tui.toast("下载失败,下载路径不存在!")
		return
	}
	uni.showLoading({
		mask: true,
		title: "下载更新中"
	})
	var dtask = plus.downloader.createDownload(url, {},
		function(d, status) {
			// 下载完成  
			if (status == 200) {
				that.installApp(d.filename)
			} else {
				that.UpdFail(force)
			}
		});
	dtask.start();
}
//安装新APP
installApp:function(filePath){
	uni.hideLoading()
	uni.showLoading({
		mask: true,
		title: "安装中"
	})
	filePath=plus.io.convertLocalFileSystemURL(filePath)
	plus.runtime.install(filePath, {},
		function(res) {
			uni.hideLoading()
			uni.showToast({
				title: "安装成功",
				showCancel: false,
				success: function() {
					plus.runtime.restart()
				}
			})
		},
		function(error) {
			that.UpdFail(force)
		})
}
//更新失败提示
UpdFail: function(force) {
	uni.hideLoading()
	uni.showToast({
		title: '更新失败',
		icon: error,
		mask: false,
		duration: 1500,
		showCancel: false,
		success: function(res) {
			//如果要求强制更新,然而更新失败则退出app
			if (force) {
				plus.runtime.quit();
			}
		}
	});
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:27:20  更:2021-08-08 11:28:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 14:37:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码