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