Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android資訊 >> 七年iOS工作經驗的我為什麼放棄了iOS而選擇了Android

七年iOS工作經驗的我為什麼放棄了iOS而選擇了Android

編輯:Android資訊

本文由碼農網 – 唐李川原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!

上周一我非常開心。因為我被允許為一個曾經工作過的客戶開始開發一個新的Progressive Web App原型。

我拿出一個常在我身邊的用來開發的比較老式的Android手機。然後我從我的口袋裡拿出精致的iPhone 6S,它有著非常棒的界面設計和敏捷的操作系統。然而當我看著我的iPhone時我有一些沮喪。

我意識到外表光亮的蘋果手機硬件作為一個平台有些不兼容web應用,而我那又髒又破的Android手機卻可以。

就是這一點讓我意識到我和IOS已經結束了。

因此,我沒有打開我的文本編輯器而是下單買了一個Nexus 6p Android手機並且報名參加了Google fi手機服務課程(順便提一下,這真的很棒!).

就這樣,七年多以後,再見了IOS。

什麼!?IOS有什麼問題嗎?

還記得當初iPhone的發布會嗎?在發布會上喬布斯將這款令人吃驚的移動電話和音樂播放器和一個網絡交流設備的組合介紹給了消費者。

我不知道你們是不是這樣,但是在我的觀念裡有一個優秀的網頁浏覽器在我口袋裡對我來說始終是一股巨大的誘惑力。

那種理念從未改變。

我當然不知道這背後的整個故事,但是可以肯定的是蘋果公司的初衷是方便iOS第三方開發者能使用所有的web技術來開發app。Safari(浏覽器,是蘋果計算機的最新操作系統Mac OS X中的浏覽器)增加了對制作web app的支持,該web app可以作為一個圖標添加到你的主屏上,並且通過在web app中添加少量能使用的具有魔力的元標簽來制作出一個新的應用,這個應用可以安裝到你的主屏上。然後,當你打開這個app時,它會以獨立模式跑起來。

這個計劃的這些內容在很多方面體現的就是最初的“Progressive Web App”,而這還是在2009年左右!

好好設想一下…

1.它們可以在浏覽器裡打開,但是你可以稍微改進它們,讓它們能在手機主屏狀態下打開。

2.當你在主屏上運行它們的時候,它們會以滑動屏幕的方式打開並且不需要任何可見的浏覽器用戶界面。

3.你可以挑選一個加載屏幕顯示方式和app圖標。

4.你甚至可以從幾個不同的狀態欄工具顏色裡選擇一款!

我不知道這種類型的app是否實際上是打算作為第三方開發者為IOS開發app的主要途徑,但是不管怎樣,這種方式已經走在了它所處時代的前面。

不幸的是,蘋果公司的Web平台本身並沒有完全准備好成為公眾關注的焦點。它在某種程度上使創建的web app看上去和表現的像一個原生app,這是六年前我用David Kaneda開發的很棒的JQTouch 庫准備做的事。好玩的是,我發布的一個老掉牙的演示視頻,讓我得到David的關注,他給我打了一個電話,這使我差點在extjs裡獲得一份工作,因為這時他們在重構Sencha並且開始編寫Sencha Touch框架。但是電話斷線使得一切成了泡影。

但是不管怎樣,結果卻是在IOS操作系統上的web的性能卻不足以滿足開發者對提高IOS上web性能的渴望。因此公司的開發者被留下來解決這個問題,他們常為解決優化App性能,使其在設備上能夠自然地跑起來並且給它們更好的性能以及更高的API准入權限的問題而抓狂。

來看看IOS SDK和App Store

蘋果公司曾做出了一個被證明是一個非常聰明的商業決策:他們發布了一款IOS SDK和一個App Store和其余的部分。但是這個商業決策已經成為了歷史。

首先,我對app很感興趣,這種興趣的程度看上去就和其他每一個人一樣。當我們真正需要一直工作構建app時,我們就一直忘身心的忙於構建這種應用程序!誰知道呢?!;

