Я пытаюсь сделать расширение клавиатуры iOS, но у меня возникают проблемы с синхронизацией/обновлением данных из содержащего приложения в расширение.
Как говорится в документе, я использую
NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.example.domain.MyShareExtension"];
[mySharedDefaults setObject:theAccountName forKey:@"lastAccountName"];
Это работает отлично. Прежде чем запускать клавиатуру в содержащем приложении, я использую это, а в viewdidLoad клавиатуры я проверяю NSUserDefault, и все работает нормально.
Проблема в том, что если в моем содержащем приложении я обновляю свои NSUserDefaults, как я могу узнать в своем приложении клавиатуры, что NSUserDefaults были обновлены.
Пробовал КВО, не работает. Пробовал NSUserDefaultsStandard с NSUserDidChangeNotification, не работает. NSUserDefaultsStandard вообще не работает для расширения клавиатуры.
Я думал об использовании NSTimer в расширении клавиатуры и проверял NSUserDefaults каждые X мс. Но это перебор.
Я знаю, что это возможно, поскольку приложения делают это в AppStore. BrightKey или CoolKey меняют дизайн клавиатуры из содержащего приложения. Так что у них определенно есть обратный вызов или что-то еще, чтобы обновить свои данные.
Заранее спасибо всем, кто предложит чистое решение.