uniapp的更新与强制更新

官方更新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

你可能感兴趣的:(uniapp的更新与强制更新)