iOS Today Extension
什么是Today Extension?
怎么创建?
怎么使用?
不想使用sb?
代码共享
数据共享
什么是Today Extension?
如下图,没一个日程块就是一个Today Extension
B6C418C8-BE4D-4633-A053-A33AD612423C.png
怎么创建?
1.打开你要添加此target的项目,如下点击+
号
2.之后选择Today Extension
3.输入项目名
3.png
4.弹出提醒,选择右侧Activate
4.png
5.查看target
6.创建完成,运行原项目(安装主app即安装了全部extension)
7运行项目.png
7.运行后,回到手机/模拟器首页,左滑至日程页,点击编辑
8.jpg
8.可以看到Today Extension ,添加 -> 完成
9.jpg
9.如下,显示默认 Hello World
10.jpg
怎么使用?
1.先看一下目录结构,包含一个vc和sb和info,其中vc和sb已经绑定
1结构.png
2.我们在sb中删除掉不用的内容,新建自己的一个按钮,来进行跳转到app
sb.png
3.运行项目,点击Today Extension
中的按钮,这时候是无效的
众所周知,想要跳转到另一个APP,要设置 schemes
,并且另一方要调用openURL
方法,但是这里调用方法略有不同
3.1 设置主APP的
schemes.pngschemes
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中使用此类
FDEE9C76-0A71-411F-940B-C1E406CFDD04.png
数据共享
需要配置证书和描述文件,自行研究配置
1.创建app groups
2.点击app groups
创建
3.添加app groups
4.选中要添加的app groups
,默认
5.添加完成
1C726841ACEB27FD49674301FCACE315.jpg- 某类中如在
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:@"****"];