uniapp项目app端系统版本更新

export const versionControl = {
    /** 
     * @description: 根据不同设备获取最新版本
     * @return {type}
     */
    getMaxVersion() {
        const { maxVersion } = PersonService;
        uni.getSystemInfo({
            success: (res) => {
                const { platform } = res; // ios、android、mac(3.1.10+)、windows(3.1.10+)、linux(3.1.10+)
                const map = {
                    android: "android",
                    ios: "ios",
                };
                // 向后端获取最新版本信息
                maxVersion({ type: map[platform] }).then(({ data }) => {
                    this.updateVersion(data); // 自动检测版本是否需要更新
                });
            },
        });
    },

    /** 
     * @description: 版本对比,需要在页面中获取当前版本信息进行存储
     * @param {type} version
     * @param {type} is_force_update
     * @param {type} url
     * @return {type}
     */
    updateVersion({ version, is_force_update, url }) {
        const curVersion = uni.getStorageSync("version"); // 当前版本
        if (curVersion) {
            if (curVersion != version) {
                const isShowCancel = is_force_update ? false : true;
                this.showFly(isShowCancel, url);
            } else {
                // 这个else也就是当前的版本是最新的,如果是在更进入app的时候就不需要提示了
                // console.log('最新版本');
                // uni.showToast({
                //     title: "当前为最新版本!",
                //     icon: "none",
                //     duration: 1600,
                // });
            }
        }
    },
    // 版本下载 升级
    showFly(isShowCancel, url) {
        uni.showModal({
            title: "提示",
            content: "发现新版本,立即升级!",
            showCancel: isShowCancel, // 如果是强制更新就不显示取消按钮
            success: (e) => {
                if (e.confirm) {
                    uni.showLoading({
                        title: "更新中……",
                    });
                    try {
                        const appUrl = config.appDownloadUrl;
                        const downloadTask = uni.downloadFile({
                            url: appUrl, // 这个是最新版本apk包的地址
                            success: (res) => {
                                uni.hideLoading();
                                if (res.statusCode === 200) {
                                    console.log('res.tempFilePath :>> ', res.tempFilePath);
                                    plus.runtime.install(res.tempFilePath, { force: true }, _res => {
                                        uni.showToast({
                                            title: "更新成功,重启中",
                                            duration: 1600,
                                        });
                                        plus.runtime.restart();
                                        uni.hideToast();
                                    }
                                    );
                                } else {
                                    uni.showToast({
                                        title: "下载失败!",
                                        icon: "none",
                                        duration: 800,
                                    });
                                }
                            },
                        });
                        // 下载进度
                        downloadTask.onProgressUpdate((res) => {
                            // _this.startDown = true;
                            // _this.calcPro(res.progress);
                            console.log('下载进度' + res.progress);
                            // console.log('已经下载的数据长度' + res.totalBytesWritten);
                            // console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
                            // // 测试条件,取消下载任务。
                            // if (res.progress > 50) {
                            //     downloadTask.abort();
                            // }
                        });
                    } catch (error) {
                        console.log('error :>> ', error);
                        uni.hideLoading();
                    } finally {
                    }
                }
            },
        });
    }
}

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