uni-app 獲取app當前版本及APP版本升級

App.vue文件中加入下面代碼,進行app版本升級更新

<script>
    export default {
        onLaunch: function() {
            // console.log('App Launch')
            // 獲取 manifest.json 的信息
            plus.runtime.getProperty( plus.runtime.appid, function ( wgtinfo ) {                
                //  獲取 app的version
                let appversion = wgtinfo.version;
                // 存緩存 版本號
                try {
                    uni.setStorageSync('appversion', appversion);
                } catch (e) {}
                console.log( "appversion:" + appversion );
            } );
            // 更新版本接口  
            var server = "……"; //  版本接口api              
            // 取緩存 版本號
            const v = uni.getStorageSync('appversion');
            uni.request({  
                url: server,  
                data: v,  
                success: (res) => {  
                    console.log('res',res);
                    console.log('appversion'+v);
                    if (res.statusCode == 200 && v < res.data.msg.version) {  //  對比版本,進行更新升級
                        uni.showModal({ //提醒用戶更新  
                            title: "更新提示",  
                            content: res.data.msg.content,  
                            success: (res) => {  
                                if (res.confirm) {  
                                    //   更新操作,resetURL 是app更新的接口地址
                                    plus.runtime.openURL(resetURL);  
                                }  
                            }  
                        })  
                    }  
                }  
            })
        },
        onShow: function() {
            // console.log('App Show')
        },
        onHide: function() {
            // console.log('App Hide')
        },
        
    }
</script>

<style lang="scss" scoped>
</style>

顯示下載進度的版本,文件App.vue

<script>
    export default {
        data(){
            return {
                curVersion:'1.0.0'
            }
        },
        onLaunch: function() {
            // console.log('App Launch')
            //#ifdef APP-PLUS
            this.checkUpdate();
            // #endif
        },
        onShow: function() {
            // console.log('App Show')
        },
        onHide: function() {
            // console.log('App Hide')
        },
        methods: {
            // 版本升級
            //# ifdef APP-PLUS
            checkUpdate(){
                // 獲取manifest.json 的信息
                plus.runtime.getProperty( plus.runtime.appid, function ( wgtinfo ) {
                    this.curVersion = wgtinfo.version;
                    console.log( "this.curVersion:" + this.curVersion );
                } );
                // 更新版本接口  
                var server = "http://t.heijinka.vip/api/version"; 
                var that = this;
                
                uni.request({
                    url: server,  //請求更新地址
                    data: that.curVersion,
                    success(res) {
                        if (res.statusCode == 200 && that.curVersion < res.data.msg.version) {
                            uni.showModal({
                                title: '版本更新' + res.data.msg.version,
                                content: res.data.msg.content,
                                confirmText: "更新",
                                // showCancel: !res.forceUpdate,
                                success: function(e) {
                                    if (e.confirm) {
                                        if (plus.os.name.toLowerCase() == 'ios') {
                                            // 跳轉到下載頁面
                                            plus.runtime.openURL(res.data.msg.downloadUrl)
                                        } else {
                                            that.createDownload(res.data.msg.downloadUrl);
                                        }
                                    } else {
                                        //取消
                                    }
                                }
                            });
                        } else {
                            uni.showModal({
                                title: '提示',
                                content: '已是最新版本',
                                showCancel: false
                            });
                        }
                    },
                })
            },
            createDownload(url){
                var dtask = plus.downloader.createDownload(url, {},
                    function(d, status) {
                        uni.showToast({
                            title: '下載完成',
                            mask: false,
                            duration: 1000
                        });
                        //console.log(dtask);
                        // 下載完成
                        console.log('status: '+status);
                        if (status == 200) {
                            console.log('下載成功:'+d.filename);
                            console.log('plus.io.convertLocalFileSystemURL(d.filename): '+plus.io.convertLocalFileSystemURL(d.filename))
                            plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, function(success) {
                                uni.showToast({
                                    title: '安裝成功',
                                    mask: false,
                                    duration: 1500
                                });
                            }, function(error) {
                                uni.showToast({
                                    title: '安裝失敗-01',
                                    mask: false,
                                    duration: 1500
                                });
                            })
                        } else {
                            uni.showToast({
                                title: '更新失敗-02',
                                mask: false,
                                duration: 1500
                            });
                        }
                });
                try {
                    dtask.start(); // 開啓下載的任務
                    var prg = 0;
                    var showLoading = plus.nativeUI.showWaiting("正在下載");  //創建一個showWaiting對象 
                    dtask.addEventListener('statechanged', function(task,status) {
                        // 給下載任務設置一個監聽 並根據狀態  做操作
                        switch (task.state) {
                            case 1:
                                showLoading.setTitle("正在下載");
                                break;
                            case 2:
                                showLoading.setTitle("已連接到服務器");
                                break;
                            case 3:
                                prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100 );
                                showLoading.setTitle("  正在下載" + prg + "%  ");
                                break;
                            case 4:
                                plus.nativeUI.closeWaiting();
                                //下載完成
                                break;
                        }
                    });
                  } catch (err) {
                    plus.nativeUI.closeWaiting();
                    uni.showToast({
                        title: '更新失敗-03',
                        mask: false,
                        duration: 1500
                    });
                }
            },
            
            //#endif  
        }
    }
</script>

<style lang="scss">
    /*每個頁面公共css */
    @import "uview-ui/index.scss";
    @import "uview-ui/home.scss";
</style>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章