cordova-plugin-app-update插件使用心得
以下是针对该插件在android平台下面的应用的心得体会
- 使用过程
- 执行一下命令安装应用更新的插件,版本获取的插件与打开系统浏览器的插件
$cordova plugin add cordova-plugin-app-update --save
//下面两个插件的安装跟ionic的版本相关,参考我的另一篇文章
$ ionic cordova plugin add cordova-plugin-app-version
$ npm install --save @ionic-native/app-version
$ ionic cordova plugin add cordova-plugin-inappbrowser
$ npm install --save @ionic-native/in-app-browser
- 命令行安装的app-udate插件直接使用会报Application Err的错误,后来根据No刹那光辉的 ionic3 程序更新的文档,将插件先下载到本地,然后修改了插件中DownloadHandler.java文件
修改后:
// 通过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);
}
- 在服务器端放置一份配置文件(假设路径是http://localhost:8080/Untitled-1.xml),格式在插件的README.md中可以找到,如下
<update>
<version>302048</version>
<name>name</name>
<url>http://localhost:8080/android.apk</url>
</update>
- 如果应用有更新,首先需要修改这个xml文件中的version数字,然后替换url路径里面的apk文件。
- 注意,路径是写死的,所以每次的apk都要放在url这个路径下,如果有更改,则xml文件也要相应的修改。
- version标签中的数字与应用的版本号格式不同,需要通过获取版本号插件中的getVersionCode方法将应用的版本号转换而来,如下:
var versionCode:string = "";
this.appVersion.getVersionCode().then((value: string) => {
versionCode = value;
console.log('getVersionNumber:' + value);
}).catch(err => {
console.log('getVersionNumber:' + err);
});
versionCode就是需要填入的数字
- 调用方法如下:
let str ="http://localhost:8080/Untitled-1.xm"
this.appUpdate.checkAppUpdate(str).then(data => {
console.log(data);
}, (err) => {
console.log(err);
});
更改服务器上面的xml文件的版本号,来实现自动更新的功能。
网友评论