App升级的原理很简单,获取服务端最新版的版本信息,与自身的版本信息进行比较,如果自身版本低,就可以提示用户下载新版本。
对于Android应用,版本信息主要存储在AndroidManifest.xml文件中:
<manifest android:hardwareAccelerated="true" android:versionCode="101" android:versionName="1.0.1" android:windowSoftInputMode="adjustPan" package="net.jiusem.tjlib" xmlns:android="http://schemas.android.com/apk/res/android">
android:versionCode表示版本号,是一个整数,android:versionName表示版本名称,使用点号隔开的字符串。
检测App是否需要更新的关键在于获取到versionCode,并与服务端的versionCode进行比较,如果小于服务端,就说明App有新版本了,需要更新。
有一款插件可以获取到App的versionCode,安装方法如下:
cordova plugin add https://github.com/whiteoctober/cordova-plugin-app-version.git
获取versionCode:
cordova.getAppVersion.getVersionNumber(function (version) {
alert(version);
});
完整的客户端和服务端代码示例:
//检查更新方法
function checkUpdate(){
//检查更新地址
var url = 'http://app.test.com/TjLib/check_update.php';
cordova.getAppVersion.getVersionCode(function(versionCode) {
$.post(url,{},function(data){
var obj = JSON.parse(data);
if(versionCode < obj.versionCode){
//检测到更新时,提示用户是否升级
var r = confirm(obj.msg);
if(r){
//调用浏览器打开下载链接,需要安装inappbrowser插件
window.open(obj.apk, '_system', 'location=yes');
}
}
});
});
}
//App启动后调用一次
setTimeout(function(){
checkUpdate();
},5000);
服务端代码参考(PHP)
<?php
//检查更新调用
$data = array(
'versionCode'=>102,//版本号
'versionName'=>'1.0.1',//版本名称
'msg'=>"有新版本可供更新.\n 1.界面美化 \n 2.性能优化", //更新提示
'apk'=>'http://app.test.com/TjLib/TjLib1.0.1.apk' //app下载地址
);
echo json_encode($data);
?>
欢迎加QQ群交流:454566813 <说明来自开源中国>
来源:oschina
链接:https://my.oschina.net/u/243742/blog/465960