很久之前,大家先是著迷於網站開發。後來隨著 Flash 的流行,又都想整 Flash。而隨著 Facebook 的問世,又使它成為了生活中不可或缺的一部分。現在人人都想做移動App。但是否真的需要做一個App呢?畢竟完成一個 App 的開發也並非易事。本文最後附上了一個深入探討此話題的視訊,該視訊通過一些案例,來看看開發一個原生應用到底是不是最佳方案。
開發原生應用的一些問題
當智慧手機應用市場剛剛開放時,使用者對原生應用的需求如飢似渴,好機遇紛至沓來,然而這種日子已經一去不復返了。
如今,不論是iTunes還是Android商店,App均已達到了一百萬之多,這種情況明顯是僧多粥少。
然而更糟糕的是,在缺乏成熟搜尋功能的應用商店裡想被使用者發現也很難。曾幾何時,一旦你把App放到應用商店上,就會有空前的曝光率,而如今,你的App就連想被使用者看到都很難,甚至需要藉助一些技巧才能幫你提高App的排行。
即使某個使用者看見並下載了你的App,那也不能保證他們會一直保留。由於手機記憶體的限制,使用者通常只會在手機中保留有限數量的App。他們掌握著App的生殺大權,幹掉App時更是眼睛不帶眨一下的,使用者通常只為常用App保留一席之地。
原生應用的最大問題就是為其所投入的成本,不像學習 HTML 和 CSS,開發原生應用的門檻並不低,這也意味著,相比其他的 Web 同行來說,僱傭一個客戶端開發者的費用可能更高。
真正的開銷是耗費在支援多平臺和多裝置。不像Web應用,build 一次,基本可到處執行。用一種語言開發的App甚至不能移植到不同平臺上。
不僅初期開發應用的成本高,並且後期維護成本也很高。每當有新的裝置發行,你就得更新你的應用。螢幕大小、解析度,以及作業系統這些因素都將影響你的應用程式。
那麼什麼情況應該做原生應用呢?
以下是一些適合原生應用的情景。
功能
基於瀏覽器的Web App的某些功能性的缺失,是需要建立原生應用的一大理由。大部分智慧手機對於資料具有許可權控制,一些原生特性只支援原生應用的訪問。例如, iPhone上的Web應用是不能獲取通訊錄資訊的。
速度
響應速度是選擇原生應用的又一理由。儘管現在來說是可以在手機上快取網頁的,但是它們的響應速度永遠不會像原生應用那樣快。所以,當你希望以速度為重時,選擇原生應用是極好的。
專注
原生應用通常可以讓使用者專注完成目標明確的任務。比如:拍照、刷社交網路、發資訊等。這是因為原生應用有更好的針對性,使用者總是偏愛能立即響應的一方。
安放到主螢幕
能夠被放到手機主螢幕上也是人們選擇原生應用的一大原因。不過這個理由也許將不再適用了,隨著響應式網頁的改進和發展,使用者會越來越適應用網頁來進行操作。
不僅如此,現在手機網頁也能像App一樣放到手機主螢幕上。甚至網頁應用能夠像原生應用那樣傳送通知。
是否建立一個原生應用的關鍵,最終仍然取決於使用者使用的流暢性以及程式本身的功能性。
內容 VS 行為
關於到底是選擇原生應用還是網頁應用,儘管這很難下定論,但總還是有些規律可循的。總的來說,如果你意在關注使用者的行為,那麼原生應用就是你的歸宿。而如果你旨在向使用者傳遞資訊,那麼一個移動端友好的手機網頁就是首選。
網頁應用其實也是能夠適用於基於任務型的應用,特別是在一些簡單的使用者場景。然而,現實生活卻複雜很多,並不只是非黑即白。
混合型應用
如果想讓事情變得更復雜,還有第三種選擇——混合型應用。諸如 PhoneGap 這類開源框架,更是支援使用 HTML、CSS 和 JavaScript 來建立原生應用,而這種應用必定擁有良好的跨平臺性。
乍看上去,混合型應用似乎是一個最佳選擇。不僅開發 App 的門檻低了,還支援跨平臺,它還可以像原生應用那樣訪問大部分功能。
但是在你一頭扎進混合式應用開發之前,最好還是先了解下它的缺陷所在。
首先,混合應用不能完美替代原生應用。此外還有一些效能和相容性問題。
不過觀念才是混合應用最大的問題。它們通常既不像原生應用,又和移動端友好的網站存在差異。而使用者通常更希望它看起來像是 iPhone 或者 Android 上的原生應用。
當你在糾結如何做一個只需建立一次又能跨平臺的應用時,或許混合應用會是一種妥協的兩全之計。
所以最終結論是?
三種方式各有優劣,想要確定到底採用哪種,的確是個令人頭疼的問題。但是歸根結底還是投資回報的問題。
當在考慮是開發原生應用還是移動端友好網站的時候,一定要三思後行。對於“因為大家都在做 App 所以我也該做一個 App”這樣的想法,我們不應該不假思索的就認同。相反,應該嚴肅看待這個問題。
隨著手機市場持續指數增長趨勢,也許所有事情都會變得些許不同。伴隨著蜂窩網路的快速發展,也許我們可以翹首期待下第四種選擇——基於 Web 的App。但是在未來,手機市場仍將快速進化。在投資大量資金去做過些年有可能會過時的應用之前,我們得認真思考。