Skip to content

uniapp安装包检查更新下载安装

第一步:检查当前版本是否是最新版

  • 获取当前版本

    js
    var systemInfo = uni.getSystemInfoSync();
    var currentVersion = systemInfo.appVersion; // 1.0.6
    json
    # uni.getSystemInfoSync();结果示例如下
    {
        "SDKVersion": "",
        "appId": "__UNI__3006FD1",
        "appLanguage": "zh-Hans",
        "appName": "菜就多练",
        "appVersion": "1.0.6",
        "appVersionCode": "100",
        "browserName": "safari",
        "browserVersion": "11.0",
        "deviceId": "1758873707713799136",
        "deviceModel": "iPhone",
        "deviceOrientation": "portrait",
        "devicePixelRatio": 2,
        "deviceType": "phone",
        "hostLanguage": "zh-CN",
        "hostName": "safari",
        "hostTheme": "light",
        "hostVersion": "11.0",
        "isUniAppX": false,
        "language": "zh-CN",
        "model": "iPhone",
        "osName": "ios",
        "osVersion": "11.0",
        "pixelRatio": 2,
        "platform": "ios",
        "safeArea": {
            "left": 0,
            "right": 367,
            "top": 0,
            "bottom": 812,
            "width": 367,
            "height": 812
        },
        "safeAreaInsets": {
            "top": 0,
            "right": 0,
            "bottom": 0,
            "left": 0
        },
        "screenHeight": 1600,
        "screenWidth": 2560,
        "statusBarHeight": 0,
        "system": "iOS 11.0",
        "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 HBuilderX",
        "uniCompileVersion": "4.45",
        "uniCompilerVersion": "4.45",
        "uniPlatform": "web",
        "uniRuntimeVersion": "4.45",
        "version": "",
        "windowBottom": 50,
        "windowHeight": 718,
        "windowTop": 44,
        "windowWidth": 367
    }
  • 通过后端接口获取最新的版本,然后比较二者的版本号大小,通常版本采用 MMmmPPP 的格式,此格式可以通过 主版本 * 100000 + 次版本 * 1000 + 修订号 * 1 来比较版本号的大小

    说明位数
    主版本(M)0-99(2位)
    次版本(m)0-99(2位)
    修订号(P)0-999(3位)
  • 每次发行之前,记得修改下 mainfest.json 里面的应用版本名称

    image-20251004125047687

第二步:创建下载任务并安装

js
uni.showLoading({
    title: '更新安装包中...'
})
var dtask = plus.downloader.createDownload('apk的实际路径', {}, function(d, status) {
    // 下载完成  
    if (status == 200) {
        uni.hideLoading()
        plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(error) {
            uni.showToast({
                title: '安装失败',
                duration: 1500
            });
        })
    } else {
        uni.showToast({
            title: '更新安装包失败',
            duration: 1500
        });
    }
});
dtask.start();

MIT版权,未经许可禁止任何形式的转载