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版)相关推荐

  1. android pad版本 yy,YY游戏直播app(Android版)1.2.0版本更新

    YY游戏直播app(Android版)1.2.0版本更新 [更新时间] 2014年4月18日 [下载方式] [内容提要] YY游戏直播,上百款热门游戏.最新赛事直播,每天实时热播精彩不停歇! 关注你喜 ...

  2. android版本新 老程序不能用_苹果公布 2019 年中国区最佳 App / Android 版微信更新,支持斗图 / 美团饿了么签署安全承诺...

    2019 年 App Store 中国区最佳 App 公布苹果中国官方公布了 2019 App Store 本土优秀 App.游戏的最终候选清单,共有 4 款应用.24 款游戏入围, 包括智能修图应用 ...

  3. 通过扫码打开IOS的App Store下载APP(Android版暂时没找到解决方法)

    项目需求:扫码根据不同平台下载不同版本的APP.主要是ios和Android. 网上找了很多,前面判断平台的代码很容易找到,但是后面的就有些坑了.有的人的是根本跑不通.有的是代码补全. 下面是 微信扫 ...

  4. 友盟ionic多渠道自动签名app

    这几天公司的运营部门要求添加流量统计功能,集成了友盟的插件,中间遇到很多的问题,在这里说明记录一下,为遇到相同问题的朋友们减少麻烦 问题一.插件的使用直接将友盟sdk系在放置到项目根目录下plugin ...

  5. 【声明】RUC自习助手APP(Android版)已上线,可下载

    下载地址:http://pan.baidu.com/s/1mh9SnxQ 注意:由于某些原因,后台等无法迁移到之前申请的IIS服务器上,某些时段可能无法提供服务,望谅解.如需使用,可留言. 转载于:h ...

  6. apk自动升级,高于android N自动安装不弹框的问题解决

    解决 apk自动升级,android高版本自动安装不弹框的问题 特别注意: File apkFile = new File(tempFile); Intent intent = new Intent( ...

  7. 有道云笔记Android app离线缓存,有道云笔记Android版升级 增加笔记离线阅读与收藏...

    近日,有道云笔记Android版升级至2.5版,增加了iPhone版中颇受用户好评的离线阅读功能,同时增加了微信分享笔记,收藏笔记等实用功能. 升级后,用户可以在离线阅读设置页面,选择需要离线阅读的笔 ...

  8. android app升级管理,软件轻松管理!Android版91助手升级介绍

    1软件库功能软件轻松管理 91手机助手是一款著名的电脑端手机管理软件,随着功能的升级,服务越来越完善.最近,91手机助手Android版还推出了V1.7.8.228版,除了界面更加绚丽之外,也新增了不 ...

  9. android自动更新列表,Android数据库表结构自动升级

    Android App开发如果涉及过数据库的朋友们肯定会碰到数据库升级的工作,Android官方的建议办法是override public void onUpgrade(SQLiteDatabase ...

最新文章

  1. Spring启动流程(原理)详解--结合web.xml加载配置分析 转
  2. 自定义dropout
  3. python循环语句-python基础-循环语句(5)
  4. linux postgres用户,关于linux:在启动时创建postgres用户
  5. DBA(五):数据分片、Mycat服务
  6. [Unity3d]旋转拖动物体
  7. 《零基础看得懂的C++入门教程 》——(3)表达式花样挺多鸭
  8. 理解总结篇—List、Set、Map
  9. Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...
  10. 有间距的表格布局 table布局
  11. ubuntu 上NVIDIA驱动和CUDA9.0 的坑之一二
  12. [原创]CAN总线数据计算器V1.01
  13. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_02.三层架构和ssm框架的对应关系
  14. Layui 内置方法 - layer.style(重新定义层的样式)
  15. ROS学习(一)Ros 中使用kinect
  16. 编程之美4.7蚂蚁爬杆扩展问题附猎人抓狐狸(必胜策略)
  17. win10中使用VS2017\VS2019编译MQTT(包含32位、64位;Debug版本\Release版本)(附示例demo)
  18. 100个python算法超详细讲解:将真分数分解为埃及分数
  19. TNS-12555: TNS:permission denied错误解决
  20. VMware View中智能卡和证书身份验证

热门文章

  1. python3练习题:11-20
  2. 程序的跟踪debug
  3. 读后感:你的灯亮着吗
  4. 数据库导出All about Oracle IMP/EXP
  5. Redis数据“丢失”问题
  6. vs转eclipse之工具快速上手篇
  7. script的加载方式与执行
  8. 专业写博一天------ArrayList 线程安全
  9. 2015.08.15冒泡排序
  10. Word 2003高级技巧之可爱的锚标记