以下為文章全文:
蘋果上周在 WWDC 宣佈的 iOS 8 帶來不小的變化,尤其針對移動平臺中最具爭議的問題之一:文檔存儲和管理。盡管 iCloud 對適用於 iOS 和 OS X 統一 的 iCloud Drive 將起到很大的作用,如今第三方開發者也將有機會加入更好的文件管理功能到他們的應用程序。
在 WWDC 發佈會和之後整整一周的開發者會議中,蘋果詳細介紹瞭新系統增加的新功能和 API,其中發現一個共同點:應用程序如今能夠跨出它們的沙箱,訪問存儲在其他應用程序的文件,而無需創建不必要的副本。為瞭更好地理解 iOS 8 這些技術變化的重要性和他們會增加給開發者和用戶的固有復雜性,我想退一步介紹一些背景情況:iOS 目前如何處理文件存儲和管理。
目前的方式
自 2012 年中期開始,iPad 成為我主要使用的計算機。當去年蘋果發佈 OS X Mavericks 後,我認為這會對我用移動設備辦公的習慣產生一定的影響。我經常提到一個希望蘋果將最終解決的 iOS 功能:“打開”菜單。
按傳統的方式,蘋果總是孤立對待 iOS 的應用程序,限制它們之間的通訊系統。蘋果的沙盒模式要求應用程序在專有服務器存儲文件;對於基於文檔的應用程序(如 Pages 或文本編輯器)的用戶來說,這意味著如果他們需要在多個應用程序修改文檔,他們必須手動復制一個文件到另一個應用程序。
出於安全原因,iOS 在安裝時將每個應用程序(包括其偏好設置和數據)置於沙箱。一個沙箱就是一組精密控制,限制瞭應用程序訪問文件、偏好、網絡資源、硬件等等。作為沙盒進程的一部分,該系統安裝每個應用程序到其自己的沙盒目錄下,這個目錄就充當瞭應用程序及數據的中心。
最典型的例子或許是常規的文字處理:你想在 Pages 編寫,同時你也想從一個圖像編輯器將圖像拖放到文檔中,最後使用一個專門的語法檢查工具完成文稿。在 OS X,文件系統層允許任何兼容的應用程序打開由其他應用程序創建或修改的文件,保存修改到原始文件的位置,並在這過程中產生文件的多個版本。但如果在 iOS 上做相同的嘗試,你最終會獲得至少同一個文件的三個副本,分散在不同的應用程序並占用您設備的存儲空間。更何況,為瞭實現這一極其普通的文字處理工作流程,你就必須每次在應用程序之間手動切換。
重要的是要明白,蘋果的沙盒模式是故意設計來為用戶提供旨在避免數據丟失的安全解決方案。因為應用程序無法直接訪問並修改另一個沙箱的文件,用戶可以從App Store下載另一個應用程序來進行訪問和修改,從而不會對現有的文件造成影響。開發者不能擅自讓自己的應用程序修改其他應用程式的文件。而最好的是,用戶不必采用傳統的文件系統:通過文件夾和子文件夾管理文件是 PC 時代的遺物; “應用程序庫”為存儲文檔提供瞭更簡單和現代的方式。
隨著時間的推移,蘋果的解決方案開始露出缺點,用戶開始要求更方便的操作。
iPhone 和 iPad 采用的文件管理系統是安全的,但也越來越繁瑣和惱人,多年沒有變化,開發者開始采取 SDK 的方法:與其等待蘋果增加新的文件管理和協作功能,他們在自己的應用程序內置第三方雲服務的支持,允許多個設備的單個文件能夠同步修改。
所有提供給消費者的第三方雲服務中,drop box 在 iOS 生態系統中最能站穩腳跟。數以千計的應用程序支持與 drop box 同步文件,主要是因為它可以讓用戶在多個設備處理一個文件的副本,並能作為桌面計算機的一個普通文件夾安裝。隨著 drop box 受歡迎程度增長,本地多版本和共享功能被添加到 SDK。
如今,App Store 中基於文檔的應用程序很少有不附帶某種同步組件的,都支持跨設備編輯,要麼是 drop box, Box, one Drive, 或 Apple 的 iCloud。
OS X 的 iCloud 文檔庫
2011 年推出的 iCloud 提供瞭文件存儲和同步功能,恰當地命名為雲中的文檔。但是,不像其他的服務,iCloud 並沒有讓用戶避免創建相同文件的副本,如果用戶想使用 iOS 設備上的多個應用程序來編輯的話,還是需要在不同的應用程序創建多個副本。沙箱文件將被推送到 iCloud 然後備份到其他設備,但是,從工作流角度來看,這些還是孤立的,不能與其他應用程式的沙箱聯系。
在某種程度上,我相信 iOS 應用程序文件同步解決方案的普及是蘋果基本沙盒模式的副產品。對於許多不一定需要同步的用戶來說,同步的優勢是多平臺、多設備,以及對同一文件在多個應用程序進行編輯,以實現超出蘋果限制的文件管理工作流程。
在 iOS 8,蘋果將重塑文檔存儲和管理。對於用戶來說,iCloud Drive 將使雲存儲和同步更加明顯,並且應用程序將能夠在同一個文件進行協作,而無需創建副本。對於不想依靠 iCloud 的第三方開發者,蘋果正在開發一個新的集成解決方案:任何應用程序均可使用其他存儲供應商。
iCloud Drive
對於 iOS 8 和 OS X Yosemite ,蘋果決定采用比較常規的做法,也是 4 億多 iCloud 用戶一直想要的管理文件的方式。通過可擴展組件性,面向用戶的功能和開發人員 API 得到擴展組件,讓應用程序超越沙箱的同時註重安全和熟悉感。這是一個復雜的變化,這將需要蘋果和第三方開發者仔細考慮他們應用程序的技術含義。
對於用戶來說,最明顯的新功能是 iCloud Drive,一個統一的存儲文件的位置。建立在蘋果的新 CloudKit 基礎上, iCloud Drive將作一個特殊的文件夾存在於 OS X,帶有一個子文件夾放置那些需要存儲文件到 iCloud 的應用程序; 在 iOS, iCloud Drive 將不會是一個專門的應用程序,但它會建立起一個新的文件選擇器,每一個應用程序都可以植入這個文件選擇器。
iOS iCloud Drive 的文件選擇器
iCloud Drive 跟以前蘋果的“文件雲存儲”不同,以前蘋果防止各 iCloud 的文檔庫訪問其他應用程序的“文檔庫”。雖然有一種方法可以在 OS X Finder 的目錄手動瀏覽 iCloud,蘋果未正式支持該系統,也沒有用戶界面可進入。
iCloud Drive 會顯示所有支持 iCloud 的應用程序的文檔庫。在每臺設備, iCloud Drive將讓用戶瀏覽在 iOS 或 OS X 創建的文檔文件夾; 臺式機用戶也將能夠從Finder 管理自己的 iCloud Drive,刪除文件和文件夾。
因此,盡管 iCloud 的原理是一樣的——在所有設備上查看所有的文件,接著上次編輯到的地方——如今呈現給用戶的方式不同瞭,奇怪的是,反而讓人想起瞭傳統的文件系統。多年來,蘋果試圖把 iCloud 打造成不需要用戶進行任何分類管理的文檔存儲/持久性解決方案,而在 iOS 8 和 OS X Yosemite ,你將能以“你喜歡的方式”“自由處理你所選擇的文件”。這是一個重要的變化,符合用戶定制和 iOS 8 的靈活路線。
文件選擇器
在單一的 iCloud Drive 中瀏覽 iCloud 文檔庫,隻是 iOS 8 文檔管理的其中一面,加上 iCloud 存儲的新接口,給開發者提供新的 API,可開發出存儲、打開文件,並不會產生副本的功能。
iOS 8文件選擇器
新的 iOS 8 文件選擇器可以讓用戶通過查看其他兼容 iCloud 功能的應用程序或存儲供應商,從一個應用程序的沙箱外部選擇文件。該功能將是開發者的可選功能,他們可自行決定是否讓其他應用程序訪問自己應用程序的文件。應用程序發現自己沙箱以外的文件,唯一方法就是文件選擇器,因此用戶永遠可控制是否授權訪問和編輯文檔,並可手動選擇文件(就像必須經過用戶激活的插件一樣) 。
文件選擇器將配備四種不同類型的文件操作:打開、移動、導入和導出。據蘋果介紹,打開並移動跟傳統的 iOS 文件處理“明顯不同”,因為它們將允許應用程序從其他應用程序的沙箱訪問文件,讓用戶在一個地方編輯文件,而無需創建不必要的副本。這是蘋果的沙盒模式的深刻變革。
就實際情況而言,這意味著,如果開發者支持該功能,那麼 Pages 可以編輯由其他文字處理應用創建的同一個文件,或者第三方 iOS 文本編輯器可以打開並修改一個在 Mac 原生文本編輯器創建並存儲在 iCloud 中的 txt 文件。在蘋果宣佈這一功能時,開發者都感到雀躍。對於開發者來說,iOS 其中一個令人煩惱的問題就是數據的可移植性,因此,蘋果如今放開數據限制,允許應用程序之間互相訪問同一個文件,對開發者和用戶來說都是一個進步 。
iOS 8 的應用程序也可以在不改動源文件的情況下復制文件到新的路徑。上述的導入和導出模式類似於 iOS“在菜單打開”的舊模式,但 iOS 7 的改進不再強迫用戶離開他們目前正在使用的應用程序。導入和導出模式將簡單地創建副本到應用程序內部或外部,但不會涉及任何應用程序切換。導入和導出模式的另一個好處是,不支持 iCloud 文檔存儲的應用程序將可以從支持 iCloud 的應用程序導入文件,生成文件的脫機副本。
在測試版的技術文檔中,蘋果強調,開發者將不得不考慮他們希望在應用程序使用的文件管理模式,因為用戶可能並不需要所有功能,導入和導出模式之間細微的差別可能會使用戶混淆。據蘋果稱,大多數用戶想要靈活的文檔管理操作,開發者應該加以強調“簡單的導入和導出操作”。更何況,即使減少應用程序切換,導入和導出模式仍然會額外創建一個文件副本,消耗額外的存儲空間,並使其難以在多個應用程序處理單個文檔。
在 WWDC 開發者討論會上,蘋果工程師指出, iCloud Drive 能從其他應用程序編輯文件的可能性將使用戶“高興”,並帶來更好的用戶體驗。
重要的是,要註意到,盡管文件處理和文件操作發生變化,蘋果並沒有放棄沙盒模式或允許盲目進入到應用程序的沙箱。
正如上面提到的,文件選擇器將成為用戶訪問應用程序沙箱外文檔的唯一途徑,也是開發人員設置自己的應用程序可公開范圍的唯一途徑。此外,從外部應用程序訪問文檔的應用程序也不能輕松繞過沙箱訪問該文件:相反,應用程序將存儲一個文件的“參考”,其中包括授予文件訪問權限的安全范圍 URL。安全范圍的URL 這個概念並不新,跟蘋果在 OS X 使用技術相同,也可以讓應用程序訪問他們沙箱以外的文件。
所有這些措施強調的是,蘋果仍然支持 iOS 沙盒模式,但他們願意給用戶更多靈活性,采用他們最先為 OS X 開發的技術,同時給予系統一個用戶友好的界面。在蘋果看來,應用程序仍然無法普遍訪問其他應用程序的資料庫,但基於文檔的 iOS 8應用程序將能夠使用文檔選擇器。因此,盡管兩個文字處理器可以協作打開和移動單個文 檔,但 Twitter 客戶端可能無法任意訪問存儲在另一個社交網絡應用程序的照片或偏好。
蘋果為 iOS 8 文檔處理設立的規則,與擴展組件有幾點相似:雙方都要經過特定的激活點,都將支持不是擯棄沙箱。對於文檔,蘋果增加瞭一些額外的限制:應用程序將無法在自己的沙箱之外寫入新的文件,另外,如果一個應用程序試圖打開和移動另一個支持 iCloud Drive 應用的文檔,將需要 iCloud 支持。對於新文件,你將無法打開 App A,然後直接在 App B 創建一個新的文件:如果兩個應用程序支持該功能,App A將需要寫入文件到一個臨時位置,然後將其移動到 App B。對於終端用戶,區別可能很小,但對開發人員卻很重要。
存儲提供商
iOS 8也給開發者一種方式,可在他們的應用程序提供存儲服務,作為文件選擇器的擴展組件。在 WWDC 發佈會,蘋果展示瞭支持 iOS 8 的 Box 和 oneDrive 擴展組件截圖,這表明該功能主要用於同時有 iOS 客戶端的 Web 服務。
有瞭存儲提供商擴展組件,Box 和 oneDrive 應用程序將能夠支持四種基本的文件操作,並能下載和上傳到不是 iCloud 的 Web服務。潛在地,存儲供應商的擴展組件可能允許那些基於雲的文件存儲服務放棄專用 SDK,單純依靠擴展組件。
以前第三方開發者執行谷歌 Drive 和 drop box 的 SDK,他們通常需要考慮同步邏輯和跟自己應用的沖突,這需要漫長的開發時間,並要對 Web 服務如何處理不同的同步有深刻的理解。如今存儲提供商擴展組件負責下載和上傳到遠程服務器,應用程序不再需要知道 drop box 或 oneDrive 的細節,他們隻需要支持新的文件操作。
支持存儲供應商的擴展組件不隻是給小型獨立工作室在他們的應用程序集成雲服務。諸如其他較大的公司如 drop box,谷歌和亞馬遜,Box 和微軟也會在 iOS 8 找到工具,讓他們的存儲服務與每一個應用程序的 iCloud 文件選擇器共存。
“因為 iOS 8 具備可擴展組件,我們很高興我們的用戶可以從自己喜愛的應用程序無縫地訪問他們所有的 oneDrive 文件,無需創建額外的副本”,微軟產品管理及 oneDrive 產品營銷主管安格斯·洛根通過電子郵件表示。
更好的體驗但也帶來新的復雜性
基於文檔的應用程序將要面對蘋果 iOS 8 新技術的重大變化,而蘋果建議開發者慎重考慮文檔共享、擴展組件和新的文件操作帶來的復雜性。
如今雖然能夠跨多個應用程序打開同一個文檔,用戶處理文件有瞭更好、更直觀的體驗,但是開發者必須考慮新的變量,如網絡錯誤,省去背景和在多個應用程序處理同一個文件的挑戰。蘋果告訴開發人員可以使用文件協調技術,它可以協調從多個位置訪問文件,避免數據丟失。蘋果認為,用戶將需要更為靈活的打開和移動模式,這將要求開發者要小心他們的應用程序對一個文件的更改。
開發者也將需要正確處理數據的遷移:盡管 iOS 8 用戶可以選擇繼續使用目前的雲存儲文件或遷移到 iCloud Drive,OS X Yosemite 不支持向後兼容性,用戶將不得不選擇遷移到 iCloud Drive,否則文件將不再跨設備更新。新的 API 在許多方面與 iOS 7 和 OS X Mavericks 存在沖突,它們將互不兼容。對於用戶來說,這意味著,他們將不得不遷移到每臺設備。一旦數據被遷移一臺設備上,所有其他設備也必須遷移,否則將無法互相同步,這勢必會產生一些混亂,需要開發者和用戶之間良好的溝通。
同樣,開發者自行決定是否在其應用程序中的特定部分支持新的文件操作,並且,系統能夠跨應用程序共享同一文件,是否顯示原始文件也是開發者的選擇。
將文件系統的挑戰和發展問題放在一邊,蘋果 iOS 8 中文檔管理和存儲的新方法,是一個可喜的進步。這些新技術都可能經過幾年的醞釀,以確保可靠性和安全性,同時避免數據丟失,而且應該杜絕令人沮喪的復雜性。
iCloud Drive、文件共享、新的文件選擇器,並支持第三方服務存儲提供商,所有這些新技術說明瞭,蘋果這是將賭註押在一個結合瞭傳統文檔管理和更靈活的沙盒模式的解決方案,同時確保安全性和協作。iOS 跨應用程序的文檔管理問題是否終於得到解決,現在下結論還為時過早,但是開發者對擴展組件的興奮使得前景很樂觀。