zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Atitit topic index Abt 150 toic [原]Atitit hi dev eff topic by use dsl sql coll op 提升开发效率sql ds
    Atitit xml转json总结 目录 1.1. XML和JSON之间没有直接映射;元素类型问题 1 1.2. Xml与json的对应关系 2 1.3. 范例 2 2. Jsonlib的问题,,不
    Atitit stomp.js conn连接activemq 目录 1.1. activemq 启动,已经默认开启了stomp ws的接口。。地址是 1 1.2. Js 客户端代码 1 1.3
    Atitit 业务领域体系分类 目录 1. 按照互联网企业类型以及只是体系类的分类 2 2. 电子商务 2 3. **通信类社交 Im类 em 2 4. **信息搜索类爬虫 2 4.1. 媒体
    atitit software sys 软件技术领域工业体系.docx 目录 1. 技术领域一级大类10大类 2 2. 理论与软件设计方法学 2 2.1. 计算机原理 计算机科学导论 2 2.2.
    Atitit api design Usability simple 易用性之简单化设计 目录 1. 理论原则 2 1.1. 概念简单 2 1.2. 切换到了“write less, do more
    Atitit 远程工作的几种办公模式 目录 1. 未来的趋势 远程办公 1 1.1. 遥远的阴影 1 1.2. 一个单中心的团队,是一个团队,每个人都被共处于同一物理位置。 2 1.3. 一个多站
    Atitit 保证产品易用性的方法总结 目录 1. 什么是易用性 易学 易见 三角关系 1 2. 易用性原理 三原则 易见 映射 反馈 2 2.1. 易见 Visibility 可读性 2 2.2.
    Atitit 高级人员要看哪些源码 目录 1. Ati看过的源码 1 1.1. Ui类 1 1.2. Mvc类 1 1.3. 数据库类 1 1.4. 算法类 1 2. 看源码的意义 2 2.1. 一
    Atitit 初级 中级 高级 软件工程师的区别 非功能性需求 目录 1. 初级 业务功能 1 1.1. 中级 独立完成业务功能 已经非常见api功能 更加广阔 1 2. 高级 非功能性需求
  • 原文地址:https://www.cnblogs.com/chun6/p/6200958.html
Copyright © 2011-2022 走看看