APP更新

App更新主要分为两种方式

  1. 整包更新
  2. 热更新
    最近项目碰到的app更新问题,安卓和iOS更新。
    今天主要讲app整包更新(Android与IOS)

功能实现效果

android:检测新版本,后台下载,自动弹出安装页面
IOS:跳转 appStore app更新界面

一、点击检测版本

直接上代码哈,后面有效果图

通过plus.runtime.getProperty获取APP版本信息,

// 获取APP版本号
			getVersion() {
				let that = this;
				plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
					this.version = wgtinfo.version.split('.').join('')
				})
			},

获取服务端自定义的最新新版信息
自定义信息如下

// Android APP动态更新数据
{
	"code":"200",
	"version":"1.2.7",   //最新版本
	"iosappid":"*********",   //APP在ios中的唯一id
	"url":"http://xxxxxx/xx/yy/xxxx.apk"    //android安装包(1.2.7)
}

获取服务器信息,判断当前app版本信息是否小于服务器自定义版本信息

UpdatedVersion() {   //检测版本
				let that = this
				this.$util.appReqeust('get', AppToUpdate, "", false).then(res => {
					let Myversion = res.version.split('.').join('')
					if (that.version < Myversion) { //有新版本
						that.content = `可更新至 **${res.version}`
						that.LoadreUrl = res.url
						that.show = true
						that.IosAppid = res.iosappid
					} else { //无新版本
						that.showToast()
					}
				})
			},

确认更新

SubmitUpdate() {    //点击确认更新
				let platform = uni.getSystemInfoSync().platform;
				this.show = false
				if (platform == 'android') {
					var dtask = plus.downloader.createDownload(this.LoadreUrl, {
						filename: "_downloads/"
					}, function(d, status) {
						// 下载完成  
						if (status == 200) {
							plus.runtime.install(plus.io.convertLocalFileSystemURL(d
								.filename), {}, {}, function(error) {
								plus.nativeUI.closeWaiting();
								uni.showToast({
									title: '安装失败!',
									icon: "none",
									mask: false,
									duration: 1500
								});
							})
						} else {
							plus.nativeUI.closeWaiting();
							uni.showToast({
								title: '更新失败!',
								icon: "none",
								mask: false,
								duration: 1500
							});
						}
					});
					var prg = 0;
					var showLoading = plus.nativeUI.showWaiting("正在下载");
					dtask.addEventListener('statechanged', function(task, status) {
						switch (task.state) {
							case 1:
								showLoading.setTitle("正在下载");
								break;
							case 2:
								showLoading.setTitle("已连接到服务器");
								break;
							case 3:
								prg = parseInt(
									(parseFloat(task.downloadedSize) /
										parseFloat(task.totalSize)) *
									100
								);
								showLoading.setTitle("版本更新中,正在下载" + prg + "% ");
								break;
							case 4:
								plus.nativeUI.closeWaiting();
								//下载完成
								break;
						}
					});
					dtask.start();
				} else {
					// ios自动更新
					let appleId = this.IosAppid
					plus.runtime.launchApplication({
						action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
					}, function(e) {
						// console.log('Open system default browser failed: ' + e.message);
					});
				}
			},

如果检测到新版本,用户点击更新
android端 会在后台下载服务器上面的apk文件,完成后打开,只要apk文件的appid和应用包名一致,安装完成会替换低版本apk安装包
IOS 会跳转到App store市场,用户需要手动点击更新。 appleId可以在IOS开发者中心的APP信息中查看

效果图

检测版本

在这里插入图片描述

确认更新

在这里插入图片描述

更新中 (android)

在这里插入图片描述
IOS端点击更新,会跳到到手机应用中心App store手动按照新版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值