我正在使用NSUbiquitousKeyValueStore
同步我的应用程序首选项,我正在使用两台设备 iPhone 3GS 和 iPhone 4 测试同步过程。
当我在一台设备(比如 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]);
}
但是会出现两个问题:
第一:虽然注册了NSUbiquitousKeyValueStoreDidChangeExternallyNotification
,但我从未在 iPhone 4 上收到它。因此,如果 iPhone 4 处于活动状态,而 iPhone 3GS 更改了偏好,iPhone 4 就不会意识到这一点。
第二:当 iPhone 开始从 同步首选项时NSUbiquitousKeyValueStore
,它永远不会使用 iPhone 3GS 获得新的首选项集(参见下面的代码)。尽管已成功同步NSUbiquitousKeyValueStore
(同步方法返回 YES)。
NSUbiquitousKeyValueStore *keyStore = [NSUbiquitousKeyValueStore defaultStore];
if ([userDefaults synchronize]) {
NSLog(@"FROM - UI SOUNDS %@", [keyStore objectForKey:S_KEY_UI_SOUNDS]);
}
有解决办法吗?或者我做错了什么?