App Extension - iOS开发
2016-03-30 本文已影响857人
莫威權在B612等着那温柔的风
Apple 官方文档App Extension Programming Guide
我总结文档的大概如下:
Extension 包括Today,分享,Action,自定义输入键盘,修图等
Extension工作机制
Extension Life Cycle
因为app extension不是一个app,所以的Life Cycle ,譬如当按下分享按钮时,如下:

Extension 传递信息的方式

譬如在Safari上点击微博的分享按钮,就会弹出微博的输入框,然后按分享。那么
Host app
就是Safari,而App extension
则是那个弹出来的微博输入框,Containing app
则是微博。
App extension
虽然是属于Containing app
,但是它是独立出来就像是另一个app一样.所以如图打开微博,则需要使用Url scheme,共用数据则需创建共享空间。

使用Framework共享代码
因为App extension
是独立出来的,所以是不能直接使用Containing app
的代码。
可以把需要用到的函数或者类打包为Framework进行共用。
教程:Build your own Cocoa Touch Frameworks, in pure Swift
使用App Group共享数据
开启app group如下图做。设置group名为group.xxx
,我的则为group.value
先设置你的app

接着设置extension的

举个例子
let groupKey = "group.value"
//存储数据
let myContainShare = NSUserDefaults.init(suiteName: groupKey)
myContainShare?.setInteger(2, forKey: "test")
//获取数据
let myContainShare = NSUserDefaults.init(suiteName: groupKey)
let i = myContainShare?.integerForKey("test") // i = 2