现在的位置: 首页 > 综合 > 正文

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

2016年01月21日 ⁄ 综合 ⁄ 共 2256字 ⁄ 字号 评论关闭

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


抱歉!评论已关闭.