1 建立一个新的 target app 类型选择today Extension
http://blog.csdn.net/wjsxiaoweige/article/details/39524291
phone Extension的建立
3 run 工程,看看我们的today Extension app效果,记得选择Today 这样才能直接看到效果
4 是不是很简单,但是这样展示的数据只能是固定的,我们需要的我们应用的实际数据,而不是毫无意义的数据,那么怎么和我们的应用联系到一起,这个就需要用到add group了
add group 是apple 提供的一种安全的数据共享方式
首先选择我们需要共享的应用,创建app groups
6 下面 我们讲告诉你,如何把应用的数据,共享出去,我们用得是 NSUserDefaults 方法 代码如下
注意 是alloc方法,shareinstance是不能用的。
2 构建 today Extension app的sb 很简单,如果你的UI很复杂,这个就不管了
3 run 工程,看看我们的today Extension app效果,记得选择Today 这样才能直接看到效果
4 是不是很简单,但是这样展示的数据只能是固定的,我们需要的我们应用的实际数据,而不是毫无意义的数据,那么怎么和我们的应用联系到一起,这个就需要用到add group了
add group 是apple 提供的一种安全的数据共享方式
首先选择我们需要共享的应用,创建app groups
打开app group的按钮,这中间需要我们正确的配置appid 才能够上线,所以如果只是自己学习的话,忽略下面的红色感叹号吧
5 点击+号 创建一个Add a new container 填写名字 group.TodayDataExtensionDefaults ok完成。 同样的方法,在today extension app创建一个同样的new container
完成上面两步,你就会看到第一步entitlements这个东东了,这就是你要共享数据的容器。
6 下面 我们讲告诉你,如何把应用的数据,共享出去,我们用得是 NSUserDefaults 方法 代码如下
NSUserDefaults * shareDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.TodayDataExtensionDefaults"];
[shareDefaults setObject:@"this is the test1111" forKey:@"test"];
[shareDefaults synchronize];
注意 是alloc方法,shareinstance是不能用的。
7 在TodayViewController中添加如下方法来监听usetdefault的变化
- (instancetype)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDefaultChaneg:) name:NSUserDefaultsDidChangeNotification object:nil];
}
return self;
}
8 在通知方法里改变today 控件的值
- (void)userDefaultChaneg:(id)sener
{
NSUserDefaults * defaultes = [[NSUserDefaults alloc] initWithSuiteName:@"group.TodayDataExtensionDefaults"];
NSString * string = [defaultes valueForKey:@"test"];
NSLog(@"string = %@",string);
self.myLable.text = string;
}
其它知识 我们可以创建一个快速打开我们应用的按钮
NSURL * url = [NSURL URLWithString:@"readbook://a=1"];
[self.extensionContext openURL:url completionHandler:^(BOOL success) {
}];