一直在做PC端的HTML5開發,之前也用過Phonegap,一直關注Hybird開發的發展。前幾天看到APICloud,試用了一下,整體感覺不錯,打算轉到apicloud開發,針對兩個平臺我也簡單的做下總結。
方法/步驟
1. PhoneGap起源——
構建一個Web技術和Objective-C之間的橋樑,即讓Web技術和Objective-C之間能夠互聯互通。通過標準的Web技術(HTML、JavaScript、CSS),開發者能夠開發類似本地應用的iPhone程式。
MP:使用Web技術開發類似本地應用的程式。
2.PhoneGap主要功能
打包:可以打包Web應用為本地應用格式(apk和ipa檔案)
訪問智慧移動裝置本地特性:GPS、裝置攝像頭、裝置資訊、通訊錄等
3.PhoneGap的本質:在移動裝置上像本地應用一樣執行Web應用(WebView實現);實現JavaScript和本地API之間的呼叫和通訊。
PhoneGap應用:實際上就是執行在移動裝置中WebView元件內的Web應用。
4.PhoneGap實現的JavaScript和本地API之間的相互呼叫和通訊方式:
iOS:
JavaScript-原生代碼:原生代碼攔截JavaScript中呼叫的window.location="gap://Class.method/args"命令。原生代碼攔截該命令後,解析獲取的引數,再呼叫對應的類、方法並傳遞引數
原生代碼-JavaScript:UIWebView.stringByEvaluatingJavaScriptFromString,實現原生代碼呼叫JavaScript
Android:
JavaScript-原生代碼:攔截JavaScript的prompt命令(預設會彈出對話方塊,PhoneGap的Android原生代碼會攔截該對話方塊)
Java-JavaScript:Android上的PhoneGap內部,使用Java實現了一個HTTP伺服器,通過永續性的XHR連線,JavaScript可以不斷輪訓內部XHR伺服器儲存的資訊,從而實現了從Java到JavaScript方向的通訊
BlackBerry 4.x:通過document.cookie實現(一方設定,另一方從Cookie中獲取資訊)
BlackBerry WebWorkshop
JavaScript-Java:通過ScriptEngine.addExtension,java物件可以暴露給JavaScript
Java-JavaScript:Java可以使用ScriptEngine.executeScript來呼叫JavaScript
Windows Phone7:
JavaScript-原生代碼:通過window.external.Notify將資訊傳送給原生代碼
原生代碼-JavaScript:通過WebBrowser.InvokeScript執行原生代碼呼叫JavaScript
5.PhoneGap功能特點
優點:
相容性
標準化——PhoneGap採用W3C標準
JavaScript+H5
開發成本低
缺陷:
執行速度慢,UI反應延時,在移動端越來越要求體驗上,表現的不是很流暢。
6.WebView和UIWebView
相同點:
用於在移動裝置上顯示網頁,二者都使用WebKit引擎
不同點:
WebView——Android
UIWebView——iOS
本質:WebView提供了與瀏覽器同樣的功能,但不提供瀏覽器邊框。因此,WebView方式下執行的Web應用,在使用者看來就像在本地應用一樣。WebView封裝了Web應用。
Apicloud
一個新興的平臺,上線短短半年多就被業界所看好,他們是用前端語言就能寫出媲美原生語言的app,使用JavaScript即可輕鬆呼叫各類模組,如果你一時忘記某個模組的引數名稱,IDE還提供智慧提示功能;同時每個模組都設定了配置項,開發者可快速的更改配置項以滿足差異化和精細化的需求,一套程式碼適配雙平臺應用。平臺產出的app上架store完全沒問題,目前已經有很多商業案例。
優點:
1、方案完整,簡化,上手快。因為有Phonegap的基礎,瞭解概念花了不到兩個小時,做出第一個小App花了一天半。
2、IDE整合做的不錯,直接連線雲端,SVN程式碼同步,直接連線手機App Loader真機除錯,Log可以通過IDE輸出,比模擬器真實,直觀。
3、雲編譯很方便,跨平臺打包,直接生成二維碼,我的小App做完打包,直接發二維碼給朋友用。
4、手機底層硬體/元件呼叫API很實用,測了一些,比如語音識別,都不錯。
5、文件完備,相比開源專案往往缺乏文件,資訊需要東拼西湊來說,APICloud的文件比較集中和全面。
缺點:
1、缺乏常見模式App的完整框架Demo,平臺前期估計得知識沉澱,一時半會不會有很多的demo和教程指導,時間長就應該會好一些。
2、UI元件不夠豐富(也可能是我瞭解還不夠),我嘗試寫測試App的時候最先考慮用APICloud提供的UI元件,但是發現很散且不成體系,無奈只好用JQMobi搭建了UI框架,雖然知道既然APICloud宣稱可以實現原生App體驗,像我這樣使用第三方JS框架的方式apicloud官方肯定是不推薦的。
3、文件層次和細緻程度還不夠。有一些地方有錯誤。另外還有一些API沒有說明文字,但是他們的文件是開源的,開發者可以幫助修改。
經過幾個月的快速迭代,現在的APICloud已經相當強大,各種封裝好的的原生模組,完善的雲端資料庫,讓使用者可以快速的開發自己的App,無需把經歷放在購置域名,伺服器上,節省了大部分費用。在開發中的問題已經經驗總結都分享在論壇中,大多數都已被加精,大家有興趣可以看看我之前的釋出的經驗分享。