H5分享系列五----Ionic App动态更新(cordova-hot-code-push)

微软的Code Push、Ionic官方的Ionic Live Updates都可以用来动态更新ionic项目,但是在国内都不太稳定,原因如下:
Code Push使用的是微软的azure来存放更新包,Ionic Live Updates使用Amazon的aws来存放更新包,然而这2个云服务在国内访问都不稳定。

cordova-hot-code-push

  • 允许我们将更新包放在自己的服务器上
  • 它通过对比文件的hash值,如果hash值变了,则表示该文件有更新,需要重新下载
  • 如果有新增加的文件,也下载
  • 如果远程配置文件中的release跟app中的不一样,则需要更新
// 配置文件chcp.json
{
  "update": "start",
  "content_url": "http://xxxx/,
  "release": "2017.04.18-17.23.22"
}

在我个人看来,上面第4条规则是不合理的:如果你程序包中的release是最新的,但你忘记发布最新的更新包到网站上去,就会导致app去下载旧的更新包。

它直接比较字符串是否相等来判断是否需要更新,而我希望的是:比较release字符串代表的日期哪个是最新的就用哪个。

所以我fork的它的源代码,修改了下逻辑:将原来按release字符串是否相等来判断是否需要更新 修改为远程 release代表的日期是否比app中的新,如果新则表示需要更新。

同时我也添加了cordova的hook,每次build时都自动生成最新的配置文件(chcp.json最新时间配置文件,chcp.manifest文件hash值的配置文件),不用每次手动更新配置文件。

未完待续

你可能感兴趣的:(H5分享系列五----Ionic App动态更新(cordova-hot-code-push))