Hybrid App(混合模式移動應用)是指介于web-app翩剪、native-app這兩者之間的app,兼具“Native App良好用戶交互體驗的優(yōu)勢”和“Web App跨平臺開發(fā)的優(yōu)勢”辽幌。
Native App
移動互聯(lián)網(wǎng)剛開始興起的時候,我們手機上的應用(App)都是通過Native App開發(fā)而成的;Native App的開發(fā)具備很多的優(yōu)勢:
->開發(fā)出來的產(chǎn)品具備良好的用戶體驗侍咱,動畫和運行的速度非常的流暢柠并。
->能夠?qū)κ謾C的內(nèi)部軟件或者硬件進行直接的操作岭接,例如:可以調(diào)取用戶的通訊論、讀取用戶的短信(當然需要用戶同意)臼予,可以調(diào)取用戶的攝像頭鸣戴,調(diào)取手機的重力感應等
但是Native App的開發(fā)也存在自己的很多不足:
->首先是不能跨平臺,針對目前最常用的IOS和安卓平臺粘拾,需要用不同的技術(shù)來開發(fā):IOS一般使用的是Object-c窄锅,而安卓平臺使用的一般是Java-Native,這樣就導致了開發(fā)一款App需要兩隊人馬去做缰雇,隨之而來的問題也會很多入偷,比如:開發(fā)成本高,開發(fā)周期長械哟,有的功能IOS有但是安卓沒有(手Q就是這樣的)等疏之。
->開發(fā)出來的產(chǎn)品需要用戶自主性比較強:首先需要客戶到應用商店安裝,后期如果版本升級暇咆,用戶想要看到最新的版本還需要重新的進行下載安裝升級等锋爪。
->在IOS平臺上丙曙,開發(fā)出一款App上傳到蘋果App Store需要7天的審核期,在此期間如果審核失敗几缭,在此上傳還需要七天河泳,這樣就有可能導致產(chǎn)品不能按時發(fā)布等。
Web App
而HTML5的出現(xiàn)讓Web App露出曙光年栓。HTML5基本上不需要考慮是IOS還是安卓拆挥,兩個平臺一套代碼基本上都是支持的;更新版本只需要在自己的服務器上更新了即可某抓,這樣用戶再次訪問的時候看到的就已經(jīng)是最新版本的了纸兔;不需要經(jīng)過漫長審核...這些優(yōu)勢讓開發(fā)者們大為心動,但是HTML5的本質(zhì)是運行在瀏覽器中的頁面(App是直接運行在操作系統(tǒng)中的)否副,由于瀏覽器的差異以及對一些特殊功能支持力度的不夠汉矿,導致HTML5開發(fā)存在一些局限性問題:
->開發(fā)出來的產(chǎn)品性能和運行速度沒有App的好,用戶體驗不是很好备禀。
->雖然安卓和IOS平臺上的瀏覽器大部分都是webkit內(nèi)核的洲拇,但是瀏覽器廠商為了自己的特殊化,移動設備上的瀏覽器兼容也不少曲尸,甚至一些兼容問題是無法解決的(例如:position:fixed的支持非常的不好)赋续。
->由于HTML5的本質(zhì)是運行在瀏覽器中的,所以想要操作系統(tǒng)中的軟件或者硬件都需要所在的瀏覽器支持另患,很遺憾大部分瀏覽器對于這方面的操作都支持的不好纽乱,所以也就導致了,H5的產(chǎn)品在調(diào)取通訊錄昆箕、攝像頭鸦列、讀取短信等方面存在了很大的短板,基本上很少用H5去做這些事情的鹏倘。
Hybrid App
正是在這樣是機緣巧合下薯嗤,基于HTML5低成本跨平臺開發(fā)優(yōu)勢又兼具Native App特質(zhì)的Hybrid App技術(shù)殺入混戰(zhàn),并且很快吸引了眾人的目光纤泵。Hybrid App是把Native App和Web App混合在一起的新興模式(目前市場上的大部分App都是混合模式開發(fā)的)应民。利用各自的優(yōu)勢,去開發(fā)一款低成本夕吻、跨平臺、更新快繁仁、性能好涉馅、功能豐富的App。
Hybrid App按網(wǎng)頁語言與程序語言的混合黄虱,通常分為三種類型:多View混合型稚矿,單View混合型,Web主體型。
多View混合型(目前常用的)
即Native View和Web View獨立展示晤揣,交替出現(xiàn)桥爽。2012年常見的Hybrid App是Native View與WebView交替的場景出現(xiàn)。這種應用混合邏輯相對簡單昧识。即在需要的時候钠四,將WebView當成一個獨立的View(Activity)運行起來,在WebView內(nèi)完成相關(guān)的展示操作跪楞。這種移動應用主體通常是Native App缀去,Web技術(shù)只是起到補充作用。開發(fā)難度和Native App基本相當甸祭。
Web主體型(目前比較新穎流行的方式)
即移動應用的主體是Web View缕碎,主要以網(wǎng)頁語言編寫,穿插Native功能的Hybrid App開發(fā)類型池户。這種類型開發(fā)的移動應用體驗相對而言存在缺陷咏雌,但整體開發(fā)難度大幅降低,并且基本可以實現(xiàn)跨平臺校焦。通俗來說赊抖,就是App中的頁面基本上都是H5完成的,我們使用一些技術(shù)框架封裝一個App的殼子斟湃,框架中還提供一些操作系統(tǒng)級別功能的API供H5的調(diào)取熏迹,一般來說,都是由JS編寫代碼來完成App殼子搭建的凝赛,這樣開發(fā)的App也就不會在使用JAVA或者Object-c了注暗。
目前市面上比較流行的框架有:React Native、phoneGap墓猎、appcan捆昏、APICloud、ionicframework毙沾、appMobi骗卜、WeX5...
H5和App之間是怎么通信交互?
大家只需要知道,只要App那邊做了特殊的處理(就是在webView中注入一個對象左胞,對象中包含了我們需要調(diào)取的方法)寇仓,那么在H5的js中,我們就可以調(diào)取WebView中提供的方法烤宙。