答えを学ぶのにかなり時間がかかった問題について説明しています。
" GenericKeychain "の例は、initでaccessGroupを使用するときに、アプリケーション間でキーチェーンデータを共有するためのラッパーを提供するのに適しています。
ただし、これをアプリに実装すると、あいまいなエラーコード(検索に永遠に時間がかかる)-25243が生成されました。つまり、アクセス制御がありません。
Appleのサンプルアプリ(GenericKeychain)をiPadで実行して、同じエラーを取得しました。え?
Appleのドキュメントは、これを達成するために必要なものを提供できませんか?
Web全体を掘り下げた後、答えを見つけました。 KeychainItemWrapperクラスを構築するときに使用するアクセスグループは、アプリケーションのEntitlements.plistファイルの「keychain-access-groups」セクションでも指定する必要があります。
「keychain-access-groups」と表示されるのは、今ではほとんど明らかです。しかし、私はそこを見ることすら知りませんでした。これが他の人に役立つことを願っています。
実際、それは難しくありません。手順に従ってください。
App1:
そして、これらのコードを必要な場所に追加します。
[UICKeyChainStore setString:@"someValue" forKey:@"someKey" service:@"someService"];
App2:
そして、これらのコードを必要な場所に追加します。
NSString *string = [UICKeyChainStore stringForKey:@"someKey" service:@"someService"];
TeamIDsは両方のプロジェクトで同じでなければなりません。