#IOS在線更新方案

IOS在線更新方案

簡介:

引用于:價值100W的經(jīng)驗分享: 基于JSPatch的iOS應(yīng)用線上Bug的即時修復(fù)方案,附源碼

幾種在線更新方案的對比: 為什么是JSPatch?

方案一: 申請”加急審核”

  • 方法: 提交應(yīng)用時,選擇”加急審核”.
  • 優(yōu)點: 操作簡單,只需要重新上傳應(yīng)用即可;
  • 缺點:”加急審核”,肯定是不能經(jīng)常使用的.
  • 簡評: 我想,這可能是大多數(shù)公司遇到緊急問題時,最常使用的方案.一個應(yīng)用,每年是有若干次機會申請”加急審核”,來縮短應(yīng)用新版本的審核周期.通常審核周期是7天左右;”加急審核”,通常只需要3天左右.

6-8日后 AppStore審核加速 正常審核時間平均在4天左右

方案二: 使用 webview + Html5 頁面

  • 方法: 特定的可能需要經(jīng)常換的頁面使用WebView來顯示,內(nèi)部使用Html5的內(nèi)容來填充.當(dāng)需要改變頁面時,只需要改變下服務(wù)器接口返回的內(nèi)容即可.
  • 優(yōu)點: 對于內(nèi)容的更新,足夠靈活和迅速.
  • 缺點: 無法修復(fù)非HTML5頁面的Bug;Html5 交互和UI通常遜色于原生頁面.
  • 簡評: 混合應(yīng)用常用的方式,如PhoneGap等;對于大多數(shù)原生應(yīng)用來說,此方案基本無適用性.

方案三: 編寫基于ReactNative的應(yīng)用

  • 方法: 使用 ReactNative 來編寫應(yīng)用或應(yīng)用的部分頁面,更多介紹參見: React Native 官方文檔中文版
  • 優(yōu)點: 原生UI,原生交互,支持服務(wù)器方式在線更新應(yīng)用.
  • 缺點: 對于非ReactNative編寫的頁面無能為力.
  • 簡評: 個人主觀是很看好 ReactNative的,也在慢慢踩坑;但現(xiàn)實是大部分公司的已有項目是基于Objetive-C的,所以基于ReactNative的在線更新策略,目前對于大多說公司來說也并不具有可行性.

方案四: 基于JSPatch實現(xiàn)在線補丁式更新

  • 方法: 在自己的項目中引入JSPatch庫,然后參見下文繼續(xù)討論的方案細節(jié)實施即可.JSPatch的入門使用,參見: http://www.ios122.com/2015/11/jspatch/
  • 優(yōu)點: 支持操作所有工程中引入的CocoaTouch庫與各種第三方庫.可完全自由定義與重寫已有代碼的邏輯.
  • 缺點: JS語法操作API,語法轉(zhuǎn)換有一定成本.
  • 簡評: 大多數(shù)時候,我們需要的只是重寫下某個方法,甚至某個判斷,某個默認值,就可以很好地修復(fù)某個線上的Bug.所以,JSPatch,已經(jīng)夠用了.當(dāng)然,如果是對于復(fù)雜的新功能的添加的話,建議還是提交審核吧.另外,不得不說一句,JSPatch + ReactNatvie 將來或許會成為一個很強力的組合,前者側(cè)重于Bug的修復(fù),后者側(cè)重于復(fù)雜新需求的添加.本文接下來的篇幅將注重討論基于JSPatch的線上Bug的即時修復(fù)方案.

JSPATH是什么?

引用來自:JSPatch庫, 一個Apple官方支持的實現(xiàn)在線更新iOS應(yīng)用的庫

簡介

JSPatch 可以讓你用 JavaScript 書寫原生 iOS APP。只需在項目引入極小的引擎,就可以使用 JavaScript 調(diào)用任何 Objective-C 的原生接口,獲得腳本語言的優(yōu)勢:為項目動態(tài)添加模塊,或替換項目原生代碼動態(tài)修復(fù) bug。

優(yōu)勢

  • 在項目中引入JSPatch,就可以在發(fā)現(xiàn)bug時下發(fā)JS腳本替換原生方法,可以做到無需更新整個APP即時修復(fù)bug!
  • JSPatch用iOS內(nèi)置的 JavaScriptCore.framework作為引擎;JSPatch也符合蘋果的規(guī)則。蘋果不允許動態(tài)下發(fā)可執(zhí)行代碼,但通過蘋果 JavaScriptCore.framework 或 WebKit 執(zhí)行的代碼除外,JS 正是通過 JavaScriptCore.framework 執(zhí)行的。
  • JSPatch非常小巧
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容