2014-10-22 1 views
4

Я создал сегодня расширение для моего приложения для iOS. Мое приложение извлекает новые данные в фоновом режиме и сохраняет их в общей базе данных в группе приложений.Обновление существующего вида расширения

Как я могу сделать (если это возможно) расширение для обновления его вида при выполнении фоновых захватов основного приложения? Если это невозможно, как я могу сделать что-то эквивалентное (например, регулярно обновлять расширение для проверки новых данных в общей базе данных).

ответ

12

Вы можете использовать общие NSUserDefaults и наблюдать за ним.

В приложении:

После обновления базы данных, выполните ниже:

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


В вашей Сегодня Widget:

добавить наблюдателя в 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/

+0

Спасибо! Я видел этот урок, но не интересную часть для меня ... Позор мне !!! – ThibaultV

+0

Не вызывается метод addObserver слишком много раз? каждый раз, когда вызывается viewDidLoad, не отпуская наблюдателя? – Gabriel

+0

ViewDidLoad вызывается только один раз. И вам нужно удалить наблюдателя в методе dealloc. – scottphc

1

Система создание ViewController каждый раз, но ваш синглтон-экземпляр в вашем сегодняшнем коде виджета продолжать жить в течение длительного периода времени.

 Смежные вопросы

  • Нет связанных вопросов^_^