以下是針對該插件在android平臺下面的應(yīng)用的心得體會
- 使用過程
- 執(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
- 命令行安裝的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);
}
- 在服務(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ù)字
- 調(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)行比較,從而判斷是否更新的,這樣每次更改配置文件中的這個變量就可以了。