基于uniapp 的在线更新支持ios 和安卓

安卓支持热更新和重新安装 ios 支持热更新和打开应用商店

	import updatejs from 'common/update.js';
	onLaunch: function() {
			console.log('App Launch')
			uni.setStorageSync('getUnTakeListStatus', true);
				this.isupdate();
		
		},
	isupdate(){
		
				let appversion = uni.getSystemInfoSync().appVersion;
				// 热更新 更新的为 appWgtVersion
				let appWgtVersion=  uni.getSystemInfoSync().appWgtVersion;
	
				getAppVersionData({}).then(res=>{
		
					 if(res.data.version!=appversion){
						 if(appWgtVersion!=res.data.version){
							 updatejs.check({
							 	appversion:res.data.version,
							 	downloadurl:res.data.downloadurl,
							 	live:res.data.live,
							 	appstore:res.data.appstore,
							 	apkurl:res.data.apkurl,
							 	is_root:res.data.is_root,
							 	title: "检测到有新版本!",
							 	content: "请升级app到最新版本!",
							 	canceltext: "暂不升级",
							 	oktext: "立即升级"
							 });
						 }
					 	
					 }
				 });
				
				
				
				
				

			
			}
		
/**
 * 是否热更新 取决于有木有添加新的插件,或者uniapp 有木有新的更新如果版本不变即可热更新
 
 */


function check(param = {}) {

    // 合并默认参数
    param = Object.assign({
        title: "检测到有新版本!",
        content: "请升级app到最新版本!",
        canceltext: "暂不升级",
        oktext: "立即升级"
    }, param)
	
    plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
        let platform = plus.os.name.toLocaleLowerCase()

            if (true) {
                if (platform == 'ios') {
                    // 如果是ios,则跳转到appstore
					if(param.live==2){
						plus.runtime.openURL(param.appstore)
						 return;
					}else{
						uni.showModal({
						        title: param.title,
						        content: param.content,
						        showCancel: true,
						        confirmText: param.oktext,
						        cancelText: param.canceltext,
						        success: res => {
						            if (!res.confirm) {
						                console.log('取消了升级');
										if(param.is_root==1){
											   plus.runtime.quit();
										}
						            }else{
						                var dtask = plus.downloader.createDownload(param.downloadurl, {
						                        filename: "_downloads/"
						                    },
						                    function (d, status) {
						                        // 下载完成
						                        if (status == 200) {
						                            plus.runtime.install(d.filename, {
						                                force: true
						                            }, function () {
						                                //进行重新启动;
						                                plus.runtime.restart();
						                            }, (e) => {
						                                uni.showToast({
						                                    title: '安装升级包失败:' + JSON
						                                        .stringify(e),
						                                    icon: 'none'
						                                })
						                            });
						                        } else {
						                            this.tui.toast("下载升级包失败,请手动去站点下载安装,错误码: " +
						                                status);
						                        }
						                    });
						
						                let view = new plus.nativeObj.View("maskView", {
						                    backgroundColor: "rgba(0,0,0,.6)",
						                    left: ((plus.screen.resolutionWidth / 2) - 45) +
						                        "px",
						                    bottom: "80px",
						                    width: "90px",
						                    height: "30px"
						                })
						
						                view.drawText('开始下载', {}, {
						                    size: '12px',
						                    color: '#FFFFFF'
						                });
						
						                view.show()
						
						
						                dtask.addEventListener("statechanged", (e) => {
						                    if (e && e.downloadedSize > 0) {
						                        let jindu = ((e.downloadedSize / e.totalSize) *
						                            100).toFixed(2)
						                        view.reset();
						                        view.drawText('进度:' + jindu + '%', {}, {
						                            size: '12px',
						                            color: '#FFFFFF'
						                        });
						                    }
						                }, false);
						                dtask.start();
						            }
						        // }
								}
						    })
								
					}
                   
                   
                }
                // android进行如下操作
                uni.showModal({
                    title: param.title,
                    content: param.content,
                    showCancel: true,
                    confirmText: param.oktext,
                    cancelText: param.canceltext,
                    success: res => {
                        if (!res.confirm) {
                            console.log('取消了升级');
							if(param.is_root==1){
								   plus.runtime.quit();
							}
                         
                        }else{
							
						
                        // if (data.live === 2) {
                            //去应用市场更新
                            // plus.runtime.openURL(param.apkurl);
                            // plus.runtime.restart();
                        // } else {
                            // 清除缓存
                            // 开始下载
                            // 创建下载任务
							var downurl="";
							if(param.live==2){
								downurl=param.apkurl
							}else{
									downurl=param.downloadurl	
							}
                            var dtask = plus.downloader.createDownload(downurl, {
                                    filename: "_downloads/"
                                },
                                function (d, status) {
                                    // 下载完成
                                    if (status == 200) {
                                        plus.runtime.install(d.filename, {
                                            force: true
                                        }, function () {
                                            //进行重新启动;
                                            plus.runtime.restart();
                                        }, (e) => {
                                            uni.showToast({
                                                title: '安装升级包失败:' + JSON
                                                    .stringify(e),
                                                icon: 'none'
                                            })
                                        });
                                    } else {
                                        this.tui.toast("下载升级包失败,请手动去站点下载安装,错误码: " +
                                            status);
                                    }
                                });

                            let view = new plus.nativeObj.View("maskView", {
                                backgroundColor: "rgba(0,0,0,.6)",
                                left: ((plus.screen.resolutionWidth / 2) - 45) +
                                    "px",
                                bottom: "80px",
                                width: "90px",
                                height: "30px"
                            })

                            view.drawText('开始下载', {}, {
                                size: '12px',
                                color: '#FFFFFF'
                            });

                            view.show()


                            dtask.addEventListener("statechanged", (e) => {
                                if (e && e.downloadedSize > 0) {
                                    let jindu = ((e.downloadedSize / e.totalSize) *
                                        100).toFixed(2)
                                    view.reset();
                                    view.drawText('进度:' + jindu + '%', {}, {
                                        size: '12px',
                                        color: '#FFFFFF'
                                    });
                                }
                            }, false);
                            dtask.start();
                        }
                    // }
					}
                })
            }
       
    });
}

export default {
    check
}

Logo

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

更多推荐