1. 程式人生 > >Vue封裝hbuilder熱更新

Vue封裝hbuilder熱更新

main.js
import AutoUpdateApp from './common/AutoUpdateApp/AutoUpdateApp' //我存放AutoUpdateApp.js的目錄
Vue.use(AutoUpdateApp)
AutoUpdateApp.js
export default {
    install(Vue,options)
    {
        // 藍芽搜尋方法
        Vue.prototype.AutoUpdateApp = function () {
            return {
                // 獲取本地應用資源版本號
                getVersion
: function (CallBack) { var wgtVer = null; //非同步操作 plus.runtime.getProperty(plus.runtime.appid,(info) => { wgtVer = info.version; CallBack(wgtVer); }); }, //下載wgt
檔案 downWgt: function (wgtUrl) { var self = this; plus.nativeUI.showWaiting("下載更新檔案..."); plus.downloader.createDownload( wgtUrl, {filename:"_doc/update/"}, function(d,status){ if ( status == 200 ) { console
.log("下載更新檔案成功:" + d.filename); self.installWgt(d.filename); // 安裝wgt包 } else { plus.nativeUI.alert("下載失敗!"); } plus.nativeUI.closeWaiting(); })
.start(); }, // 更新應用資源 installWgt: function (path) { plus.nativeUI.showWaiting("安裝更新檔案..."); plus.runtime.install(path,{},function(){ plus.nativeUI.closeWaiting(); plus.nativeUI.alert("應用資源更新完成!",function(){ plus.runtime.restart(); }); },function(e){ plus.nativeUI.closeWaiting(); plus.nativeUI.alert("安裝更新檔案失敗[" + e.code + "]:" + e.message); if(e.code == 10){ plus.nativeUI.alert('請清除臨時目錄'); } }); } } }; } }
vuex的store.js檔案的actions
autoupdateapp: function (context) {
            let AutoUpdateApp = new window.Vue.AutoUpdateApp();
            let wgtVer = plus.runtime.version;

            axios.post('/point-api-autoupdateapp',{
                appid:plus.runtime.appid,
                appname:'queue'
            }).then(function(response){    
                let newVer = response;
                //檢查更新
                if(wgtVer && newVer && (wgtVer.substring(0,3) < newVer.versionName.substring(0,3))){
                    if(window.confirm('檢測到更新,是否更新?')){
                        AutoUpdateApp.downWgt(newVer.apk);  
                    }
                } 
            }, function(response){
                mui.toast('網路錯誤');
            });
        }
在需要的元件的 mounted或created呼叫
// 初始化建立物件
    mui.plusReady(() => {
      this.$store.dispatch('autoupdateapp');
    });

php的models程式碼

public static function AutoUpdateApp($params) 
{
    extract($params);
    $versionName = '';
    if($appname == 'queue')
    {
        $versionName = '1.2.0';
    }elseif($appname == 'waiter')
    {
        $versionName = '1.2.0';
    }elseif($appname == 'pos')
    {
        $versionName = '1.2.0';
    }
    $data = [
        'versionName' => $versionName,
        'apk' => $SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].'/app/'.$appid.'.wgt',//存放更新資源的目錄
    ];
    return self::formatBody('data' => $data);
}