ionic學習(十二):推送app的版本更新
0、先寫個做這個功能的總結吧:
ionic雖說寫程式碼比原生的方便,但是,打包一直讓人很難受,打包不成功的主要原因就是某個外掛的版本問題,所以做這個功能時讓人抓狂,抓狂原因下面講。
1、多外掛自身更新方法
用的最多的就是自身更新,這幾個部落格就是這麼講的:
https://blog.csdn.net/qq_30737525/article/details/79484055
https://blog.csdn.net/zuoyiran520081/article/details/79317451
需要裝5個外掛!!
裝完後,程式碼一行沒寫,就不能打包!!
一個一個外掛安裝後,打包測試,足足搞了一下午!電腦老了打包太慢了!
最後發現這個問題:
升級需要5個外掛:
(1)File (2)Transfer (3)File Opener (4)App Version (5)In App Browser
安裝File Opener外掛後,會導致打包失敗
經測試,File Opener版本1.0.11可以打包成功
然後就拷貝別人程式碼!然後各種錯誤不斷!做了那麼久的努力,還是果斷放棄!
2、官方更新外掛
在簡書的一篇文章的評論中發現了一個官方升級外掛!
簡書地址:https://www.jianshu.com/p/a41223a0b6a2;
官方外掛地址:
https://ionicframework.com/docs/native/app-update/
果然很坑!!app可以打包,可以安裝,就是打不開!!一點選就閃退!!
3、算了,別做這麼高階了!呼叫手機的瀏覽器更新吧
好多軟體也都是呼叫瀏覽器更新的,也不算low,而且問題也沒那麼多。
具體如下:
1.安裝App Version外掛,用來獲取版本號,需要真機上才能用
2.呼叫介面,判斷版本號是否要更新
3.如果要更新,呼叫瀏覽器更新
獲取版本號程式碼:
this.version = this.appVersion
.getVersionNumber()
.then((version: string) => {
this.version = version;
}
})
.catch(err => {
console.log("getVersionNumber:" + err);
});
升級函式 (刪減版,可能有誤):
主要函式就是這個跳轉:
window.open(url, "_blank", "location=yes");//更新跳轉
/**
* version: any;//當前版本號
* upGradeVersion: any;//後臺獲取的版本號
* upGradeUrl: any;//後臺獲取的下載連結
*/
upGrade() {
//請求等待
var loading = super.showLoading(
this.loadingCtrl,'正在獲取更新資訊……');
loading.dismiss();
//請求資料
this.meService.pushUpgradeData().subscribe(
res => {
this.pulldata = res;
this.upGradeVersion = this.pulldata["version"];
this.upGradeUrl =
this.httpService.getUpgradeHost() + this.pulldata["path"];
if (this.version >= this.upGradeVersion) {
this.noUpGradeConfirm("已是最新版本!");
} else {
window.open(url, "_blank", "location=yes");//更新跳轉
]
);},error => console.log(error);
});
php升級測試介面:
<?php
//首先做跨域處理!
header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, authKey, sessionId");
header('Content-Type:application/json');
$json='{
"action": "query",
"result": "success",
"paht": "/apk/giri-mpm-app.apk",
"version": "0.2.8",
"note": "更新: 1.自我升級; 2.提交反饋意見 。修復: 1.伺服器連線異常後重新登入。"
}';//注意外面的單引號
echo $json;
?>
然後就OK了
以上只是部分程式碼,如果前面http請求介面配置好,可以參考,如果是小白,上面程式碼是用不了的,具體程式碼待我整理一份都再分享!