官方更新demo,打开web下载更新
在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: (e) => {
if (e.confirm) {
plus.runtime.openURL(res.data.url); //打开web下载安装
}
}
})
}
}
})
//#endif
}
注意:App的升级检测代码必须使用条件编译,否则在微信环境由于不存在plus相关API,将会报错。
服务端 PHP
//app版本必须更新
public function up_version()
{
$appid = $_GET["appid"];
$version = $_GET["version"]; //客户端版本号
$rsp = array("status" => 0); //默认返回值,不需要升级
if (isset($appid) && isset($version)) {
if ($appid === "__UNI__12345678") { //校验appid
if (!in_array($version,["1.0.5","1.0.6","1.0.7"])){ //这里是示例代码,真实业务上,最新版本号及relase notes可以存储在数据库或文件中
$rsp["status"] = 1;
$rsp["note"] = "新增部分功能,请升级;"; //release notes
$rsp["url"] = ""; //应用升级包下载地址
}
}
}
return json_encode($rsp);
}
强制更新
上面的方法,把showModel换成自己写的一个弹窗,只有升级按钮,无关闭按钮。这样就做的强制更新了。
注意uniapp的app.vue不能引入任一组件,不然打包就会报错。
市场里也有很多插件,也可以直接使用
如:https://ext.dcloud.net.cn/plugin?id=543
可分安装包,升级包。安卓是在应用内下载,不跳转web
QQ截图20190724115122.png