iOS アプリの今日の拡張機能を作成しました。私のアプリはバックグラウンドで新しいデータをフェッチし、それをアプリ グループの共有データベースに保存しています。
メインアプリのバックグラウンドフェッチが実行されたときにビューを更新する拡張機能を(可能であれば)作成するにはどうすればよいですか? それが不可能な場合は、どうすれば同等のものを作成できますか (共有データベース内の新しいデータをチェックするために拡張機能を定期的に更新するなど)。
iOS アプリの今日の拡張機能を作成しました。私のアプリはバックグラウンドで新しいデータをフェッチし、それをアプリ グループの共有データベースに保存しています。
メインアプリのバックグラウンドフェッチが実行されたときにビューを更新する拡張機能を(可能であれば)作成するにはどうすればよいですか? それが不可能な場合は、どうすれば同等のものを作成できますか (共有データベース内の新しいデータをチェックするために拡張機能を定期的に更新するなど)。
共有 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/
システムは毎回 ViewController を作成しますが、今日のウィジェット コードのシングルトン インスタンスは長期間存続します。