文档章节

关于ionic的非二进制资源的云端更新

k
 kongzong
发布于 2016/05/13 21:26
字数 785
阅读 207
收藏 2

所谓的云端升级,就是热分布,ionic属于cordova项目,html,js,css,图片字体等资源可以通过应用自身从服务器下载最新版本并安装,这样的好处是下载量非常小,安装接近无缝,对最终用户无干扰或极少干扰,不知不觉中系统就更新了。当然这里这种发布只是针对前面说的几类资源的更新才有效,如果cordova插件更新,则还是需要发行二进制版本,进行常规更新。


方案一览(From https://github.com/gf-rd/blog/issues/8)

Ionic deploy

http://docs.ionic.io/docs/deploy-from-scratch
默认的实现是用ionic.io自己的服务器,当然也可以换成自己的服务器来拉取新资源包

微软的code push

http://microsoft.github.io/code-push/index.html#getting_started
比起ionic 提供的deploy服务好不少。最重要是资源包是放在azure国内无压力(可更换,其次支持强制和推荐更新(可配给用户的提示更新文案changelog,支持不同的channel(dev,staging,production等。

cordova-app-loader

https://github.com/markmarijnissen/cordova-app-loader


综合考虑后,决定选择 code push方案

 

codepush实验笔记

安装code-push-cli

$ sudo npm install -g code-push -d

注册code-push

$ code-push register

A browser is being launched to authenticate your account. Follow the instructions it displays to complete your registration.

Enter your access key: xxxxxxxxxxxxx

Successfully logged-in. Your session file was written to /Users/kongzong/.code-push.config. You can run the code-push logout command at any time to delete this file and terminate your session.

新建code-push 应用

$ code-push app add myapp_android

Successfully added the "myapp_android" app, along with the following default deployments:

┌────────────┬──────────────────────────┐

│ Name       │ Deployment Key                        │

├────────────┼──────────────────────────┤

│ Production │ ********************************│

├────────────┼──────────────────────────┤

│ Staging    │ ********************************* │

└────────────┴──────────────────────────┘

建议android,ios分别创建两个应用,一个myapp_android,一个myapp_ios.

安装cordova插件

$cordova plugin add cordova-plugin-code-push

修改config.xml,填入deployment-key

<platform name="android">

    <preference name="CodePushDeploymentKey" value="YOUR-ANDROID-DEPLOYMENT-KEY" />

</platform>

<platform name="ios">

    <preference name="CodePushDeploymentKey" value="YOUR-IOS-DEPLOYMENT-KEY" />

</platform>

此处我使用Staging key,因为上传代码命令缺省用的就是Staging。

另外还要保证<access origin="*" /> 

另另外还要保证安装了whitelist插件,这个目前已经是ionic的标配了。

 

app.js里修改代码,加在run方法的 ionicPlatform.read里

$ionicPlatform.ready(function () {
//其他代码
window.codePush.sync(
  function (syncStatus) {
    switch (syncStatus) {
      // Result (final) statuses
      case SyncStatus.UP_TO_DATE:
        navigator.notification.alert("一个更新被成功从云端安装。", null, '提示', '我知道了');("一个更新被成功从云端安装。", null, '提示', '我知道了');
        break;
      case SyncStatus.ERROR:
        navigator.notification.alert("云端更新出现错误。", null, '提示', '我知道了');
        break;     
    }
  },
  {
    updateDialog: false, installMode: InstallMode.IMMEDIATE  
  }
);
//其他代码
})

这里按照我的设计,基本静默安装,只在更新成功后有一个提示。

另外此处提示发现只能使用 navigator.notification.alert,试过 toast及ionicPopup都报错,好在 alert 提示也足够了。

使用code push上传更新代码:

$ sudo code-push release-cordova toc_android android

这将会把对应的www目录上传到code-push服务器。

重新进入你的app,就会自动下载更新,更新安装完成后有一个alert提示,点确定后,你的app就更新到最新啦,是不是有点黑科技的感觉。

 

以上只是最基本的运用,但是基本满足需求,更多细节的配置可以参考官方文档

 

https://www.npmjs.com/package/cordova-plugin-code-push#installmode

http://microsoft.github.io/code-push/docs/getting-started.html

 

<<EOF>>

© 著作权归作者所有

共有 人打赏支持
k
粉丝 1
博文 9
码字总数 8383
作品 0
朝阳
程序员
私信 提问
加载中

评论(1)

路桥楼
路桥楼
sudo code-push release-cordova myapp_android android

代码上传到服务器。备注make
Tonge/ionic-city-index-select

#ionic-city-index-select 基于ionic实现的城市索引选择。https://git.oschina.net/tonge/ionic-city-index-select Demo 预览地址:city.tongedev.cn About 作者:Tonge 出处:微信订阅号 To......

Tonge
2016/09/14
0
0
Android WebView 的三种使用方式

关于原生开发好,还是混合模式开发好,还是 套壳的方式好,在这里不是重点,没有最好的,只有相对适合的。重点是 那种方式 以最低的资源代价 适合你的业务场景,适合你的团队,根据实际情况来...

zhaiguangtao
2016/12/14
38
0
关于IONIC2 无法下载更新的问题。

从 my.oschina.net/u/24110/blog/750970 抄来的,有点问题但是又不知道是什么地方出错。 代码如下 import { Component } from '@angular/core'; import {AppVersion} from 'ionic-native'; ......

合肥市史河路扛把子
2017/01/04
556
2
Windows + Android + Cordova + ionic环境搭建

废话不多说,直接上干货: 一、ANT安装 Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。 下载地址:http://ant.apache.org/b...

刘草
2016/01/06
821
0
App跨平台开发框架分析

所谓的跨平台app开发就是一套代码写完以后可以多端发布运行到各个平台,比如:安卓、iOS、web。 原生开发是一对一的,安卓、iOS需要分别写两套代码,学习成本高、开发成本高、后期维护麻烦;...

yiranhaiziqi
2017/09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
34分钟前
1
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
37分钟前
4
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
3
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
17
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部