uni-app 升级检测

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

  • uni-app发布为小程序的升级模式较简单,只需将开发完的代码提交小程序后台,待审核通过后用户将自动升级
  • iOS/Android App 的升级需开发者自己处理,本文主要简介 App 的升级模式
\n

接口约定

\n

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

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

请求方法:GET

请求数据:

{
"appid": plus.runtime.appid,
"version": plus.runtime.version
}
\n

响应数据:

{
"status":1,//升级标志,1:需要升级;0:无需升级
"note": "修复bug1;\n修复bug2;",//release notes
"url": "http://www.example.com/uniapp.apk" //更新包下载地址
}
\n

客户端实现

\n

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
}
\n

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

服务端实现

\n

根据客户端上报的版本号,比对服务端最新版本号,决定是否需要升级,若需升级则返回升级信息(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;
\n
10 分享 关注
DCloud_客服_Trust 270635897@qq.com caiqihuang@126.com dev7 水灵退散 wzl16 DCloud_MUI_CHB 没得好名字 qq820805144 12003@qq.com
657917826@qq.com

657917826@qq.com

uni.request如果H5运行,header自定义属性取不到吧?
0 赞 2018-11-30 15:44
liuc000@163.com

liuc000@163.com

有没有什么更好的方法打开下载地址啊..
0 赞 2018-11-22 19:56
freedemon

freedemon

这个针对uni APP的写的升级检测,其实就是只是针对h5+ APP写的不详细版本而已,重点在于小程序和APP升级的兼容写法没点出,帖子很灌水。
0 赞 2018-11-06 10:16
DCloud_客服_Trust

DCloud_客服_Trust

666666
0 赞 2018-10-24 14:55
wenju

wenju 回复 DCloud_MUI_CHB

请问有大概的时间点不 ?
0 赞 2018-10-10 12:02
DCloud_MUI_CHB

DCloud_MUI_CHB 回复 wenju

目前uni-app还处于快速迭代器,基座会跟着快速升级,后期基座相对稳定后,会提供wgt的热更新模式
0 赞 2018-10-08 17:53
wenju

wenju

这个是apk升级包 对于android合适的; 但是如果是ios应该怎么处理呢? 还得乖乖提交AppStore 审核通过后 提示用户跳转在AppStore升级 ??

wgt升级方式支持吗, 我看HBuilderX还没有打wgt的工具呢
0 赞 2018-09-26 14:30
DCloud_MUI_Neil

DCloud_MUI_Neil 回复 工藤驼一

是的
0 赞 2018-09-11 16:53
工藤驼一

工藤驼一 回复 DCloud_MUI_Neil

我知道默认是get,我说自定义,我需要post,是在request里加method:'POST',吗
0 赞 2018-09-11 16:04
DCloud_MUI_Neil

DCloud_MUI_Neil 回复 工藤驼一

uni.request默认get
0 赞 2018-09-11 16:02
工藤驼一

工藤驼一

怎么没有自定义请求类型是get还是post?在哪儿定义?
0 赞 2018-09-11 15:57

要回复文章请先登录注册