我正在尝试制作 iOS 键盘扩展,但在将数据从包含应用程序同步/更新到扩展时遇到问题。
正如文档所述,我正在使用
NSUserDefaults *mySharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"com.example.domain.MyShareExtension"];
[mySharedDefaults setObject:theAccountName forKey:@"lastAccountName"];
这完美无缺。在包含应用程序中启动键盘之前,我使用它,并在键盘的 viewdidLoad 中检查 NSUserDefault 并且一切正常。
问题是,如果在我的包含应用程序中更新我的 NSUserDefaults,我怎么能在我的键盘应用程序中知道 NSUserDefaults 已更新。
我试过KVO,不行。我尝试使用 NSUserDidChangeNotification 的 NSUserDefaultsStandard 不起作用。NSUserDefaultsStandard 根本不适用于键盘扩展。
我正在考虑在我的键盘扩展中使用 NSTimer,并每隔 X 毫秒检查一次 NSUserDefaults。但这太过分了。
我知道这是可能的,因为应用程序正在 AppStore 中进行。BrightKey 或 CoolKey 更改包含应用程序的键盘设计。所以他们肯定有回调或其他东西来更新他们的数据。
提前感谢任何提出干净解决方案的人。