關於ionic的非二進制資源的雲端更新

所謂的雲端升級,就是熱分佈,ionic屬於cordova項目,html,js,css,圖片字體等資源能夠經過應用自身從服務器下載最新版本並安裝,這樣的好處是下載量很是小,安裝接近無縫,對最終用戶無干擾或極少干擾,不知不覺中系統就更新了。固然這裏這種發佈只是針對前面說的幾類資源的更新纔有效,若是cordova插件更新,則仍是須要發行二進制版本,進行常規更新。css


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

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方案服務器

 

codepush實驗筆記

安裝code-push-cli

$ sudo npm install -g code-push -dsession

註冊code-push

$ 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 應用

$ 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>>

相關文章
相關標籤/搜索