iOS 8 的應用插件工作方式是如何跟 sandbox 沙盒保護機制共存的?

如何評價這個解決方案?是否有點類似沙盒裡面的沙盒?

&> When an extension needs to communicate with its containing app, it does so indirectly and within the context established by the host app. For example, an extension may ask its containing app to open. In this example, the extension uses API that doesn』t message the containing app directly. Additionally, an extension and its containing app can both access data in a privately defined shared container...

Source: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW2


謝邀

剛才稍微的看了一下,發現蘋果的Extension介紹後面有一張圖可以很好的解釋這個問題:

從上圖,我們可以發現,Extension實際上是App裡面的一個組件,但是Extension比App本身具有更強的擴展性(可以被其他Host App調用)

我們可以把Extension和Containing App給完全的分成兩個App來看待,這兩個App有著自己的方法聲明和獨有的量創建方式,他們在運行的時候更是有自己獨立的process。只不過,Extension和Containing App可以共享一個雙方都可以使用的Optional shared container。

這樣拆解來看之後,我們再來思考Sandbox機制在這種Apps環境下的地位,便可以得到如下結論:

  1. Extension和Containing App處於兩個不同的Sandbox內(或者類似的狀態)
  2. Extension和Containing App的Sandboxes有一定的重合(Optional shared container)
  3. Extension所在的Sandbox比Containing App所在的Sandbox有更強的擴展性(可以被Host App調用)

說白了,就是蘋果給了包含Extension的App準備了一個新的沙盒,這個沙盒和原來有部分交集,擁有更強的擴展性,但是也有更多的限制。


以上僅為一家之言,如有錯誤,還請各位iOS大神不惜賜教
=======體內酒精含量:0.4%========
稍微評價一下蘋果給的這個方案:這簡直是讓獨立開發者一個人寫兩個程序……想累死我們是么?!信不信我把App售價翻倍!


app extension起到中間人的角色。
和Android的Intent&<--&>Receiver的做法不太一樣。


和現有的 App 之間跳轉的形式相比,在實現的功能上變化並不大。

App extention 的優勢在於,更為便捷和規範了 App 間協作,通過 App extention UI 的形式對於host app 也更為友好,不用跳轉 App。


推薦閱讀:

TAG:沙盒計算機安全 | iOS8 | iOSAppExtensions |