什么是Today Extension?
怎么创建?
怎么使用?
不想使用sb?
代码共享
数据共享
什么是Today Extension?
如下图,没一个日程块就是一个Today Extension

怎么创建?
1.打开你要添加此target的项目,如下点击+号

2.之后选择Today Extension

3.输入项目名

4.弹出提醒,选择右侧Activate

5.查看target


6.创建完成,运行原项目(安装主app即安装了全部extension)

7.运行后,回到手机/模拟器首页,左滑至日程页,点击编辑

8.可以看到Today Extension ,添加 -> 完成

9.如下,显示默认 Hello World

怎么使用?
1.先看一下目录结构,包含一个vc和sb和info,其中vc和sb已经绑定

2.我们在sb中删除掉不用的内容,新建自己的一个按钮,来进行跳转到app

3.运行项目,点击Today Extension 中的按钮,这时候是无效的
众所周知,想要跳转到另一个APP,要设置 schemes,并且另一方要调用openURL方法,但是这里调用方法略有不同
3.1 设置主APP的
schemes
schemes.png
3.2 设置跳转,但是有个问题,发现方法内打断点根本不会执行,不过确实有这个方法实现才能跳转
- (IBAction)clickBtn:(id)sender {
[self.extensionContext openURL:[NSURL URLWithString:@"yshtoday://"] completionHandler:^(BOOL success) {
//程序退出,杀死状态一样可以调起
NSLog(@"嗯,你说的对");
}];
}
4.之后即可完成调起项目
不想使用sb?
1.删除自带的MainInterface.storyboard
2.删除 sb 的入口

-
添加
87F036CE-9F69-48FE-8EEC-8B7A3EAAF48D.png
4.之后即可在vc中正常实现,也不会出现实现方法中,断点无效的情况
代码共享
选中类/框架,选中图中选项,即可在TodayViewController中使用此类

数据共享
需要配置证书和描述文件,自行研究配置
1.创建app groups

2.点击app groups创建

3.添加app groups

4.选中要添加的app groups,默认

5.添加完成

- 某类中如在
AppDelegate中存值
使用NSUserDefaults、NSFileManager进行数据共享/通信,这里使用NSUserDefaults演示
//创建具体的对应group的NSUserDefaults
//输入对应的group的名称,第5步中,app group中显示的group的字符串,选中未创建成功显示的是红色groups
NSUserDefaults *ud = [[NSUserDefaults alloc]initWithSuiteName:@"****"];
[ud setFloat:19.f forKey:@"age"];
7.在TodayViewController中取值
//跨target取值
NSUserDefaults *ud = [[NSUserDefaults alloc]initWithSuiteName:@"****"];
[ud objectForKey:@"****"];

