uni-app的整包升级与热更新

前端代码段(包含了整包升级与热更新的代码)

// #ifdef APP-PLUS
		// 版本更新
		plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
		    var server = "后端接口";
		    uni.request({
		        url: server,
		        data: {
			    appid: widgetInfo.appid,
		            version: widgetInfo.version,
		            name: widgetInfo.name
		        },
		        success: (result) => {
		            if (result.statusCode == 200 && result.data.status === 1) {
				//整包升级
				uni.showModal({ //提醒用户更新
					title: "更新提示",
					content: "发现新版本",
					success: (res) => {
						if (res.confirm) {
							uni.showToast({
								title: 'App开始进行版本更新...',
								duration: 1500,
								icon: 'none'
							});
							uni.downloadFile({
								url: result.data.url,
								success: (downloadResult) => {
								if (downloadResult.statusCode === 200) {
									plus.runtime.install(downloadResult.tempFilePath, {
									   force: false
									}, function() {
									   console.log('App安装成功!');
									   plus.runtime.restart();
									}, function(e) {
									   console.error('App安装失败!');
									 });
								}
							}
						});
						}
					}
				})
		            }
			        // 升级包更新,下载wgt文件
				var wgtUrl = result.data.m_url;
				if (result.data.m_url != "文件服务器域名") {
				plus.downloader.createDownload(wgtUrl, { filename: '_doc/update/' }, function(d, status) {
				if (status == 200) {
					console.log('下载wgt成功:' + d.filename);
					// 安装wgt包
					var path = d.filename;
					// plus.nativeUI.showWaiting('安装wgt文件...');
					plus.runtime.install(
						path,
						{
							force: true
						},
						{},
						function() {
							plus.nativeUI.closeWaiting();
							console.log('安装wgt文件成功!');
							// plus.nativeUI.alert('应用资源更新完成!', function() {
								plus.runtime.restart();
							// });
						},
						function(e) {
							plus.nativeUI.closeWaiting();
							// console.log('安装wgt文件失败[' + e.code + ']:' + e.message);
							// plus.nativeUI.alert('安装wgt文件失败[' + e.code + ']:' + e.message);
						}
					);
				} else {
					console.log('下载wgt失败!');
					// plus.nativeUI.alert('下载wgt失败!');
				}
				plus.nativeUI.closeWaiting();
			      }).start();
			   }
		        }
		    });
		});
	// #endif

后端代码段:

public function index(){
        $appid = $_GET["appid"];
        $version = $_GET["version"]; //客户端版本号
        $rsp = array("status" => 0); //默认返回值,不需要升级
        $appdata = AppsUpdate::order('created_at desc')->find();
        $arr = [
            ['version', '=', $version],
        ];
        $appmdata = AppsMupdate::where([$arr])->order('created_at desc')->find();
        if (isset($appid) && isset($version)) {
            if ($appid === "应用的appid") { //校验appid
                $rsp["status"] = 0;
                $rsp["m_url"] = "文件服务器域名".$appmdata['apk_file_url']; //升级包下载地址
                if ($version != $appdata['version']) {  
                    $rsp["status"] = 1; 
                    $rsp["url"] = "文件服务器域名".$appdata['apk_file_url']; //应用包下载地址
                }else{
                    $rsp["status"] = 0;
                }
            }
        }else{
            $rsp["status"] = 0;
            $rsp["mes"] = 'appid不一致';
        }
        echo json_encode($rsp);
}

 

 

共有 0 条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据