アプリケーション設定の同期に使用NSUbiquitousKeyValueStore
しており、iPhone 3GS と iPhone 4 の 2 つのデバイスを使用して同期プロセスをテストしています。
1 つのデバイス (iPhone 3GS など) で設定を変更するとNSUbiquitousKeyValueStore
、次のコードを使用して設定が同期されます。
NSUbiquitousKeyValueStore *keyStore = [NSUbiquitousKeyValueStore defaultStore];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[keyStore setObject:[userDefaults objectForKey:S_KEY_UI_SOUNDS]
forKey:S_KEY_UI_SOUNDS];
if ([keyStore synchronize]) {
NSLog(@"TO ICLOUD - UI SOUNDS %@", [keyStore objectForKey:S_KEY_UI_SOUNDS]);
}
ただし、次の 2 つの問題が発生します。
まず、 に登録されていますがNSUbiquitousKeyValueStoreDidChangeExternallyNotification
、iPhone 4 で受信することはありません。そのため、iPhone 3GS が設定を変更している間に iPhone 4 がアクティブな場合、iPhone 4 はそれを認識しなくなります。
2 番目: iPhone が から設定の同期を開始すると、NSUbiquitousKeyValueStore
iPhone 3GS を使用して新しい設定セットを取得することはありません (以下のコードを参照)。これは、との同期が成功したにもかかわらずですNSUbiquitousKeyValueStore
(synchronize メソッドは YES を返します)。
NSUbiquitousKeyValueStore *keyStore = [NSUbiquitousKeyValueStore defaultStore];
if ([userDefaults synchronize]) {
NSLog(@"FROM - UI SOUNDS %@", [keyStore objectForKey:S_KEY_UI_SOUNDS]);
}
それに対する修正はありますか?または私は何を間違っていますか?