iCloud KVStore複数のアプリでシーナリーを構成しています。このシーナリーには、kvstore コンテナーに書き込むプライマリ アプリと、プライマリ アプリの kvstore から読み取るセカンダリ アプリがあります。iCloud Key-Value Store Capabilityプライマリ アプリには、デフォルトで (をアクティブ化するとき) kvstore 識別子があります。
<key>com.apple.developer.icloud-container-identifiers</key>
<array/>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
Apple のドキュメントの複数のアプリに共通のキー値ストアの風景で説明されているように:
プライマリ以外のすべてのアプリに対して、プライマリの kv-store 識別子を指定する必要があります。
<key>com.apple.developer.icloud-container-identifiers</key>
<array/>
<key>com.apple.developer.ubiquity-kvstore-identifier</key>
<string>ABCDEFGH.com.myCompany.myApp</string>
どこ
ABCDEFGH.com.myCompany.myApp$(TeamIdentifierPrefix)$(CFBundleIdentifier)値です。
セカンダリ アプリ (この場合は tvOS アプリ) の実行中に、デフォルトの kv-store 識別子がある場合は機能しますが、実行されません (コンパイルされます)。要求ABCDEFGH.com.myCompany.myAppされた値を使用すると、共有を読み取るために使用されます。iCloud KVStore
エラーは次のとおりです。
アプリケーションのコード署名資格ファイルで指定された資格が、プロビジョニング プロファイルで指定された資格と一致しません。(0xE8008016)。
また、次のように iTunesConnect ポータルで定義されているものであることを確認するために、プログラムで Team-ID 識別子の値を確認しようとしました。
+ (NSString *)bundleSeedID {
NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
(__bridge NSString *)kSecClassGenericPassword, (__bridge NSString *)kSecClass,
@"bundleSeedID", kSecAttrAccount,
@"", kSecAttrService,
(id)kCFBooleanTrue, kSecReturnAttributes,
nil];
CFDictionaryRef result = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if (status == errSecItemNotFound)
status = SecItemAdd((__bridge CFDictionaryRef)query, (CFTypeRef *)&result);
if (status != errSecSuccess)
return nil;
NSString *accessGroup = [(__bridge NSDictionary *)result objectForKey:(__bridge NSString *)kSecAttrAccessGroup];
NSArray *components = [accessGroup componentsSeparatedByString:@"."];
NSString *bundleSeedID = [[components objectEnumerator] nextObject];
CFRelease(result);
return bundleSeedID;
}
実際、それは正しいものです:
ABCDEFGH.com.myCompany.myApp
すでに AppStore にあるアプリと、開発中だが AppStore で構成されているアプリを試しました (BundleID、この BundleID によるプロビジョニング プロファイルはすべて iTunes Connect から取得されます) が、エラーは残ります。