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 に答える