一号优惠经验分享网
51福利网的各种薅羊毛福利经验笔记

uni-app整包升级/更新方案笔记

1.官方教程方案(推荐)(打开app就会弹窗提醒):

官方教程:uni-app 整包升级/更新方案 – DCloud问答

但是研究了半天没有成功,能成功检查,但是点击了弹窗的确认按钮,并不能自动下载最新apk安装包。最后才发现官方教程uni.showModal覆盖了uni.request的res,所以不会打开网页就不会去下载了

51福利网

直接给最终教程:

客户端实现

App启动时,向服务端上报当前版本号,服务端判断是否提示升级。

在App.vue的onLaunch中,发起升级检测请求,如下:

onLaunch: function () {  
    //#ifdef APP-PLUS  
    var server = "https://www.example.com/update"; //检查更新地址  
    var req = { //升级检测数据  
        "appid": plus.runtime.appid,  
        "version": plus.runtime.version  
    };  
    uni.request({  
        url: server,  
        data: req,  
        success: (res) => {  
            if (res.statusCode == 200 && res.data.status === 1) {  
                uni.showModal({ //提醒用户更新  
                    title: "更新提示",  
                    content: res.data.note,  
                    success: (con) => {  
                        if (con.confirm) {  
                            plus.runtime.openURL(res.data.url);  
                        }  
                    }  
                })  
            }  
        }  
    })  
    //#endif  
}

服务端实现

根据客户端上报的版本号,比对服务端最新版本号,决定是否需要升级,若需升级则返回升级信息(rease notes、更新包地址等)

实现示例:

<?php
header("Content-type:text/json");  
$appid = $_GET["appid"];  
$version = $_GET["version"]; //客户端版本号  
$rsp = array("status" => 0); //默认返回值,不需要升级  
if (isset($appid) && isset($version)) {  
    if ($appid === "__UNI__123456") { //校验appid  
        if ($version !== "1.0.1") { //这里是示例代码,真实业务上,最新版本号及relase notes可以存储在数据库或文件中  
            $rsp["status"] = 1;  
            $rsp["note"] = "修复bug1;\n修复bug2;"; //release notes  
            $rsp["url"] = "http://www.example.com/uniapp.apk"; //应用升级包下载地址  
        }  
    }  
}   
echo json_encode($rsp);  
exit;
?>

2.页面中显示的方案

view中添加

    <p style="font-size: 10px;"> <br><br>APP | 当前版本:9.0  
	最新:{{ version }}  	
	
	</p>	
<view>
	     
	    <div v-if="version !== '10.0'">  
	        
	        <p><strong>APP已经更新,请重新下载最新版本:</strong></p>  
	       
	        <a :href="upgradeLink" style="color: red;">下载 👉最新版本APP</a>  
	    </div>  
	</view>	

script中的data()添加

export default {
		data() {
			return {
				version: null, // 用于存储提取的版本号
				upgradeLink: 'https://你的apk地址/51.apk' // 升级地址 
				
			}
		},

onload添加

onLoad() {
			this.fetchVersion(); // 在组件挂载后发起请求提取版本号  
			
			

		},

methods添加

fetchVersion() {
				uni.request({
					url: 'https://你显示最新版本号的js远程文件/stver.js',
					success: (res) => {
						const scriptContent = res.data;
						// 调整正则表达式以正确匹配版本号    
						const version = scriptContent.match(/document.writeln\("V(\d+\.\d+)/)[1];
						if (version) { // 检查版本号是否存在    
							this.version = version;
						} else {
							console.error('无法提取版本号');
						}
					},
					fail: (err) => {
						console.error('Failed to fetch script:', err);
					},
			
				});
			}, //获取版本号完

然后在服务器新建一个stver.js文件,里面写入,将js路径放到上面即可

document.writeln("V9.0");

app升级

一号优惠 · 51福利网薅羊毛福利具有时效性,如已失效,请留言
文章名称:《uni-app整包升级/更新方案笔记》-一号优惠 · 51福利网
免责申明:本站所有活动信息均来自网络,如有失效、违规、不实或侵权,请联系我们删除。谢谢

评论 抢沙发

一号优惠经验分享网最新最全薅羊毛,现金红包线报网

一号优惠经验分享网提供每日最新内部优惠,薅羊毛活动,现金红包领取,免费福利和网赚福利手机赚钱线报,打造中国最受欢迎的网赚信息发布平台!51福利网

51联盟线报群赚钱·合作·帮助

登录

找回密码

注册