android 系统升级 整包升级,uni-app 整包升级/更新方案

注意:plus.runtime.appid,plus.runtime.version, plus.runtime.openURL() 在真机环境下才有效

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

uni-app发布为小程序的升级模式较简单,只需将开发完的代码提交小程序后台,待审核通过后用户将自动升级

iOS/Android App 的升级需开发者自己处理,本文主要简介 App 的整包升级模式。

App 的资源热更新另见文档:http://ask.dcloud.net.cn/article/35667

接口约定

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

请求方法:GET

请求数据:

{

"appid": plus.runtime.appid,

"version": plus.runtime.version

}

响应数据:

{

"status":1,//升级标志,1:需要升级;0:无需升级

"note": "修复bug1;\n修复bug2;",//release notes

"url": "http://www.example.com/uniapp.apk" //更新包下载地址

}

客户端实现

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: (res) => {

if (res.confirm) {

plus.runtime.openURL(res.data.url);

}

}

})

}

}

})

//#endif

}

注意:App的升级检测代码必须使用条件编译,否则在微信环境由于不存在plus相关API,将会报错。

服务端实现

根据客户端上报的版本号,比对服务端最新版本号,决定是否需要升级,若需升级则返回升级信息(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;

常见问题

版本检测需要打包app,真机运行基座无法测试。因为真机运行的plus.runtime.version是固定值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值