uni-app 整包升级与热更新方案

1 引言

使用 uni-app 开发,可将代码编译到iOS、Android、微信小程序等多个平台,升级时也需考虑多平台同步升级。

  • 小程序的升级模式较简单,只需将开发完的代码提交小程序后台,待审核通过后用户将自动升级
  • iOS/Android App 的升级需开发者自己处理,本文主要简介 uni-app 的整包更新和热更新的方案。
  • App 的资源热更新另见文档:http://ask.dcloud.net.cn/article/35667

2 接口约定

如下数据接口约定仅为示例,开发者可以自定义接口参数。

请求地址:https://www.example.com/update

请求方法:GET

请求数据:

{  
    "appid": plus.runtime.appid,  
    "version": plus.runtime.version,
    "name":plus.os.name  
}

响应数据:

{  
    "status":1,              // 升级标志,0:无需更新  1:整包更新 2 热更新;
    "note": "修复bug1",      // 更新描述  
    "url": "http://www.example.com/uniapp.apk" //更新包下载地址  
}

3 客户端实现

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

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




 

4 后端

注:state设为0则无需更新,设为1则整包更新,设2则为热更新

 0); //默认返回值,不需要升级  
if (isset($appid) && isset($version)) {  
    if ($appid === "__UNI__F7512345") { //校验appid  
        if ($version !== "1.0.1") { //这里是示例代码,真实业务上,最新版本号及relase notes可以存储在数据库或文件中  
            
            // 1为整包更新,2为热更新
            $rsp["status"] = 1;  
            if( $rsp["status"]==1){
	            $rsp["note"] = "修复bug1;\n修复bug2;"; //release notes  
	            if ($name=="Android") {  
				     $rsp["url"] = "market://*********";   // Android下载地址
				}else{  
				     $rsp["url"] = "itms-apps://itunes.apple.com/cn/app/******";  // IOS下载地址
				}	
            }else{
            	$rsp["url"]='http://www.domain.com/__UNI__F7512345.wgt';    // 热更新包
            }
            
			
        }  
    }  
}   
echo json_encode($rsp);  
exit;

5 注意

每次更新记得修改版本号

uni-app 整包升级与热更新方案_第1张图片

6 热更新包

uni-app 整包升级与热更新方案_第2张图片

你可能感兴趣的:(uni-app)