所謂的雲端升級,就是熱分佈,ionic屬於cordova項目,html,js,css,圖片字體等資源能夠經過應用自身從服務器下載最新版本並安裝,這樣的好處是下載量很是小,安裝接近無縫,對最終用戶無干擾或極少干擾,不知不覺中系統就更新了。固然這裏這種發佈只是針對前面說的幾類資源的更新纔有效,若是cordova插件更新,則仍是須要發行二進制版本,進行常規更新。css
Ionic deployhtml
http://docs.ionic.io/docs/deploy-from-scratch
默認的實現是用ionic.io本身的服務器,固然也能夠換成本身的服務器來拉取新資源包android
微軟的code pushios
http://microsoft.github.io/code-push/index.html#getting_started
比起ionic 提供的deploy服務好很多。最重要是資源包是放在azure國內無壓力(可更換,其次支持強制和推薦更新(可配給用戶的提示更新文案changelog,支持不一樣的channel(dev,staging,production等。git
cordova-app-loadergithub
https://github.com/markmarijnissen/cordova-app-loadernpm
綜合考慮後,決定選擇 code push方案服務器
$ sudo npm install -g code-push -dsession
$ code-push registerapp
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 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 plugin add cordova-plugin-code-push
<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的標配了。
$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 提示也足夠了。
$ 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>>