iOS開發(fā)者的 WWDC 2016 愿望清單
我一般不寫這樣的文章,但是我覺(jué)得今年很重要:蘋果正變得比以往任何時(shí)候都更加開放和更善于接受反饋意見(jiàn)。通過(guò)iOS 9和iPad Pro,iOS在過(guò)去的一年里在iPad上已經(jīng)完成了巨量的飛躍。基于這一點(diǎn),我想記錄下在我腦中能想到的、非常想要看到的所有事情,可以讓iOS作為計(jì)算平臺(tái)覆蓋到更多。
以下列表中的內(nèi)容是未來(lái)幾年我想在蘋果平臺(tái)上看到的,沒(méi)有先后順序,從簡(jiǎn)單和明顯的開始。這些內(nèi)容大部分其實(shí)都被提起過(guò),但它們經(jīng)常被遺忘。大多數(shù)清單是關(guān)于iOS的,但也不是所有,我丑話說(shuō)在前面,我不覺(jué)得OS X按照現(xiàn)在這個(gè)趨勢(shì)會(huì)有前途。就算你不同意我的看法,下面也可能有些你想要的。
分屏功能---可以讓你把同一個(gè)APP分成幾個(gè)窗口
這是個(gè)很容易實(shí)現(xiàn)的功能,現(xiàn)在iOS上面的分屏功能只允許兩個(gè)不同的應(yīng)用挨在一起;很明顯下一步就是允許同一個(gè)應(yīng)用分成兩個(gè)窗口,這樣你就能有兩個(gè)網(wǎng)頁(yè)或者兩個(gè)文檔并列在一個(gè)窗口了。
窗口化的開放鏈接(OpenURL)
另一個(gè)小小的改進(jìn),但這個(gè)可允許app打開一個(gè)鏈接或者應(yīng)用的時(shí)候,可以選擇是同屏并列的兩個(gè)窗口還是新的窗口替代現(xiàn)在的app。舉個(gè)栗子,郵件或者消息里的鏈接打開的時(shí)候就會(huì)自動(dòng)用Safari同屏并列打開,而不是把現(xiàn)在的app一腳踢開。Twitter在iOS上的交互邏輯就很聰明---如果Twitter在同屏被點(diǎn)開一個(gè)鏈接它就會(huì)直接在同屏并列打開一個(gè)Safari
可定制的視窗控制器擴(kuò)展
在擴(kuò)展上,蘋果已經(jīng)建立了從一個(gè)app到另一個(gè)app展示視窗控制器的理想方式。這被貫穿應(yīng)用在整個(gè)OS當(dāng)中,但最明顯的是Safari的視窗控制器。蘋果已經(jīng)辨識(shí)出這個(gè)應(yīng)用的關(guān)鍵領(lǐng)域---這就是當(dāng)下圖片編輯擴(kuò)展的工作方式。我很希望能看到這個(gè)擴(kuò)展性能可以被app注冊(cè)使用,以便普及和應(yīng)用到更多的應(yīng)用和功能當(dāng)中。
快速查看生成器
同樣地,快速查看功能似乎是一個(gè)明顯會(huì)增加的系統(tǒng)擴(kuò)展。OS X應(yīng)用可以注冊(cè)“快速查看生成器”并生成文檔內(nèi)容的縮略圖預(yù)覽,借此別的應(yīng)用就可以對(duì)之渲染。文檔處理在iOS上變得更加普遍,沒(méi)有道理不增加快速查看的擴(kuò)展。
系統(tǒng)級(jí)的繪畫和標(biāo)記視圖
很簡(jiǎn)單的一個(gè)愿望---蘋果在Notes上創(chuàng)建了最好的繪畫/標(biāo)記視圖之一,在任何一個(gè)app上,非常適合給Apple Pencil使用,這會(huì)是非常棒的,給開發(fā)者提供一個(gè)標(biāo)準(zhǔn)化的可定制的樣式,他們可以實(shí)現(xiàn)在他們的app中,而不用再重復(fù)建設(shè)同樣的功能---一個(gè)像這樣的繪畫引擎會(huì)是非常復(fù)雜的OpenGL/Metal渲染器,是很難重新實(shí)現(xiàn)的。
給iPad鍵盤加上Command鍵
鑒于iOS對(duì)UIKeyCommand和鍵盤快捷鍵的支持,我很樂(lè)意看到在iPad的屏幕虛擬鍵盤上加入一個(gè)命令鍵。 應(yīng)該很容易理解的是,它應(yīng)該在虛擬鍵盤可見(jiàn)的時(shí)候才有用(比如在文檔編輯器里面),但它應(yīng)該可以修改針對(duì)app的快捷方式,它也將幫助iOS開發(fā)者認(rèn)識(shí)到app應(yīng)該有默認(rèn)的快捷鍵。在一個(gè)大多數(shù)iPad支持鍵盤外設(shè)的時(shí)代,我想這是很重要的一步。
拖曳
增加了分屏的多任務(wù)功能后,很多人說(shuō)過(guò)iOS上的拖曳。表面上這也是一個(gè)很明顯要增加的功能,但當(dāng)你深思熟慮后,這里有很多種方式是對(duì)操作系統(tǒng)有損害的。找一個(gè)可以操作拖曳同時(shí)又不損害目前OS中存在的操作方式,同時(shí)仍然能讓復(fù)制粘貼來(lái)的更快,那就不像想的那么容易了。盡管如此,我依然覺(jué)得有必要指出來(lái),在一個(gè)觸屏上用它直接的操作方式很有意義。
WatchOS上的原生app
WatchKit是個(gè)很棒的補(bǔ)位開發(fā)組件;有能力作為一個(gè)WatchOS的應(yīng)用平臺(tái)。可惜的是,第三方應(yīng)用在WatchOs上的表現(xiàn)很爛,原來(lái)的WatchKit在WatchOS 2.0上并沒(méi)有幫上什么忙。如果watchOS作為一個(gè)app平臺(tái)要想成功,我認(rèn)為它應(yīng)當(dāng)有能力運(yùn)行真正的(讀作UIKit)應(yīng)用程序。因?yàn)橐呀?jīng)有人涉足其中了,我不確信這個(gè)第一代的硬件不做折衷是否足夠好來(lái)做到這點(diǎn)。因此,我的希望是將來(lái)更好的硬件可以做到這一點(diǎn)。第三方的app需要像廠家原生app那樣表現(xiàn)優(yōu)秀。WatchKit就是一坨屎。
AppleTV手柄處境
一個(gè)很容易解決的問(wèn)題:目前一個(gè)在tvOS上運(yùn)行的游戲不能用手柄玩(當(dāng)然,除非動(dòng)視需要一個(gè)硬件的配件,很明顯那很難)。所有的游戲必須支持Siri 遙控:?jiǎn)栴}是Siri遙控對(duì)游戲來(lái)說(shuō)很爛,這意味著每個(gè)開發(fā)者在tvOS上試圖做出任何一個(gè)遙控復(fù)雜的動(dòng)作,都必須包含一些可笑的、自認(rèn)為很叼的和基本上沒(méi)個(gè)毛用的只準(zhǔn)遙控模式。這是一個(gè)方針問(wèn)題---我理解蘋果的用意何在,但這個(gè)超級(jí)不爽的體驗(yàn)就是因?yàn)檫@個(gè)沒(méi)得可選的糟糕平臺(tái)造成的。
iOS上的iBooks Author
iBooks Author是iWork套件的衍生物,并且看起來(lái)非常適合在iOS上運(yùn)行。對(duì)寫書的人來(lái)說(shuō)iBooks Author在iOS上可能意味著一個(gè)完全整合的寫作和發(fā)布渠道,不需要用到臺(tái)式電腦。你甚至可以自行創(chuàng)立多點(diǎn)觸控來(lái)增強(qiáng)ibooks在設(shè)備上的表現(xiàn)。對(duì)我來(lái)說(shuō),它就像在ios陣營(yíng)里新增加的一個(gè)傻瓜化的應(yīng)用。
所有系統(tǒng)自帶應(yīng)用都應(yīng)該支持分屏功能
我很意外,iPad仍然有一票系統(tǒng)應(yīng)用不支持分屏多任務(wù)功能。我猜可能跟安全有關(guān),舉個(gè)栗子,拿iBooks來(lái)說(shuō),如果需要看iBookstore則需要全屏。很顯然App Store、iTunes Store和Apple Music應(yīng)該支持分屏功能。你很難想象一個(gè)非游戲應(yīng)用為什么不支持分屏(當(dāng)然我知道有一些第三方應(yīng)用出于某種原因沒(méi)得選)。窗口化不應(yīng)該是可選的,尤其是系統(tǒng)應(yīng)用。
簡(jiǎn)單的都已經(jīng)說(shuō)過(guò)了。。。
介于iOS和OS X的標(biāo)準(zhǔn)統(tǒng)一的App平臺(tái)
現(xiàn)在,我非常確信OS X是個(gè)死平臺(tái)。它已經(jīng)拖了iOS的后腿好多年了,常常是iOS上已經(jīng)實(shí)現(xiàn)的功能過(guò)了很久才在OS X上實(shí)現(xiàn)。蘋果需要在這兩個(gè)操作系統(tǒng)間建立一個(gè)統(tǒng)一的app平臺(tái)。
這不意味著臺(tái)式機(jī)只是運(yùn)行iOS App,就像tvOS不會(huì)只運(yùn)行iOS應(yīng)用一樣。同樣的想法包括:一個(gè)共享的代碼庫(kù),很少有平臺(tái)特有的要素,和一個(gè)優(yōu)化的用于OS主要交互模式的用戶界面。
我覺(jué)得這應(yīng)該是基于UIKit的。在tvOS之后,我們不能再說(shuō)UIKit不能運(yùn)行在沒(méi)有觸屏的環(huán)境,我們知道不是那回事。它全都建立在同樣的核心動(dòng)畫基礎(chǔ)上,所以至少眼下你將能夠在混合型的UIKit Mac app中交錯(cuò)使用AppKit view/layer。AppKit本身應(yīng)該有個(gè)滯后的過(guò)渡期,就像之前的Carbon,作為新功能逐漸地置入基于UIKit的框架中。AppKit應(yīng)該繼續(xù)保留在臺(tái)式機(jī)應(yīng)用中,而不是iOS,然后逐步淡出并一點(diǎn)一點(diǎn)的被兼容app取代。
這樣的話,iOS(主要是iPad)和OS X就可以一起成長(zhǎng),一個(gè)里面的功能也能更加簡(jiǎn)便的編譯后給另一個(gè)系統(tǒng)使用。iPad應(yīng)用會(huì)有一個(gè)傳遞到臺(tái)式電腦的途徑,臺(tái)式機(jī)的應(yīng)用也會(huì)轉(zhuǎn)移到iPad上,兩個(gè)平臺(tái)將會(huì)作為一個(gè)整體進(jìn)化成長(zhǎng),而不會(huì)有此消彼長(zhǎng)的局面。
Xcode for iPad
這個(gè)要求我主張了很久。我說(shuō)的是我想要一個(gè)iPad開發(fā)用的Xcode,意思是“可以在iPad上編寫代碼,調(diào)試和部署Cocoa Touch app,而不是必須使用Mac。”極有可能,這樣一個(gè)項(xiàng)目的工作方式跟臺(tái)式系統(tǒng)上的Xcode一點(diǎn)都不像。很可能它只能使用Swift(這將讓我很難過(guò)),那么我想應(yīng)該也把Swift Playground包含進(jìn)來(lái)。盡管如此,一個(gè)完整的軟件開發(fā)者工具鏈對(duì)iOS的軟件生態(tài)來(lái)說(shuō)是一個(gè)很大的缺失。
iOS上有一些很棒的app已經(jīng)成功的完成了一些類似的功能,Pythonista 就是一個(gè)很好的例子:通過(guò)C到OC代碼的橋接,可以充分地在設(shè)備上運(yùn)行Python IDE。強(qiáng)大到可以讓你進(jìn)行交互和使用Cocoa (in Python)重寫自己的UI,但有一點(diǎn)令人不安,據(jù)說(shuō)蘋果將不再允許這類應(yīng)用并將它們從App Store下架。那將會(huì)是個(gè)糟糕的情況,人們要考慮iOS力所能及的邊界在哪里。
iOS上的文件和磁盤管理系統(tǒng)
一開始,iOS曾試過(guò)用文件管理系統(tǒng)做正確的事,但九年中,這個(gè)虛構(gòu)的物理文件管理系統(tǒng)并不存在也沒(méi)有實(shí)際發(fā)生。最終我們有了iCloud Drive app和第三方的文件提供app,但除了導(dǎo)入照片 ,我們還是不能和外部的存儲(chǔ)器進(jìn)行交互。我認(rèn)為是時(shí)候在系統(tǒng)級(jí)別實(shí)現(xiàn)這個(gè)功能了:允許文檔選擇器適當(dāng)?shù)卮蜷_外部存儲(chǔ)器的文件,并允許應(yīng)用程序?qū)⑽募?fù)制到外部?jī)?chǔ)存器。在OS X上,文件拾取器提供一個(gè)沙箱給你,作為使用者,可以選擇一個(gè)app接入。在這種模式下建立---既保證安全,又不虛擬不存在的文件系統(tǒng)。
iOS的終端環(huán)境
值得一試,對(duì)吧?我會(huì)很高興看到iOS上有一個(gè)終端/BSD環(huán)境,即使是局限于自身的沙箱,不是整個(gè)OS文件系統(tǒng)。讓技術(shù)人員創(chuàng)建一個(gè)技術(shù)人員所需的東西,不能被 GUI iOS用其他方式處理。我能看到蘋果能做的唯一方式是它從OS的其他部分完全分隔出來(lái),即使這樣也是一個(gè)不錯(cuò)的進(jìn)步(或者說(shuō)退步,就看你怎么看了)
iOS來(lái)接管OS X的應(yīng)用
既然iPad越來(lái)越多的取代Mac以往做的事,那么對(duì)我看來(lái),蘋果也應(yīng)該縮小這兩個(gè)系統(tǒng)間應(yīng)用的隔閡。我很樂(lè)意看到TextEdit、Automator、Font Book、Keychain Access和外部存儲(chǔ)的支持。Disk Utility和TextEdit在Mac上看好像無(wú)足輕重,但在iOS上沒(méi)有內(nèi)置的文本編輯器可以獲取iCloud Drive上的TextEdit文件,從我個(gè)人來(lái)看,這有點(diǎn)瘋狂。Automator幾乎沒(méi)有人使用,但用的人就知道它的功能多么強(qiáng)大并且非常有用。實(shí)際上Workflow,一個(gè)在iOS上最好的第三方應(yīng)用之一,就很像是一個(gè)擴(kuò)展的Automator。字體管理和鑰匙鏈支持是另外一些iOS上沒(méi)有類似第三方app的應(yīng)用,盡管對(duì)特定使用者來(lái)說(shuō)這些功能都很重要。
脫離itunes,iOS設(shè)備在Recovery模式下可以安裝最新的OS
現(xiàn)在,僅存的從一個(gè)iOS App連接到臺(tái)式電腦的原因之一就是為了安裝OS,修補(bǔ)這個(gè)無(wú)疑是很難的,但NetBoot & Internet Recovery已經(jīng)在Mac上存在了太久。要么是我經(jīng)錯(cuò)了,但我記得第一代(x86)蘋果電視如果出錯(cuò),可以在Recovery模式下重新從網(wǎng)上下載它的OS。所以最終我覺(jué)得iOS需要一個(gè)擴(kuò)展的Recovery環(huán)境來(lái)讓它可以自行恢復(fù)。
iOS的’AppleScript’
或許是被遺忘的老傳統(tǒng),但不久前AppleScript獲得了全新的Java腳本語(yǔ)言的支持,或許AppleScript在iOS的生態(tài)系統(tǒng)中也有一席之地。蘋果腳步的存在本身就是一件極好的事-隨著System 7一起推出,它是最早一批我學(xué)的編程環(huán)境之一。
能夠支持更多USB擴(kuò)展設(shè)備的iOS
一個(gè)強(qiáng)行銷售,特別是為iPhone制作的程序?qū)μO果來(lái)說(shuō)是個(gè)大事,但除了音頻、鍵盤和大容量存儲(chǔ)設(shè)備,通過(guò)USB轉(zhuǎn)接器,還能在iOS上使用各種各樣的設(shè)備。我想讓開發(fā)者可以寫用戶模式驅(qū)動(dòng)程序和現(xiàn)有的硬件對(duì)話--對(duì)我來(lái)說(shuō),比如像采集卡、TV調(diào)諧器、串口適配器、外接攝像頭以及輸入設(shè)備等等。每一個(gè)單獨(dú)的USB設(shè)備都需要一個(gè)MFi授權(quán)芯片和證書,讓配件的app受很大的影響。你可以買一個(gè)之前已經(jīng)有的蘋果MFi RS232調(diào)制適配器,用他們已經(jīng)獲得批準(zhǔn)的SDK來(lái)開發(fā)app,來(lái)和Newton、Raspberry Pi或者Arduino來(lái)對(duì)話。你不能用蘋果的USB適配器去做那些非MFi認(rèn)證的適配器同樣的事。我不覺(jué)得蘋果能改變這點(diǎn),但我還是希望能改。
修復(fù)Mac的應(yīng)用商店
最后,來(lái)說(shuō)說(shuō)這個(gè)重要的愿望:Mac的應(yīng)用商店很明顯已經(jīng)不適用了。簡(jiǎn)單來(lái)說(shuō),沙箱限制和貨幣化問(wèn)題趕走了太多從業(yè)許久且備受尊敬的Mac開發(fā)者。那些堅(jiān)持留下來(lái)的開發(fā)者常常會(huì)為同一款應(yīng)用開發(fā)MAS和非MAS兩個(gè)版本,而通常非MAS的版本是全功能的。第三方開發(fā)者已經(jīng)迫使MAS用戶去使用他們非MAS版本的應(yīng)用。這本是不允許發(fā)生的---這對(duì)開發(fā)者來(lái)說(shuō)不是好事,對(duì)用戶也一樣。所有的Mac軟件從Mac商店唾手可得這本應(yīng)是理所當(dāng)然的。微軟的Office套件,創(chuàng)造性的云服務(wù)等,蘋果應(yīng)該竭盡全力讓蘋果應(yīng)用商店是出售Mac應(yīng)用的唯一途徑。更甚的是現(xiàn)在蘋果通過(guò)MAS提供的軟件也不遵從他們自己的沙箱規(guī)則,同樣的限制條款驅(qū)逐了每一個(gè)人。我很確定這一點(diǎn),也許可能依然還是這樣。現(xiàn)在它就是一個(gè)笑話,不再具備領(lǐng)導(dǎo)能力了。