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


























