Apple 官方文檔App Extension Programming Guide
我總結(jié)文檔的大概如下:
Extension 包括Today,分享昏翰,Action,自定義輸入鍵盤顾孽,修圖等
Extension工作機制
Extension Life Cycle
因為app extension不是一個app咒锻,所以的Life Cycle ,譬如當(dāng)按下分享按鈕時催跪,如下:
Extension 傳遞信息的方式
譬如在Safari上點擊微博的分享按鈕锁蠕,就會彈出微博的輸入框,然后按分享懊蒸。那么
Host app
就是Safari,而App extension
則是那個彈出來的微博輸入框荣倾,Containing app
則是微博。
App extension
雖然是屬于Containing app
骑丸,但是它是獨立出來就像是另一個app一樣.所以如圖打開微博舌仍,則需要使用Url scheme,共用數(shù)據(jù)則需創(chuàng)建共享空間通危。
a8430e88-dbc5-4c0a-9658-5e91c708448c.jpg
使用Framework共享代碼
因為App extension
是獨立出來的铸豁,所以是不能直接使用Containing app
的代碼。
可以把需要用到的函數(shù)或者類打包為Framework進(jìn)行共用菊碟。
教程:Build your own Cocoa Touch Frameworks, in pure Swift
使用App Group共享數(shù)據(jù)
開啟app group如下圖做节芥。設(shè)置group名為group.xxx
,我的則為group.value
先設(shè)置你的app
接著設(shè)置extension的
舉個例子
let groupKey = "group.value"
//存儲數(shù)據(jù)
let myContainShare = NSUserDefaults.init(suiteName: groupKey)
myContainShare?.setInteger(2, forKey: "test")
//獲取數(shù)據(jù)
let myContainShare = NSUserDefaults.init(suiteName: groupKey)
let i = myContainShare?.integerForKey("test") // i = 2