私のアプリケーションの2番目のバージョンを起動する準備ができています。私は以前のバージョンから新しいバンドルIDでこの新しいバージョンをリリースするつもりです。以前のバージョンでは、iCloudキーバリューストアを使用して設定やその他の情報を保存していました。 、複数のアプリケーション間で共通のキー値ストレージを共有できない
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>get-task-allow</key>
<true/>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>
</dict>
</plist>
「複数のアプリのための共通のキー値ストレージの構成」の下http://developer.apple.com/library/mac/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.htmlでの指示に従った後、ここに私v2の資格ファイルは次のようになります:ここに私の資格は、v1のファイルの
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)com.companyname.MyApp</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>
</dict>
</plist>
よりますドキュメントにv2はv1と同じキーと値のストレージから読み取られるはずです。ただし、単純なテストを実行すると失敗します。ここで私はどのように再現するのですか?
Open MyApp 1.0。 "InstalledVersion1"キーに "YES"というブール値をキー値ストアに書き込みます。
NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore]; [store setBool:YES forKey:@"InstalledVersion1"];
MyApp 2.0を開き、この値をストアから読み取ります。
NSUbiquitousKeyValueStore* store = [NSUbiquitousKeyValueStore defaultStore]; [store synchronize]; NSLog(@"%@", [store dictionaryRepresentation]);
これは{}
を印刷します。
それは{ "InstalledVersion1" = 1; }
のようなものを印刷する必要があります...しかし、そうではありません。
私は間違っていますか?ストアを同期させるためにもうちょっと待てばいいですか?
デバイスログ:https://gist.github.com/dlo/688f187c75fd1b1fdc78(デバッガでp (void)[[NSUbiquitousKeyValueStore defaultStore] _printDebugDescription]
を実行した後)。