詳解 iOS 8 的動作擴展
本文轉自少數派,英文原文Action extensions in iOS 8: Explained,原作者Rene Ritchie
iOS中的分享菜單有著另外一個名字——活動監視控件,這個名字非常恰當,因為它不僅提供分享功能,同時還可以提供諸如動作之類的其他「服 務」。過去這些動作一直都只有系統自帶的,比如剪切粘貼、打印等等。但就像iOS 8中的自定義共享選項一樣,自定義動作選項也被添加到了其中,它們是全新的擴展性功能的一部分,新的擴展性將允許安裝第三方的鍵盤、小工具及其他很多自定 義的動作擴展按鈕。那么這些擴展動作是如何工作的?它將為我們帶來什么呢?
充足的動作
▲ iOS 動作選項的演進。從左至右依次為:iOS 5及更早版本、iOS 6、iOS 8
動作選項第一次出現在 iOS 時還是存在于單調列表按鈕中的一部分,僅它提供了很少的視覺區分,同時它也沒有很強的擴展性。
當分享選項在 iOS 6 當中變成了網格狀的按鈕時,動作選項便加入其中。從此,共享選項可以現實其相對應的應用程序色彩斑斕的圖標,同時動作選項獲得了統一的、灰色的按鈕——保 存到相機膠卷、通過 AirPrint 打印、拷貝到剪貼板等。但盡管如此,分享和動作選項仍然被放在一起,這樣網格狀的顯示僅僅比列表好出一點點。
iOS 7 開始,分享選項的模樣進行了翻新,匹配了 iOS 全新的外觀,同時動作選項從灰度按鈕被換成了黑白色,并擁有了一行獨立的可滾動的列表,想添加多少就有多少。但即便如此,可使用的動作還是非常少。
iOS 8 終于改變了這一切。
動作擴展如何工作
iOS 8 中的擴展性意味著我們不再拘泥于蘋果提供的那些默認動作選項,我們不再需要等待 AirPlay 或 AirPrint 的支持,也不再需要關心蘋果會不會為第三方產品提供一個系統級別的服務,現在任何應用程序都可以通過安裝擴展的方式來增強其本身以及 iOS 的實用性。
所以不需要蘋果和微軟就「將 Bing 翻譯放入 Safari」而簽署什么合作協議,微軟可以在自己的 Bing 應用內創建一個動作擴展,Bing 翻譯就會像原生服務一樣出現在 Safari 當中。
而使用一個動作擴展也非常容易。如果你在 Safari 中閱讀 iMore,但是你的母語是法語而非英語,你可以點擊分享按鈕,在動作選項欄橫向滑動找到 Bing 翻譯擴展,輕松點擊便可以將網頁翻譯成法語。
同時,你還可以按照你的喜好重新排列動作擴展。滾動到動作選項最右端并點擊更多按鈕,即可將按鈕前后挪動以進行排序。這意味著如果你經常使用 1Password 來幫助你輸入密碼,你可以將它挪動到最前面。這樣每次你點開分享菜單的時候它都會在最前面,不再需要你去滑動尋找。
就像插件一樣,動作擴展不僅能添加更多應用程序,它還對系統和已經存在的應用添加更多功能性。對「離開Safari - 打開1Password - 用內置瀏覽器打開或將密碼拷貝 - 再回到Safari」的體驗說再見吧!
關聯閱讀:1Password 在 iOS 8 上展示 Touch ID 驗證登錄及 Safari 擴展功能
自定義 Safari 動作
在 iOS 8 當中,有一些特定的動作擴展是針對 Safari 的。他們叫做自定義 Safari 動作,有兩種類型:
* 有自己界面的動作擴展
* 沒有自己界面的動作擴展
有自己界面的動作擴展如 1Password,比如在你登錄 YouTube 的時候會詢問你要使用你哪一個 Google 賬號(如果你有多個 Google 帳號)。
沒有自己界面的動作擴展如 Bing 翻譯,在 WWDC 會上我們就見到過,它能即時將網頁翻譯成其他語言。
開發動作擴展
動作擴展允許開發者將應用內的一個功能,通過系統內建的分享頁面提供給其他應用程序或者系統使用。盡管擴展主要以界面控制器的形式出現于 iOS,動作擴展可以使用界面控制器的形態,也可以如自定義 Safari 擴展,沒有界面。
標準動作擴展和自定義 Safari 擴展之間的唯一區別在于,Safari 自定義擴展可以使用 JavaScript。他們有完整的文件對象模型 ( DOM, Document Object Model ) 訪問權限,這意味著他們可以從網頁上獲取一個圖片,對其進行標注,然后將新圖片替換到原始文件的位置。
就像分享擴展一樣,動作擴展也擁有激活條件,告訴系統他們可以處理什么樣的數據。這樣一來,如果一段文字被選取,那么只有那些可以對文字進行編輯的選項會被顯示。如果是一張照片被選取,那么可以對照片進行修改的選項就會出現。
蘋果已經對開發者提供了很多資源,來幫助他們開發動作擴展:
WWDC 2014 為iOS 和 OS X創建擴展,第二部分
動作擴展的安全性
iOS 是一個極度重視安全性和隱私的系統,新的動作擴展也不例外。iOS 中,應用程序都在沙盒機制下運行,只允許訪問他們內部的文件,只有當用戶給予權限的時候才可以訪問特定的某個文件或系統功能。這就是為什么應用程序需要 「訪問相機膠卷」的原因,也是為什么你需要點擊「打開…」,這樣才使得惡意應用不能訪問你的系統或你的個人數據。
iOS 8 擴展性帶來的改變是,蘋果將一個應用程序的擴展保持在該應用沙盒內部,但是允許 iOS 和其他應用通過 iOS 向這個應用請求功能或信息,被請求的應用程序會再對請求應用或 iOS 提供用戶界面、信息或其他功能。
對于動作擴展來說,功能來源方的應用程序是宿主,而你所請求的功能則是容器。比如,如果你正在使用Safari,這就是你的宿主程序。如果你在 使用 1Password 來輸入密碼或者使用 Bing 來進行翻譯,這些都是容器。這個機制不僅提供了安全性,還提供了穩定性。(上面例子中,在 iOS 8 下使用 1Password 或 Bing 的擴展功能,都不需要提前運行相應應用或令其在后臺運行)
蘋果沒有詳細說明這些的工作原理,但是他們聲稱使用了與 iOS 其他層面類似的安全技術,自 iOS 7 開始蘋果在安全和加密方面下了很多功夫,我相信 iOS 8 新的擴展性會特別安全實用。
小結
動作擴展為 iOS 8 和 iOS 8 應用程序提供了強勁的新功能。要注意的是,目前才是這一功能的最初版本,像多任務一樣,動作擴展無疑也會升級。比如,1Password 現在只能在 Safari 中輸入密碼,但不能在其他應用程序當中輸入密碼,相信隨著 iOS 8 的完善,這些局限性問題會得到解決。可以說,動作擴展的出現,意味著用戶能在應用程序間的切換上花更少的時間和精力,這是相當大的進步。