Vue封裝hbuilder熱更新
阿新 • • 發佈:2019-01-27
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);
}