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); ?>
时间: 2024-10-08 21:38:32