千金一刻莫空度,老大无成空自伤。这篇文章主要讲述Ionic实战 自动升级APP(Android版)相关的知识,希望能为你提供帮助。
Ionic 框架介绍
Ionic是一个基于Angularjs、可以使用html5构建混合移动应用的用户界面框架,它自称为是“本地与HTML5的结合”。该框架提供了很多基本的移动用户界面范例,例如像列表(lists)、标签页栏(tab bars)和触发开关(toggle switches)这样的简单条目。它还提供了更加复杂的可视化布局示例,例如在下面显示内容的滑出式菜单。 Ionic 自动升级APP
一、准备工作
1.Cordova插件:
cordova plugin add https://github.com/whiteoctober/cordova-plugin-app-version.git
// 获取APP版本cordova plugin add org.apache.cordova.file // 文件系统cordova plugin add org.apache.cordova.file-transfer //文件传输系统cordova plugin add https://github.com/pwlin/cordova-plugin-file-opener2 //文件打开系统
2.AngularJS Cordova插件
ngCordova
二、相关代码,app.js 复制代码
.run([\'$ionicPlatform\', \'$rootScope\',\'$ionicActionSheet\', \'$timeout\',\'$cordovaAppVersion\', \'$ionicPopup\', \'$ionicLoading\',\'$cordovaFileTransfer\', \'$cordovaFile\', \'$cordovaFileOpener2\', function ($ionicPlatform, $rootScope,$ionicActionSheet, $timeout,
$cordovaAppVersion, $ionicPopup, $ionicLoading, $cordovaFileTransfer, $cordovaFile, $cordovaFileOpener2) {
$ionicPlatform.ready(function ($rootScope) {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova &
&
window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
//检测更新
checkUpdate();
document.addEventListener("menubutton", onHardwareMenuKeyDown, false);
});
// 菜单键
function onHardwareMenuKeyDown() {
$ionicActionSheet.show({
titleText: \'检查更新\',
buttons: [
{ text: \'关于\' }
],
destructiveText: \'检查更新\',
cancelText: \'取消\',
cancel: function () {
// add cancel code..
},
destructiveButtonClicked: function () {
//检查更新
checkUpdate();
},
buttonClicked: function (index) {
}
});
$timeout(function () {
hideSheet();
}, 2000);
};
// 检查更新
function checkUpdate() {
var serverAppVersion = "1.0.0";
//从服务端获取最新版本
//获取版本
$cordovaAppVersion.getAppVersion().then(function (version) {
//如果本地与服务端的APP版本不符合
if (version != serverAppVersion) {
showUpdateConfirm();
}
});
}
// 显示是否更新对话框
function showUpdateConfirm() {
var confirmPopup = $ionicPopup.confirm({
title: \'版本升级\',
template: \'1.xxxx;
<
/br>
2.xxxxxx;
<
/br>
3.xxxxxx;
<
/br>
4.xxxxxx\', //从服务端获取更新的内容
cancelText: \'取消\',
okText: \'升级\'
});
confirmPopup.then(function (res) {
if (res) {
$ionicLoading.show({
template: "已经下载:0%"
});
var url = "http://192.168.1.50/1.apk";
//可以从服务端获取更新APP的路径
var targetPath = "file:///storage/sdcard0/Download/1.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 () {
// 成功
}, function (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 {
// 取消更新
}
});
}
}])
上面是一个简单实现方式,一些数据都在这里写死了,你可以将一些数据从服务端获取,比如最新版本号,最新版的下载路径,这里提供一个思路。
【Ionic实战 自动升级APP(Android版)】
项目地址:https://github.com/zxj963577494/ionic-AutoUpdateApp
只需执行ionic build android即可
来自:http://www.cnblogs.com/zxj159/p/4421578.html
推荐阅读
- Android中使用AsyncTask实现文件下载以及进度更新提示
- delphi android 录像(调用Java的功能)
- 1Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoc
- Android控件状态依赖
- Android技术分享收集
- 使用Fiddler对android应用抓包
- GJM : Unity3D HIAR - 快速入门导出 Android 工程应用
- Android开发之微信分享到好友,朋友圈
- Android中如何除去网络感叹号