總之,我很快發現我自己在到處尋找最好的的app並且不管什麼樣的銀行應用,什麼樣的社交網絡應用,和什麼樣其他的服務型的應用,只要這種類型的應用裡有最好的IOS應用我就會去尋找。我買了一本關於在IOS操作系統上開發應用的書而且還寫了一兩行簡單的代碼。我以前的同事Ryan Youngman制作了一個iSaber應用,這個應用能讓你用你的手機在你的朋友面前晃動形成一個虛假的光劍。我認識的每一個開發者都在談論IOS開發但是這種情形在某種程度上使得IOS所帶來的所有樂趣漸漸消失。

要明白你不得不通過在IOS上開發app來跳到IOS這個坑似乎並不正確。

很快開發者放棄了完全開放的web空間而選擇一個磚牆高樹的城堡,在這個城堡裡的最高統治者強迫每一個進來的人繳納30%的稅收。

因此,我決定專注於為IOS構建”可安裝的web app”而不是去選擇那個城堡,因為我很肯定web應用將會追趕上來的。

然而,這一切卻成為了不確定

盡管原生app很流行,然而最初可以在這些單機上安裝web app的設想仍被新版本的IOS操作系統支持。但是,web app它們並不適合蘋果公司的商業模式!蘋果公司的App Store形成了很龐大的商業,”app”一詞正在成為主流,每一個商人突然覺得他們需要有他們自己的”app”,無論他們是有一些使用他們app的用戶還是沒有。

隨著蘋果公司的app生意風生水起這些性能非常清晰和非常快速地被優化,這在某種程度上一點也不使人驚訝。最終的結果是,我們這些仍然在試著為IOS創建可安裝的web app的人在幾乎每一個新的IOS版本發布一些主要功能時我們就面臨著破產。

我要說的是QA(質量保證)應該始終被抓牢,我要說的是如果在蘋果公司工作的人是通過遵守這種標准來構建的app,那麼在它們發布之前這種情況就應該被他們注意到了。

一個曾死死拖住我而且信手拈來的例子是他們是如何在一個web app在單機模式下運行時破壞webapp鏈接到外部站點能力的。target=_blannk是仍然長時間在用的,既不可能是window.open對象方法也不是其他我能想到的方式。現在我們獨立的app沒有一個URL地址欄或者後退按鈕,它只能讓用戶停留在他們第一次點擊時全屏顯示的web視圖裡卻沒有辦法回到app界面!唯一的辦法是強行退出app(希望用戶知道如何這樣做)。

我們同時運營著一個聊天的應用產品,因此我們知道當某時有人在聊天頁面粘貼上來一個URL鏈接時,那其實是一個陷阱。

這些問題仍然在出現,發布了一個又一個。很快你就會明白,你可以在IOS上構建這些類型的web app,但是你不能指望它們不會被IOS的下一次更新所打斷。

通過這些事情你可以看到從蘋果公司傳達的信息清清楚楚:在IOS上web app是二等公民。

此時Android怎麼樣?

在那時我並沒有過多的關注過它,但是在中間這所有的一切發生的時候,Android也開始出現在了舞台上。Google公司承諾Android作為一個手機平台將是一個更加開放的選擇。Android操作系統讓幾個大公司形成了一個聯盟,他們的目的是從根本上打敗那個水果公司(這裡的水果公司指得是蘋果公司)和它強大的喬式App Store而讓Android生存下去繼而占取絕大部分的市場份額。

聯盟的效果很明顯,Android開始獲得吸引力,但是在剛開始的時候Android的web性能讓人感覺很差勁。

五年很快過去了,情況如何呢?…

1.人們被手機應用程序弄得心力交瘁的。

2.絕大部分的開發者構建出的原生IOS app甚至從來沒有讓他們回本過。我們知道這些事情發生在2013年。

3.少量的手機游戲仍然能賺到錢,但是那得看你的人品和運氣了。

4.與此同時,在全球卻有超過14億的活躍Android用戶。

5.Android轉而使用Chrome(谷歌浏覽器)作為Android手機的默認浏覽器。

6.Chrome浏覽器和Opera浏覽器和Firefox浏覽器增加了一些功能,這些功能允許通過Web來構建真實的app體驗。

於是此時我放棄了IOS,開始在Android上弄開發。

為什麼選擇Android?它不是更多的是一成不變嗎?

確實是這樣,老實說,Android手機本身讓我感覺到討厭。因為它並沒有什麼非常新奇的或者令人興奮功能。

但是注意一個很重要的細節……

它是現在最好的手機Web App開發應用平台。

