1. 程式人生 > >ionic學習(十二):推送app的版本更新

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請求介面配置好,可以參考,如果是小白,上面程式碼是用不了的,具體程式碼待我整理一份都再分享!