关于uniapp app端更新的两种方式:

  1. 全量更新(apk)
  2. 增量更新(wgt包)

注意事项

  • 真机测试情况下获取的appId为“HBuilder”,不是我们在manifest.json中配置的appId,需在打包安装后才能获取配置的appId
  • 每次打包的版本号需大于上次的版本号
  • 增量包安装后需通过“plus.runtime.restart()”api重启app才生效
  • plus.runtime.getProperty方法只在app下才生效,小程序方面也有专门的api

下载进度可视化

  • 通过onProgressUpdate()方法可获取下载的进度,已下载德文件大小,总量大小,将数据渲染出来就好
// #ifdef APP-PLUS
			plus.runtime.getProperty(plus.runtime.appid,(wgtinfo)=>{ //通过api获取appId,版本号
				const params = {}
				params.appId = wgtinfo.appid //appid
				params.version = wgtinfo.version //版本号
				this.post('**********',{...params}).then(res => { //请求接口,是否更新
					if(res.data.updateFlag === '1') { //判断是否需要更新
						if(res.data.updateType === '1') { //增量包更新
							var downloadTask = uni.downloadFile({
								url: res.data.downloadUrl, //下载地址,必传
								success: (downloadResult) => {
									if (downloadResult.statusCode === 200) {
										plus.runtime.install(downloadResult.tempFilePath, { //安装api
											force: false
										}, function() {
											console.log('install success...');
											plus.nativeUI.showWaiting("更新完成");
											setTimeout(() => {
												plus.nativeUI.closeWaiting();
												plus.runtime.restart(); //重启app
											},1500)
										}, function(e) {
											console.error('install fail...');
										});
									}
								},
								fail: (item => {
									console.log(item)
								})
							})
							downloadTask.onProgressUpdate(item => {
								if(item.progress <100) {
									plus.nativeUI.showWaiting("正在下载" + item.progress + '%');
								}else if(item.progress >= 100) {
									plus.nativeUI.closeWaiting();
								}
							})
						}else if(res.data.updateType === '2') { //全量包更新
							uni.showModal({ //提醒用户更新modal框 
								title: "更新提示",
								content: res.data.note,
								success: (item) => {
									if (item.confirm) {
										plus.runtime.openURL(res.data.downloadUrl);
									}
								}
							})
						}
					}
				})
              })
			// #endif
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