你什麼意思?!蘋果的Safari浏覽器不是運行我的JS腳本更快嗎?

很多人當他們談到這個問題時都會提到Jeff Atwood(又名codinghorror)的帖子,這個帖子我寫下了所有的原因來回應它並隨後貼到了論壇,如果你感興趣可以看看。

是的,Safari浏覽器確實能使我的JS腳本運行的更快,但是要知道的是……你的絕大部分用戶並沒有一個外表精致而且嶄新的iPhone 6s,並且像我之前所說的,在手機Web上押注類似電腦桌面的性能或者向一個手機設備發送龐大的框架像Ember(JS框架)也許並不是一個很好的注意。

而對於性能,有一種東西叫做”夠用就好”。蘋果公司的Safari浏覽器即使是運行JS的速度比其它浏覽器運行JS的速度快50倍也是毫無意義的!我看重的是在浏覽器上我的app是否能夠快速的被運行起來。作為一個手機用戶,除此之外其它的我一點也不在意。

事實證明,編寫的web app實際上是可以以60幀的速度運行在一個又破又爛的手機硬件上的。

但是將這一切放到一邊,需要注意的是:我所說的”更好的app平台”不是指這個平台能以更短的時間更快的運行JavaScript腳本。

所以為什麼不直接在IOS上用Chrome浏覽器?!

於是我開始在Twitter上交流問題,我由最初的驚訝到最終意識到很多人並不知道能安裝到IOS上的Chrome和Opera和Firefox在底層上使用的都是WebKit web視圖。

然而實際上,包含了一個不同浏覽器引擎的app是違法了蘋果公司服務條款規定的。

那些浏覽器只不過是在同一個浏覽器引擎上使用了不同的UI。

那不會使WebKit越來越好嗎?

是的,最近看上去它們有正在被拾起的勢頭。

但是在浏覽器窗口中的變化之外它發生了更多的事情。我希望能在IOS操作系統上用web技術創造類似app的性能。

然而我可以直接告訴你在IOS上這方面的改進幾乎沒有。

讓我們看看蘋果公司和谷歌的WebRTC

谷歌WebRTC簡介鏈接地址: http://baike.sogou.com/v73305448.htm?fromTitle=WebRTC

幾年前當我構建SimpleWebRTC和Talky.io(一個浏覽器組件)的第一個版本時。

我似乎成為了早期web極客中的一個,WebRTC使我變得很開心(這項浏覽器網頁技術現在給谷歌的環聊提供了動力)。不管怎樣,我努力的去解決怎樣在web上構建第一個,或許是第一個多用戶的,點對點的視頻通話WebRTC app,它可以在超過兩個人之間工作並且能在Chrome浏覽器和FireFox浏覽器上運行。

Google Hangout簡介鏈接地址: http://labs.chinamobile.com/mblog/393695_200864

這是我第一次體會到蘋果公司在實現新的web API方面的落後.雖然Chrome浏覽器和Firefox浏覽器對WebRTC都很熱心而且努力地去實施它,但是蘋果公司卻對這一切裝作毫不知情,哪怕瞧上一眼。蘋果公司直到今天也沒有在IOS裡增加對WebRTC的支持。然而,蘋果公司很明顯正在雇傭Safari團隊的WebRTC工程師。所以還是保持希望吧……。

他們那樣做是有道理的,對吧?他們為什麼要這樣做呢?他們希望你使用FaceTime,不是嗎?

他們很樂意改善他們的浏覽器引擎,但是他們似乎不願意或者拖著去做任何涉及到把web的觸角伸向他們手機操作系統的任何事情。

不管怎樣,我們把Talky.io當做一個web app一樣安裝並在Chrome浏覽器和FireFox浏覽器上運行,而且最終@hjon也用它構建了一個IOS app.

現在充斥在我腦海裡的是有這麼一天當我在我的Android手機上下載下來Chrome浏覽器,然後用它打開Talky.io時有這樣的感覺:這個該死的東西果然運行了!(很高興的意思。)

自從那時起我開始更加關注在移動端的Chrome浏覽器上發生的事情,而且移動端的Chrome浏覽器上發生的每一件事情令人印象深刻。

與此同時在Android上發生的事情

