文档章节

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

k
 kongzong
发布于 2016/05/13 21:26
字数 785
阅读 205
收藏 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
怎样将BizTalk服务器应用程序和Service Bus Queues 和 Topics整合起来

微软BizTalk服务器使相关组织能够与贸易伙伴一起连接并跨企业扩展异构系统。Service Bus是Windows Azure的一部分,旨在提供连接、队列和路由功能,不仅仅是为云计算应用程序而且也为非云端应...

晨曦之光
2012/03/09
0
0
App跨平台开发框架分析

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

yiranhaiziqi
2017/09/11
0
0
关于IONIC2 无法下载更新的问题。

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

合肥市史河路扛把子
2017/01/04
541
2

没有更多内容

加载失败,请刷新页面

加载更多

20.27 分发系统介绍~ 20.30 expect脚本传递参数

分发系统介绍分发系统-expect讲解(也就是一个分发的脚本)场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因...

洗香香
29分钟前
1
0
设计一个百万级的消息推送系统

前言 首先迟到的祝大家中秋快乐。 最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两...

crossoverJie
35分钟前
1
0
软件架构:5种你应该知道的模式

Singleton(单例模式)、仓储模式(repository)、工厂模式(factory)、建造者模式(builder)、装饰模式(decorator)……大概每个上课听讲的程序员都不会陌生——软件的设计模式为我们提供...

好雨云帮
47分钟前
2
0
OSChina 周二乱弹 —— 这只是一笔金钱交易

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《暮春秋色》- 窦唯 / 译乐队 《暮春秋色》- 窦唯 / 译乐队 手机党少年们想听歌,请使劲儿戳(这里) @我没有抓狂:跨服聊...

小小编辑
58分钟前
739
16
df命令、du命令 、磁盘分区

9月25日任务 4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区 4.1、命令 :df #磁盘空间使用情况 [root@zgxlinux-02 ~]# df 按字节显示 1000Byte=1KB 1000KB=1MB 1000MB=1GB ...

zgxlinux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部