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 {
// 取消更新
}
});
}
}])
上面是一个简单实现方式,一些数据都在这里写死了,你可以将一些数据从服务端获取,比如最新版本号,最新版的下载路径,这里提供一个思路。
项目地址:https://github.com/zxj963577494/ionic-AutoUpdateApp
只需执行ionic build android即可
来自:http://www.cnblogs.com/zxj159/p/4421578.html
转载于:https://www.cnblogs.com/zhoupengyi/p/6200892.html
Ionic实战 自动升级APP(Android版)相关推荐
- android pad版本 yy,YY游戏直播app(Android版)1.2.0版本更新
YY游戏直播app(Android版)1.2.0版本更新 [更新时间] 2014年4月18日 [下载方式] [内容提要] YY游戏直播,上百款热门游戏.最新赛事直播,每天实时热播精彩不停歇! 关注你喜 ...
- android版本新 老程序不能用_苹果公布 2019 年中国区最佳 App / Android 版微信更新,支持斗图 / 美团饿了么签署安全承诺...
2019 年 App Store 中国区最佳 App 公布苹果中国官方公布了 2019 App Store 本土优秀 App.游戏的最终候选清单,共有 4 款应用.24 款游戏入围, 包括智能修图应用 ...
- 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)
项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...
- 友盟ionic多渠道自动签名app
这几天公司的运营部门要求添加流量统计功能,集成了友盟的插件,中间遇到很多的问题,在这里说明记录一下,为遇到相同问题的朋友们减少麻烦 问题一.插件的使用直接将友盟sdk系在放置到项目根目录下plugin ...
- 【声明】RUC自习助手APP(Android版)已上线,可下载
下载地址:http://pan.baidu.com/s/1mh9SnxQ 注意:由于某些原因,后台等无法迁移到之前申请的IIS服务器上,某些时段可能无法提供服务,望谅解.如需使用,可留言. 转载于:h ...
- apk自动升级,高于android N自动安装不弹框的问题解决
解决 apk自动升级,android高版本自动安装不弹框的问题 特别注意: File apkFile = new File(tempFile); Intent intent = new Intent( ...
- 有道云笔记Android app离线缓存,有道云笔记Android版升级 增加笔记离线阅读与收藏...
近日,有道云笔记Android版升级至2.5版,增加了iPhone版中颇受用户好评的离线阅读功能,同时增加了微信分享笔记,收藏笔记等实用功能. 升级后,用户可以在离线阅读设置页面,选择需要离线阅读的笔 ...
- android app升级管理,软件轻松管理!Android版91助手升级介绍
1软件库功能软件轻松管理 91手机助手是一款著名的电脑端手机管理软件,随着功能的升级,服务越来越完善.最近,91手机助手Android版还推出了V1.7.8.228版,除了界面更加绚丽之外,也新增了不 ...
- android自动更新列表,Android数据库表结构自动升级
Android App开发如果涉及过数据库的朋友们肯定会碰到数据库升级的工作,Android官方的建议办法是override public void onUpgrade(SQLiteDatabase ...
最新文章
- Spring启动流程(原理)详解--结合web.xml加载配置分析 转
- 自定义dropout
- python循环语句-python基础-循环语句(5)
- linux postgres用户,关于linux:在启动时创建postgres用户
- DBA(五):数据分片、Mycat服务
- [Unity3d]旋转拖动物体
- 《零基础看得懂的C++入门教程 》——(3)表达式花样挺多鸭
- 理解总结篇—List、Set、Map
- Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...
- 有间距的表格布局 table布局
- ubuntu 上NVIDIA驱动和CUDA9.0 的坑之一二
- [原创]CAN总线数据计算器V1.01
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_02.三层架构和ssm框架的对应关系
- Layui 内置方法 - layer.style(重新定义层的样式)
- ROS学习(一)Ros 中使用kinect
- 编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)
- win10中使用VS2017\VS2019编译MQTT(包含32位、64位;Debug版本\Release版本)(附示例demo)
- 100个python算法超详细讲解:将真分数分解为埃及分数
- TNS-12555: TNS:permission denied错误解决
- VMware View中智能卡和证书身份验证