混合APP升级策略:
Android版实现直接下载apk安装升级,Ios版实现跳转到苹果商店进行更新升级
仅贴关键代码段:
if ($rootScope.platform == 'ios') {
console.log('访问appstore进行更新');
console.log(versionInfo.downloadUrl);
$window.open(versionInfo.downloadUrl);//跳转到APP商店这样即可
return
}
var targetPath = "/sdcard/Download/"+verisonInfo.versionId + ".apk"; //APP下载存放的路径,可以使用cordova file插件进行相关配置;
var trustHosts = true;
var options = {};
$cordovaFileTransfer.download(url, targetPath, options, trustHosts).then(function (result) {
// 打开下载下来的APP
$cordovaFileOpener2.open(
targetPath,
'application/vnd.android.package-archive').then(function () {
// 成功
console.log('存储为:' + targetPath);
}, function (err) {
// 错误
console.log(err);
});
$ionicLoading.hide();
}, function (err) {
alert('下载失败');
}, function (progress) {
//进度,这里使用文字显示下载百分比
$timeout(function () {
var downloadProgress = (progress.loaded / progress.total) * 100;
$ionicLoading.show({
template: "已经下载:" + Math.floor(downloadProgress) + "%"
});
if (downloadProgress > 99) {
$ionicLoading.hide();
}
})
});
} else {
// 取消更新
}
注意!!!
APK的下载存放路径必须是sd卡内,如果放进应用内文件路径下,打开apk时,会报如下错误:解析程序包时出现问题.
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO5ATOwkDMzEzNxMDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)