微軟的Code Push毅臊、Ionic官方的Ionic Live Updates都可以用來(lái)動(dòng)態(tài)更新ionic項(xiàng)目归粉,但是在國(guó)內(nèi)都不太穩(wěn)定,原因如下:
Code Push使用的是微軟的azure
來(lái)存放更新包,Ionic Live Updates使用Amazon的aws
來(lái)存放更新包,然而這2個(gè)云服務(wù)在國(guó)內(nèi)訪問(wèn)都不穩(wěn)定循狰。
cordova-hot-code-push
- 允許我們將更新包放在自己的服務(wù)器上
- 它通過(guò)對(duì)比文件的hash值窟社,如果hash值變了券勺,則表示該文件有更新,需要重新下載
- 如果有新增加的文件灿里,也下載
- 如果遠(yuǎn)程配置文件中的
release
跟app中的不一樣关炼,則需要更新
// 配置文件chcp.json
{
"update": "start",
"content_url": "http://xxxx/,
"release": "2017.04.18-17.23.22"
}
在我個(gè)人看來(lái),上面第4條規(guī)則是不合理的:如果你程序包中的release
是最新的匣吊,但你忘記發(fā)布最新的更新包到網(wǎng)站上去儒拂,就會(huì)導(dǎo)致app去下載舊的更新包。
它直接比較字符串是否相等來(lái)判斷是否需要更新色鸳,而我希望的是:比較release
字符串代表的日期哪個(gè)是最新的就用哪個(gè)社痛。
所以我fork的它的源代碼,修改了下邏輯:將原來(lái)按release
字符串是否相等來(lái)判斷是否需要更新 修改為遠(yuǎn)程 release
代表的日期是否比app中的新命雀,如果新則表示需要更新蒜哀。
同時(shí)我也添加了cordova的hook,每次build時(shí)都自動(dòng)生成最新的配置文件(chcp.json最新時(shí)間配置文件吏砂,chcp.manifest文件hash值的配置文件)撵儿,不用每次手動(dòng)更新配置文件乘客。
未完待續(xù)