5

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

当执行主应用程序的后台提取时,我如何制作(如果可能)扩展以更新其视图?如果不可能,我该如何做一些等效的事情(比如定期更新扩展以检查共享数据库中的新数据)。

4

2 回答 2

13

您可以使用共享的 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/

于 2014-10-22T02:53:34.490 回答
1

系统每次都会创建 ViewController,但是您今天的小部件代码中的单例实例会长期存在。

于 2016-09-02T08:23:41.230 回答