iOS8新特性Extension之Today插件的代码测试

来源:互联网 发布:微商货源源码 编辑:程序博客网 时间:2024/04/30 11:20

Today 视图的中扩展被称为插件,用户可以通过插件快速访问当前重要的信息,具体好处这里给个链接,请自行阅读,这里不再赘述,由于是新特性,特地拿来做个demo做测试,毕竟看文章是不能真正领略其中的实现过程,事实证明,的确如此,笔者在测试期间就出现很多意外的问题,参考文章都是一笔带过,但是对于新手来说,这就是个麻烦,下面将一步一步实现一个today插件的测试demo,开动....

第一步: 构建宿主工程

看过基本介绍的朋友都知道必须要先建个工程才能在此基础上创建一个插件,也就是插件不能独立存在,哈哈,类似寄生虫,这个基本过程就是宿主了,工程随意创建,完成后在首页写入下面代码:

- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.    NSURL *fileURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx.xxxgroup" ] ;    NSURL *sourceURL = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"z" ofType:@"txt"]];    NSURL *targetURL = [NSURL URLWithString:[[fileURL absoluteString] stringByAppendingString:@"z.txt"]];    [[NSFileManager defaultManager] moveItemAtURL:sourceURL toURL:targetURL error:nil];}
注意:这里的z.txt是拖进来的一个文本文件,里面有一段话,目的是插件里显示,注意这个:@"group.com.xxx.xxxgroup",它是怎么来的呢,后面会说到,我们第一步就到这里,进入第二步;

第二步:创建Today扩展插件

还在宿主工程下,点击File-new-target,我们就看到了很多扩展,这里选中today,


然后会提示让你激活,我们激活即可,具体里面的构造请自行查阅网络资料,这里不再赘述,写下面代码,相信你能看懂做了什么,不解释..

@interface TodayViewController : UIViewController@property (nonatomic, strong) IBOutlet UILabel *messLbl;@end


- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view from its nib.    NSURL *fileURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.xxx.xxxgroup"];    NSURL *targetURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@/z.txt" ,[fileURL absoluteString]]] ;    NSString *nsString = [NSString stringWithContentsOfURL:targetURL encoding:NSUTF8StringEncoding error:nil] ;        _messLbl.text = nsString ;    [_messLbl sizeToFit];}


可以了,目前today插件就算完成了,我们进入最重要的一步,就是创建App Groups ,它的主要作用是APP之间可以共享数据,这也是新特性,这样我们的宿主程序就能和插件之间共享数据,具体详情可以继续查阅相关文档,不再赘述;

第三步:创建App Groups

选中工程,进入 TARGETS->Capabilities->App Groups ,打开开关之前,我们先可以这样做,进入我们的开发者证书配置页面,找到左侧的App Groups,创建一个ID,例如我创建的group.com.xxx.xxxgroup,


当你创建完成后,就可以打开这个开关,然后会自动刷新获取,当出现这个选项后,选中后在刷新后就可以了,这是宿主的开启工程,下面同样选中插件的这个App Groups ,现在就可以之间打开,同样会刷新,最后选中即可,


这样,宿主和插件之间就可以通过这个ID来共享数据,否则,彼此还是独立的沙盒模式,不能互相访问,具体路径什么的可以继续查阅相关文档,不在赘述,好了,我们的z.txt 已经拖到工程里面了,完事具备了,下面就开始运行工程来测试吧

第四步:运行工程

首先点击运行按钮后会有个选择界面,为了把共享数据写到共享里面,我第一次运行宿主工程,就是最早创建的工程,成功后,我们再次运行,这次选中today这个插件,


运行后你会看到模拟器会下拉通知栏,熟悉的today插件就展示出来了,里面有宿主共享出来的数据,最终效果如下图:



附:请广大开发者支持IT面试宝典:https://itunes.apple.com/cn/app/it-mian-shi-bao-dian-kai-fa/id866117100?l=en&mt=8


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 法国第一年语言没有通过怎么办 听力42天未通过怎么办 7岁儿童叛逆期怎么办 被忽视型幼儿该怎么办 言语发育障碍脑神经损伤怎么办 5岁幼儿胆子小怎么办 幼儿20天胆子小怎么办 两岁宝宝胆子小怎么办 两岁的宝宝胆子小怎么办 孕中期发烧38度怎么办 小班社会交往教案有垃圾怎么办 两个月婴幼儿哭闹入睡难怎么办 8岁儿童睡觉困难怎么办 做精细动作手抖怎么办 15个月宝宝缺锌怎么办 八个月宝宝有蛔虫怎么办 两个月婴儿缺锌怎么办 婴儿天热出汗多尿少怎么办 婴儿5个月不主动抓东西怎么办 打疫苗吃了辣怎么办 四个月宝宝枕秃怎么办 四个月的孩子缺钙怎么办 小孩张牙齿会发烧怎么办 对节白蜡叶子干了怎么办 刷机字库坏了怎么办 魅蓝返回键失灵怎么办 牙蛀严重且牙根松动怎么办 蛀牙伤到神经了怎么办 给客户发错邮件怎么办外贸 cf没有枪声和脚步声怎么办 穿越火线fps太低怎么办 win10玩cf没有声音怎么办 儿子死了欠的钱怎么办 儿子欠银行的钱怎么办 惹了社会上的混混怎么办 我是五年级惹上混混怎么办 孩子挨欺负家长怎么办幼儿园 孩子被同学欺负不敢上学怎么办 孩子被欺负不敢还手怎么办 2个月的婴儿内热怎么办 孩子把别人打了怎么办