uniapp校验app版本并更新

最近用uniapp写了一个安卓壳子做app,遇到一个需求,校验app版本并更新

通过对比线上版本号和app自己的版本号的差异,唤起更新弹窗

相关代码

App.vue



pages下的upgrade    index.vue






pages下的upgrade    upgrade.js

export const downloadApp = (downloadUrl, progressCallBack = () => {}, ) => {
    return new Promise((resolve, reject) => {
        //创建下载任务
        const downloadTask = plus.downloader.createDownload(downloadUrl, {
            method: "GET"
        }, (task, status) => {
            console.log(status,'status')
            if (status == 200) { //下载成功
                resolve(task.filename)

            } else {
                reject('fail')
                uni.showToast({
                    title: '下载失败',
                    duration: 1500,
                    icon: "none"
                });
            }
        })
        //监听下载过程
        downloadTask.addEventListener("statechanged", (task, status) => {
            switch (task.state) {
                case 1: // 开始
                    break;
                case 2: //已连接到服务器
                    break;
                case 3: // 已接收到数据
                    let hasProgress = task.totalSize && task.totalSize > 0 //是否能获取到App大小
                    if (hasProgress) {
                        let current = parseInt(100 * task.downloadedSize / task.totalSize); //获取下载进度百分比
                        progressCallBack(current)
                    }
                    break;
                case 4: // 下载完成
                    break;
            }
        });
        //开始执行下载
        downloadTask.start();
    })
}
/**
 * @description H5+安装APP
 * @param fileName:app文件名
 * @param callBack:安装成功回调
 */
export const installApp = (fileName, callBack = () => {}) => {
    //注册广播监听app安装情况
    onInstallListening(callBack);
    //开始安装
    plus.runtime.install(plus.io.convertLocalFileSystemURL(fileName), {}, () => {
        //成功跳转到安装界面
    }, function(error) {
        uni.showToast({
            title: '安装失败',
            duration: 1500,
            icon: "none"
        });
    })

}
/**
 * @description 注册广播监听APP是否安装成功
 * @param callBack:安装成功回调函数
 */
const onInstallListening = (callBack = () => {}) => {

    let mainActivity = plus.android.runtimeMainActivity(); //获取activity
    //生成广播接收器
    let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
        onReceive: (context, intent) => { //接收广播回调
            plus.android.importClass(intent);
            mainActivity.unregisterReceiver(receiver); //取消监听
            callBack()
        }
    });
    let IntentFilter = plus.android.importClass('android.content.IntentFilter');
    let Intent = plus.android.importClass('android.content.Intent');
    let filter = new IntentFilter();
    filter.addAction(Intent.ACTION_PACKAGE_ADDED); //监听APP安装
    filter.addDataScheme("package");
    mainActivity.registerReceiver(receiver, filter); //注册广播

}

pages.json 

{
	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
		{
			"path": "pages/index/index",
			"style": {
				"navigationStyle": "custom"
			}
		},
		{
			"path": "pages/upgrade/index", //升级窗口页面
			"style": {
				"navigationBarTitleText": "",
				"navigationStyle": "custom",
				"app-plus": {
					"bounce": "none",
					"animationType":"none", //取消窗口动画
					"background": "transparent" // 设置背景透明
				}
			}
		}
	],
	"globalStyle": {
		"navigationBarTextStyle": "black",
		// "navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8"
	},
	"uniIdRouter": {}
}

你可能感兴趣的:(uni-app)