ionic實(shí)現(xiàn)android平臺下的自動更新

以下是針對該插件在android平臺下面的應(yīng)用的心得體會

  • 使用過程
  1. 執(zhí)行一下命令安裝應(yīng)用更新的插件,版本獲取的插件與打開系統(tǒng)瀏覽器的插件.
    下面兩個插件的安裝跟ionic的版本相關(guān),參考我的另一篇文章
    本文以ionic3為例
//獲取版本號
$ ionic cordova plugin add cordova-plugin-app-version
$ npm install --save @ionic-native/app-version@4
//瀏覽器打開apk
$ ionic cordova plugin add cordova-plugin-inappbrowser
$ npm install --save @ionic-native/in-app-browser@4
//比較版本并更新apk
$ ionic cordova plugin add cordova-plugin-app-update
$ npm install --save @ionic-native/app-update@4
  1. 命令行安裝的app-udate插件直接使用會報Application Err的錯誤,后來根據(jù)No剎那光輝ionic3 程序更新的文檔,將插件先下載到本地,然后修改了插件中DownloadHandler.java文件,不過安裝這個插件的時候就需要添加插件在本地的路徑了,注意這一點(diǎn)。
    修改后:
 // 通過Intent安裝APK文件
 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
     LOG.d(TAG, "Build SDK Greater than or equal to Nougat");
// String applicationId = (String) BuildHelper.getBuildConfigValue(cordova.getActivity(), "APPLICATION_ID");
     String applicationId = (String) BuildHelper.getBuildConfigValue((Activity) mContext, "APPLICATION_ID");
     Uri apkUri = FileProvider.getUriForFile(mContext, applicationId + ".appupdate.provider", apkFile);
     Intent i = new Intent(Intent.ACTION_INSTALL_PACKAGE);
     i.setData(apkUri);
     i.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
     mContext.startActivity(i);
  }else{
     LOG.d(TAG, "Build SDK less than Nougat");
     Intent i = new Intent(Intent.ACTION_VIEW);
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     i.setDataAndType(Uri.parse("file://" + apkFile.toString()), "application/vnd.android.package-archive");
     mContext.startActivity(i);
       }
  1. 在服務(wù)器端放置一份配置文件(假設(shè)路徑是http://localhost:8080/Untitled-1.xml),格式在插件的README.md中可以找到,如下
<update>
    <version>302048</version>
    <name>name</name>
    <url>http://localhost:8080/android.apk</url>
</update>
  • 如果應(yīng)用有更新,首先需要修改這個xml文件中的version數(shù)字,然后替換url路徑里面的apk文件。
  • 注意,路徑是寫死的,所以每次的apk都要放在url這個路徑下,如果有更改,則xml文件也要相應(yīng)的修改。
  • version標(biāo)簽中的數(shù)字與應(yīng)用的版本號格式不同,需要通過獲取版本號插件中的getVersionCode方法將應(yīng)用的版本號轉(zhuǎn)換而來,如下:
 var versionCode:string = "";
 this.appVersion.getVersionCode().then((value: string) => {
            versionCode = value;
            console.log('getVersionNumber:' + value);
  }).catch(err => {
            console.log('getVersionNumber:' + err);
  });

versionCode就是需要填入的數(shù)字

  1. 調(diào)用方法如下:
    在app.module.ts中導(dǎo)入插件,并添加到providers中
import { AppVersion} from '@ionic-native/app-version';
import { AppUpdate } from '@ionic-native/app-update';
import { InAppBrowser } from '@ionic-native/in-app-browser';

調(diào)用

let str ="http://localhost:8080/Untitled-1.xm"
this.appUpdate.checkAppUpdate(str).then(data => {
       console.log(data);
 }, (err) => {
       console.log(err);
 });

更改服務(wù)器上面的xml文件的版本號,來實(shí)現(xiàn)自動更新的功能。

更新:
不安裝獲取版本號的方法也可以,在config.xml配置文件里的widget標(biāo)簽里面,添加 android-versionCode="2" ,檢測更新的插件實(shí)際上是跟這個versionCode進(jìn)行比較,從而判斷是否更新的,這樣每次更改配置文件中的這個變量就可以了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容