刷新今日扩展视图

时间:2014-10-22 00:36:33

标签: ios xcode cocoa-touch ios8 ios8-today-widget

我为我的iOS App创建了今天的扩展程序。我的应用程序在后台获取新数据并将其保存到应用程序组中的共享数据库中。

当执行主应用程序的后台提取时,我如何制作(如果可能的话)扩展程序以更新它的视图?如果它不可能,我怎么能做出相同的东西(比如定期更新扩展以检查共享数据库中的新数据)。

2 个答案:

答案 0 :(得分:12)

您可以使用共享的NSUserDefaults并观察它。

在您的应用中

更新数据库后,执行以下命令:

NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.yourcompany.sharedDefaults"];
[userDefaults setObject:[NSDate date] forKey:@"updatedDate"];
[userDefaults synchronize];


在今日小工具中

在viewDidLoad中添加一个观察者:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(userDefaultsDidChange:)
                                             name:NSUserDefaultsDidChangeNotification
                                           object:nil];

然后

- (void)userDefaultsDidChange:(NSNotification *)notification {
    // check updatedDate and update widget UI
}

参考:http://www.glimsoft.com/06/28/ios-8-today-extension-tutorial/

答案 1 :(得分:1)

系统每次都会创建ViewController,但是你今天的小部件代码中的单例实例会在很长一段时间内保持生存状态。