在過去的幾年中,一些非常聰明,非常有耐心的理想主義開發者(他們中的很多人在Google公司工作)相信web會成為潮流並為推動web的發展努力工作,他們實行了新的web標准來彌補原生應用程序和web應用程序之間的差距。

難以置信的是一些非常酷的東西被開發了出來,像:

.WebBluetooth(是的,從一個網站的網頁上運行編寫好的JS程序能與藍牙設備對話)。

.WebNFC(NFC是一種短距離的點對點式的交互技術,這裡是其在Web上的應用技術)也被開發了出來,很明顯這些新奇的技術正在掀開物聯網的面紗(但是這完全是另一篇發表的博客的內容)。

在Android上的Chrome的地址欄裡輸入chrome://flags,然後看看上面現在在准備開發的東西。那上面的東西太令人吃驚了!

不管怎樣,在過去的幾年裡, ServiceWorker技術和Progressive Web App的概念構建起了一種特色,這種特色使我比以前我使用過的任何web技術更讓我開心,而且這種開心的心情會持續很久很久。

ServiceWorker介紹鏈接: http://html5online.com.cn/articles/2015051201.html

Progressive Web App介紹鏈接: http://blog.csdn.net/ejinxian/article/details/50082889

我相信在Android裡引入ServiceWorker技術和Progressive Web app技術是自從蘋果公司CEO喬布斯首次把iPhone手機介紹給用戶以來在移動web平台上發生的最重要的事情。

為什麼這樣說呢?!因為,這是第一次我們擁有一個有著龐大用戶基礎的移動平台,這個平台讓我構建的每一個web app被當做了一等公民看待!

(注意:是的,我知道還有其他的平台試圖這樣做的,但是它們中沒有一個是有著14億活躍用戶的。)

這些新技術最終給了我們開發者一個平台,在這個平台上每一個web app都是一等公民!

而且需要說清楚的是,我不僅僅是在談論一種將一個美化的標記貼到主屏上的方法!

我正在談論的是能使我們構建的web app與原生的app別無二致的方法。

這些各種類型的app所遵循的唯一條款是”Progressive Web App”條款。

事實上,我認為Progressive Web App(簡稱PWA)實際上對原生app有著巨大的幫助,因為你可以立即開始使用它們。你不需要登錄電腦搜索界面,然後由搜索界面跳轉到一個app商店,再然後等上一兩分鐘直到一些龐大的二進制包被下載下來。它們就是web app,它們有URL,它們可以被構建加載的超快。因為……我們已經在web上優化加載時間的性能很長時間了。

用戶僅僅需要很少的磨合時間就可以開始使用它們。而用戶需要考慮的是它們如何來處理你的轉換數據!

由於在Android行業中經驗的增加,我敢肯定企業針對他們的Android用戶有著這樣強烈的疑問:他們有必要構建原生Android app嗎?

那麼到底什麼是Progressive Web App呢?

出於某種原因Google公司已經在設法教一代的開發者什麼是Polymer框架和Angular框架。不幸的是,現今我遇到的和交談的絕大部分web開發者對什麼是ServiceWorkers或者什麼是Progressive Web App

還是零的概念。

Polymer框架簡介鏈接: http://www.linuxidc.com/wap.aspx?nid=102184&cid=10&sp=1348

Angular框架簡介鏈接: http://www.jb51.net/article/60494.htm

一些人產生上面問題的原因是因為Progressive Web App完全是嶄新的東西,而最近產生上面問題的人數在減少,情況得到了改善……上帝啊……我希望這種改變。

你可以這樣想象一個progressive web app:

它是用HTML,CSS和JS腳本編寫的一個app,而且它完全可以被當成一個原生的app.

這包括:

1.在手機主屏上運行。

2.在Android的app切換器上作為一個單獨的app(不是作為浏覽器App的一部分)運行。

3.正真的離線行為…這意味著當你用手指點擊app圖標時……不管它是否是在當前網絡狀態它都會打開。

4.即使當app和浏覽器關閉時,它仍然能在後台運行並觸發操作系統級的消息通知。

這些app作為一個標簽開始生存和運行在你的浏覽器裡,而不是作為一個無用的網頁上面寫著”請按照我們的app”標語開始的。然後漸漸地它們會被更多的安裝直到最終成為操作系統的一部分。

