零)内容从网络获取试验后整理而成,基本上能符合大部分需求了
修复部分错误,补全部分内容,比如升级说明均来自服务器端配置,以及下载进度条的正确显示
增加服务器端代码及说明
增加app升级步骤。
一)先安装必要的插件:
ionic plugin add cordova-plugin-app-version
ionic plugin add cordova-plugin-file
ionic plugin add cordova-plugin-file-transfer
ionic plugin add cordova-plugin-file-opener2
二)app.js的run方法里添加代码
$ionicPlatform .ready(function () {
//其他代码
//自动下载升级安装
if (ionic.Platform.isAndroid()) {
$http.jsonp('http://www.yourdomain.com/ver.php?callback=JSON_CALLBACK')
.then(function (data) {
var serverAppVersion = data.data.ver;//服务器 版本
$cordovaAppVersion.getVersionNumber()
.then(function (version) {
if (version != serverAppVersion) {
var confirmPopup = $ionicPopup.confirm({
title: '有新的版本:' + serverAppVersion,
template: data.data.desc, //从服务端获取更新的内容
cancelText: '取消',
okText: '升级'
});
confirmPopup.then(function (res) {
if (res) {
if (version != serverAppVersion) {
$ionicLoading.show({
template: "开始下载,请等待..."
});
var url = "http://www.yourdomain.com/app.apk";
var targetPath = "file:///mnt/sdcard/Download/app.apk";
var trustHosts = true;
var options = {};
$cordovaFileTransfer.download(url, targetPath, options, trustHosts)
.then(function (result) {
$cordovaFileOpener2.open(targetPath, 'application/vnd.android.package-archive'
).then(function () {
}, function (err) {
});
$ionicLoading.hide();
}, function (err) {
alert('下载失败');
}, function (progress) {
//进度,这里使用文字显示下载百分比
var downloadProgress ;
downloadProgress = (progress.loaded / progress.total) * 100;
$ionicLoading.show({
template: '已经下载:' + Math.floor(downloadProgress) + '%'
});
if (downloadProgress > 99) {
$ionicLoading.hide();
}
});
}
}
});
}
});
});
}//if (ionic.Platform.isAndroid()) {
});
*特别要注意,增加依赖关系,因为在浏览器里无法调试这部分代码,只能通过chrome://inspection来调试
三)后端的ver.php代码
header("Content-type:text/html;charset=utf-8");
$callback = $_GET['callback'];
$response = array('ver'=>"0.0.3", 'desc'=>'1.xxx
2.yyyy
3.zzz');
$json = json_encode($response);
echo "$callback($json)";
说明:callback是为了支持jsonp调用,这样使得能ver.php等被跨域调用
四)app升级步骤:
1.修改程序,编译apk,编译前记得修改/config.xml 里的version,提高一个版本号
2.上传apk到服务器指定的路径
3.修改服务器端ver.php代码:$response = array('ver'=>"0.0.3", 'desc'=>'1.xxx
2.yyyy
3.zzz');
建议注释原有语句,增加新语句,这样相当于就保留了完整的升级历史,在新语句里修改ver和config.xml里的version一致,同时修改desc里的升级内容。
<>