原生app就是利用手機本地操作系統開發的手機app,目前手機系統主要分為安卓和蘋果iOS兩種,雙方都有各自的編程開發語言及工具,原生app開發就是利用官方的開發工具進行分別開發。
app混合開發是將原生app和webapp進行融合,部分核心板塊利用原生模式開發,非核心內容通過web方式實現.
APP開發模式通常分為WebAPP與NativeAPP原生模式兩種,這兩種模式均各自有自己的優勢,到底是采用NativeApp開發還是采用WebApp開發壹直是業界爭論的焦點,但是隨著HTML5的發展及雲服務普及,采用HTML5進行WebApp開發正在成為壹種趨勢,用戶可以根據應用特點和需求進行選擇,亦可選擇兩者混合模式:
NativeApp開發
NativeApp開發即我們所稱的傳統APP開發模式(原生APP開發模式),該開發針對IOS、Android等不同的手機操作系統要采用不同的語言和框架進行開發,該模式通常是由“雲服務器數據+APP應用客戶端”兩部份構成,APP應用所有的UI元素、數據內容、邏輯框架均安裝在手機終端上。
WebApp開發
WebApp開發即是壹種框架型APP開發模式(HTML5APP框架開發模式),該開發具有跨平臺的優勢,該模式通常由“HTML5雲網站+APP應用客戶端”兩部份構成,APP應用客戶端只需安裝應用的框架部份,而應用的數據則是每次打開APP的時候,去雲端取數據呈現給手機用戶。
原生APP開發及WebAPP開發模式的區別
WebAPP需開發“html5雲網站”和“APP客戶端”,昆明天度網絡公司總結這類型APP應用呈現以下特點:
(1)每次打開APP,都要通過APP框架向雲網站取UI及數據;
(2)手機用戶無法上網則無法訪問APP應用中的數據。
(3)框架型的APP無法調用手機終端的硬件設備(語音、攝像頭、短信、GPS、藍牙、重力感應等)
(4)框架型APP的訪問速度受手機終端上網的限制,每次使用均會消耗壹定的手機上網流量;
(5)框架型APP應用的安裝包小巧,只包含框架文件,而大量的UI元素、數據內容剛存放在雲端;
(6)APP用戶每次都可以訪問到實時的最新的雲端數據;
(7)APP用戶無須頻繁更新APP應用,與雲端實現的是實時數據交互;
適用企業:電子商務、金融、新聞資訊、企業集團需經常更新內容的APP應用。
NativeApp(原生型APP)需要開發“雲服務器數據中心”和“APP客戶端”,昆明天度網絡公司總結這類型的APP應用呈現以下特點:
(1)每次獲取最新的APP功能,需要升級APP應用;
(2)原生型APP應用的安裝包相對較大,包含UI元素、數據內容、邏輯框架;
(3)手機用戶無法上網也可訪問APP應用中以前下載的數據。
(4)原生型的APP可以調用手機終端的硬件設備(語音、攝像頭、短信、GPS、藍牙、重力感應等)
(5)APP應用更新新功能,涉及到每次要向各個應用商店進行提交審核。
適用企業:遊戲、電子雜誌、管理應用、物聯網等無需經常更新程序框架的APP應用。
到底該如何選擇WebApp和NativeApp開發模式
移動Web無所不在,移動Web是目前唯壹的支持各種設備訪問的平臺,與桌面Web壹樣,移動Web支持各種標準的協議。移動Web也是唯壹壹個可供開發者發布移動應用的平臺,它將各種移動交互與桌面任務有效地連接了起來;而開發NativeApp可以充分利用設備的特性,而這壹點往往是Web瀏覽器做不到的,所以對壹個產品本身而言,NativeApp是最佳的選擇。下面幾節將討論壹下NativeApp的壹些主要功能。
什麽時候應該選擇NativeApp
1.為應用收費
沒有任何地方規定開發者不能對壹個移動WebApp收取使用費,但是由於某些原因,人們常常認為不能或是不應該對壹個WebApp收取費用。由於歷史原因,導致移動設備上付費服務遭遇兩大阻力:
2.付款方式
在移動設備上輸入信用卡號相當麻煩,而且在許多老式設備上也沒有安全保障。壹種典型的方式是,如果妳需要對妳的應用收費,妳可以與運營商達成協議,讓運營商代為為妳的服務收費。這也意味著,妳需要和多個運營商達成合作。這通常是首選的方法,因為許多手機用戶可能根本就沒有信用卡,比如青少年。
另壹種方法是將用戶的信用卡信息保存在壹個安全的網站上。用戶可以通過登錄到該網站購買應用服務。這個過程不算特別理想,因為這意味著用戶不能直接通過他們的移動設備購買服務了。
3.強制分成
移動運營商是會提成的。App無論是通過運營商還是通過移動設備發布,他們都為應用提供了壹套收費機制。這些運營商和移動設備將會提取部分收益,然後將剩余的部分交給應用開發商,這也意味著,開發人員必須遵守他們的市場規則。適應運營商的市場規則通常是非常困難的,需要投入大量的人力資源。相比而言,移動設備的市場規則則簡單許多,但是也存在不少的困難。
妨礙運營商和移動設備開發商利益的應用以及服務都將受到阻擾。過去,那些不靠運營商和移動設備開發商運作的網站如果收入過於顯眼的話,都逃脫不了被關閉的命運,但是最近,這樣的事情鮮少發生了。
如果妳想為妳的NativeApp收費,那麽妳就必須接受這個現實——妳必須遵守別人的市場規則,還得放棄部分收益。
4.開發遊戲
如果妳是想開發壹個移動遊戲(移動遊戲是移動市場上最大的壹塊),那麽妳需要開發壹個NativeApp。遊戲對資源的占用很大,並且需要使用許多設備API或平臺API。雖然,現在有幾款完全使用Web技術開發的遊戲占有了壹定的市場份額,但是和NativeApp市場的占有情況相比,還是微不足道的。遊戲用戶對應用的視覺和操作效果要求很高。移動Web雖然提供了壹些仿真體驗,但還遠遠不能滿足用戶的需求。
在開發移動遊戲時,妳需要慎重考慮妳的應用需要支持哪些平臺。幸運的是,現在有許多工具能夠幫助妳將妳的遊戲推向多個平臺,但是完成這些工作,還是需要花費大量的人力和物力。
5.使用定位功能
下壹個功能就是定位功能,可以通過GPS或者是信號檢測確定用戶當前的位置信息。以前只能通過NativeApp的APIs查看用戶的位置信息,但現在大多數主流移動瀏覽器上都嵌入了W3CGeolocationAPI。像iPhone或Android這樣安裝了WebKit的設備,或是配置了Opera或Mozilla瀏覽器的設備,都可以獲取用戶的位置信息。
我相信定位功能會為Web技術帶來許多全新的應用。如果能夠合理利用Web瀏覽器,Web開發商就能使用用戶的位置信息和其他內容開發出更加有趣的應用。雖然這在技術上沒有太大的困難,但卻受到隱私保護條例的限制。我們將Web瀏覽器當做是用戶進入WorldWideWeb的入口。加入定位功能,意味著在網站中引入了壹些敏感信息,這有可能導致嚴重的後果。但是位置感知應用中顯示的位置信息必須經過用戶的授權,用戶當然有權禁止應用發布自己的位置信息。
6.使用攝像頭
攝像頭可以為妳的應用提供豐富的可能性。以往移動MMS(MultimediaMessagingService)被用於處理移動照片。換言之,妳拍了壹張照片後,需要使用MMS將它傳送給壹個服務器,服務器對照片做出相應的處理,並將處理完成的結果通知給妳。這個過程是非常耗時的,而且相當復雜,也沒有可靠性保障。
通過訪問攝像頭,NativeApp開發者能夠簡化拍照的過程。用戶可以直接在客戶端對照片做壹些簡單的處理,只有在有需要的時候才將照片上傳給服務器,而且是通過可靠的HTTP傳輸。W3C正在開發壹個訪問攝像頭的API,但現在還沒有將這部分工作正式整合到瀏覽器中。
在許多類型的移動Apps中,攝像頭是非常有用的,比如快拍應用、短片拍攝應用等等,攝像頭可以用來捕捉許多重要的瞬間。不久的將來,我們可以看到——只要通過攝像頭拍攝某個標識,應用程序就能自動完成對標識上的語言轉換工作——這個技術在日本已經開始流行起來了。
7.使用感應器
現在越來越來越多的移動設備上都新增了感應器功能,該裝置可以感知設備的物理速度以及重力,並將感知的數據結果傳送給設備。這個裝置常被用來感應設置是否被翻轉,應用根據接受到的信息自動調節畫面的方向。
感應器可以用來幫助用戶提升與設備交互時的真實感;大多數移動設備都是手持的,應用能夠根據設備的方向調整內容畫面,比如翻轉屏幕,或是檢測物理移動,並能據此猜測用戶所處的環境。舉壹個簡單的例子:比如用戶正在走路,那麽感應器能夠檢測到壹個輕緩的移動或是速度,這時可以為用戶提供壹個大字體的用戶界面,從而使得用戶更容易看清屏幕上的內容。
然而,開發者也不能過分依賴感應器,因為感應器無法區分究竟哪些交互是有意的,而哪些是沒有意義的。每個移動交互都需要通過“傳輸測試”。設計妳的交互時必須考慮用戶在壹個擁擠的汽車或是火車上的場景。考慮壹下如果用戶正身處擁擠的地鐵或是正在駕車時,妳的應用能否正確處理用戶搖晃移動設備的動作。通常,大多數開發者都沒有考慮這些因素。確保為每個任務設計壹個備用方案以處理特殊場景中的移動交互。
8.訪問文件系統
如果妳的應用需要將數據保存在本地,那麽妳需要開發壹個NativeApp。比如妳要保存用戶的地址簿、電話或E-mail信息,或是保存從其他設備上獲取的數據。
訪問文件系統常常會涉及到安全和用戶隱私保護的問題。惡意應用程序可能會修改或是刪除妳的移動設備上的數據。壹個攜帶病毒的應用程序可以利用移動設備上的關系網將病毒擴散到許多其他的手機上,在采用移動應用認證機制以前,這種事情是常常發生的。
另壹方面,移動設備正變得越來越私人化,移動設備上保存了大量用戶的個人信息,以及用戶的朋友信息和商業信息。針對這些私人信息開發應用是壹個不錯的想法。但是這也存在壹定的風險,使用保存在移動設備上的數據可以為用戶提供更加有針對性的服務。
開發者必須謹記,只有在獲得用戶的授權後才能訪問用戶的私人數據。我們看到許多應用在沒有得到用戶授權的情況下使用了大量的用戶私人數據,而被誤認為是垃圾信息或是釣魚應用,即使這些應用原本是在提供壹些非常有用的服務。人們對妳的應用的誤解將會影響到妳的服務的推廣,如果運營商收到過多關於妳的應用的投訴,那麽妳的服務可能將被終止,甚至會牽連其他的應用。
訪問文件系統時至關重要的壹點就是在沒有獲得用戶授權的情況下,不要訪問任何用戶的私人數據。而這壹點,往往被大多數應用忽略了。W3C正在為移動開發商開發相關的標準API,但目前該工作尚未完成。
9.離線用戶
最後壹個需要開發NativeApp的理由就是,用戶有可能是離線的或者無法接入移動網絡。這在城市可能很少發生,即使是在農村,網絡的覆蓋也已經逐步普及了。但是短暫的網絡連接中斷還是時常發生的,妳的應用程序應該考慮如何處理這種情景。
想想用戶通常在什麽時候,在哪裏會使用妳的App。如果是壹個移動遊戲,那麽用戶很可能在飛機上使用這個App。跟蹤地圖應用常在偏遠且網絡覆蓋不佳的地方使用。移動旅遊向導常在壹個國外的網絡中訪問,往往需要支付漫遊和國際網絡費用。這時,應用程序最好能夠為用戶提供離線服務,保證用戶在不接入網絡的情況下,仍然能享受同等的服務。
現在支持HTML5的瀏覽器也能實現脫機訪問功能,但對用戶來說可能不太明顯。隨著越來越多的瀏覽器都開始支持脫機訪問,應用需要明確地告訴用戶網絡連接中斷時,他們仍然可以訪問移動WebApps。
NativeApps常常假設網絡連接是可靠的。App通常只考慮了網絡狀況良好的情景,想當然地認為網絡是封閉的,並且網速足夠快。移動設備從網絡良好的環境突然進入壹個網絡糟糕的環境並不少見。NativeApps應該在網絡狀況最差的情況下測試。比如用戶啟動任務時可能還是全信號覆蓋,而在任務結束時可能已經完全沒有網絡信號了。
用戶在安裝NativeApps時,根本不會考慮是在線訪問還是離線訪問——他們期望的是不管在任何狀況下,NativeApps都能正常工作。而這也是開發者的職責。
什麽時候應該選擇WebApp
只要妳的應用程序不滿足之前提到的NativeApp條件之壹,那麽妳就沒有必要開發壹個NativeApp,而應該選擇開發壹個WebApp。正如文章之前提到的,我是壹個NativeApp的擁護者,我認為NativeApp有許多優秀的特質,並且具有很大的市場潛力,但是WebApps是唯壹壹個經久不衰的移動內容、服務、應用開發平臺。
NativeApp並不能明顯地為用戶提供更好的服務;它反而會增加項目的成本,減少了應用發布的渠道,增加了App升級的復雜度,削弱了開發者對應用的控制和利潤,並且可能會給設備帶來麻煩。NativeApp可以為開發者帶來短期的效益,但這是有壹定風險的,甚至可能會影響到移動市場的可持久發展。
移動WebApp的優勢在前文中已經提到過了。如果上壹節提到的幾點功能是促成妳選擇NativeApp的唯壹原因,那麽如果能夠在移動瀏覽器上屏蔽這些障礙,妳是否還會堅持選擇NativeApp呢?Palm的webOS已經著手解決了上述的部分問題。他們基於WebKit構建了壹個全移動操作系統,將手機變成了壹個Web瀏覽器。所謂的“NativeApps”實際上就是壹個WebApps。
PhoneGap也是壹個類似的項目,這個開源項目用於幫助開發者在iPhone、Android以及BlackBerry設備上開發NativeApps,並且能夠模擬設備上的功能(如定位功能和文件系統)供WebApps調用。這些代碼可以在各個設備的應用商店中發布並且出售,但是他們使用的通用代碼和設計是可以***享的。由於開發的是壹個WebApp,開發者可以為低端的移動瀏覽器開發壹個簡化版的應用。只用開發壹次,就可以部署在多個平臺上了,
對於那些有著豐富的移動開發經驗的程序員來說,壹提到“要開發壹個功能豐富的應用”時,可能首先想到的就是NativeApp。雖然在很多設備上,這壹想法仍然適用,但是現在移動WebApps上也提供了足夠豐富的功能接口供開發者調用。這使得WebApp不僅可以像NativeApp壹樣被設計得功能豐富界面絢麗,而且還能在各個平臺上遷移,甚至不用修改壹行代碼。
現在在移動設備開發中,移動WebApps的創新進入了前所未有的高潮時期。但更重要的是,這是有史以來第壹次,移動設備開發商決定***同制定壹個移動Web開發的標準,就像是桌面Web上的標準壹樣。不僅如此,那些支持移動WebApp創新功能的設備或是支持第三方瀏覽器的移動設備都受到消費者的歡迎。