首页 > 代码库 > Today Extension and add group

Today Extension and add group

1 建立一个新的 target app 类型选择today Extension http://blog.csdn.net/wjsxiaoweige/article/details/39524291phone Extension的建立



我们会发现多出来一个entitlements的东东,不要着急,一会我会告诉大家这个是怎么出来的

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) {
        
    }];





Today Extension and add group