起初,它和你訪問的其他網站沒有什麼不同。但是,然後你如果在你的浏覽器裡再次訪問同一個站點或者app,你的浏覽器會巧妙地問用戶是否願意把它添加到他們的桌面。

從這一刻開始它對用戶來說就變得與原生app一樣了。

並且,如果你正確的構建它們,通常用戶根本不需要下載它們或者浪費時間等待下載。這也就意味著把它添加到主屏幕上,app會立即生效,這中間的安裝過程會很短。另外,設想一下它會為你的轉換做些什麼?是嗎?(不,我不是加拿大人)(大概加拿大人精於計算).

幸運的是,我們不必去完全猜測它們的商業影響。我們實際上從印度一家名叫FlipKart價值200億美元的在線零售商那裡獲得了一些真實的數據,這家在線零售商上線了一個PWA並且他們共享了他們的一些數據。

從FlipKart的數據中篩選出的關鍵重點:

  • 40%的回頭客戶周而復始的訪問他們的在線零售網站。
  • 63%的轉換是來自用戶的主屏訪問。
  • 用戶在FlipKart Lite(移動端)上花費3倍的時間。

這些數據來自Alex Russel最近就手機的下一步是什麼的主題發表的流利演講。我支持你去看看並且在你所在的公司裡把它和你的產品經理和你的領導分享分享。那很好解釋了什麼是Progressive WebApp和為什麼選擇Progressive Web App.

相關閱讀查看:

  • Addy Osmani的Progressive Web App入門指南
  • 在ServiceWorkers網頁上有Mozilla的service worker實例
  • FlipKart發布的關於他們PWA的最初的技術
  • Jake Archibald的Offline Cookbook
  • Aditya Punjabi發布的關於他們是如何構建FlipKart lite移動端的文章

那麼這對我們意味著什麼呢?

那意味著我們作為web開發者最終能構建快速流暢的完全可以離線的並且用戶隱私可以得到保護的app,而且app可以在交叉平台上運行而不用向蘋果公司繳納任何該死地App Store稅收,不再需要等待審批過程,用戶不再會伴隨著”在使用這項服務之前請安裝我的app”的聲音而被拒之門外。

那麼關於IOS的支持呢?

很好,它妙就妙在即使service worker在IOS上的支持不存在,IOS用戶仍然可以使用你的web app.

他們只是沒有獲得額外的功能,比如離線功能和推送消息功能。

但是你也可以把Cordova捆綁進你的app而且還可以使用Service Worker插件,理論上這將使你用同樣的代碼去做這些事情,但是它們捆綁到一起後就可以看做是一個IOS app了。

Cordova介紹鏈接: http://www.cnblogs.com/luoguoqiang1985/p/3574738.html

我為什麼要關注?React Native現在出現了並且可以用來解決同樣的問題。

React Native介紹鏈接: http://blog.csdn.net/u011068702/article/details/49431211

就我個人而言,我實際上有些希望像React Native的工具不存在的。耐心些聽我解釋。React Native是一個令人既吃驚又印象深刻的工具,它使我們可以使用我們的JS編程技巧來編寫原生的IOSapp.

但是就像我一直所說的……我不認為我們應該構建原生的app,除非我們完全需要這麼做。

React Native產生的最終結果是因為它的存在和因為它主要針對的是web開發者,我們現在有web開發者湧向開發原生app,因為有了這個框架他們有能力開發原生app了!

我怕這種變化在無形中破壞我們使用我們集體討價還價的力量來促使蘋果公司實現在IOS中對Progressive Web App支持的能力。

需要澄清的是,我完全理解它為什麼會被創建出來,而且我也非常的尊重它所代表的技術成就和尊重它背後的開發商。

我僅僅是不想讓我們停止去促使蘋果公司改善在IOS中對web的支持。

總結

因此,這也就是說,作為一個消費者這些事情最終讓我能用的唯一投票權是……我掏出兜裡的錢然後離開。

我不認為這是我轉變到Android平台弄開發工作,我只是切換到當今可用的移動web app 平台中最好的那個。

Web是我們所能獲得的唯一真正開放的平台。它是最接近我們需要的公平競爭環境。

這就是為什麼我集中我所有的努力來構建Progressive Web App…….我希望你們也做同樣的事情。

在twitter上我的名字是@HenrikJoreteg,如果你想很好地告訴我我做錯的地方的話可以聯系我。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved