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 は、含まれているアプリからキーボードのデザインを変更します。したがって、彼らは間違いなく、データを更新するためのコールバックまたは何かを持っています。
クリーンなソリューションを思いついた人に感謝します。