uniapp檢查更新並顯示下載進度

uni.request({
	url: "http://2132",  //請求更新地址
	data: '',
	success(res) {
		if (!!res.data) {
			uni.showModal({
				title: '版本更新' + res.data.versionCode,
				content: res.data.description,
				confirmText: "更新",
				showCancel: !res.forceUpdate,
				success: function(e) {
					if (e.confirm) {
						if (plus.os.name.toLowerCase() == 'ios') {
							// 跳轉到下載頁面
							plus.runtime.openURL(res.data.upgradeUrl)
						} else {
							var dtask = plus.downloader.createDownload(
								res.data.upgradeUrl, {},
								function(d, status) {
									uni.showToast({
										title: '下載完成',
										mask: false,
										duration: 1000
									});
									// 下載完成
									if (status == 200) {
										plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, e => e, function(error) {
											uni.showToast({
												title: '安裝失敗-01',
												mask: false,
												duration: 1500
											});
										})
									} else {
										uni.showToast({
											title: '更新失敗-02',
											mask: false,
											duration: 1500
										});
									}
								});
							 try {
								dtask.start(); // 開啓下載的任務
								var prg = 0;
								var showLoading = plus.nativeUI.showWaiting("正在下載");  //創建一個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;
								  }
								});
							  } catch (err) {
								  plus.nativeUI.closeWaiting();
								  uni.showToast({
								  	title: '更新失敗-03',
								  	mask: false,
								  	duration: 1500
								  });
							  }
						}

					} else {
						//取消
					}
				}
			});
		} else {
			uni.showModal({
						    title: '提示',
						content: '已是最新版本',
						showCancel: false
					});
		}
	},
})

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章