Je décris un problème pour lequel il m'a fallu un certain temps pour apprendre la réponse.
L'exemple " GenericKeychain " est un bon début pour fournir un wrapper pour partager des données de trousseau entre des applications lors de l'utilisation de accessGroup dans l'init.
Cependant, l'implémentation de cela dans mon application a produit un code d'erreur obscur (qui a pris une éternité à localiser) -25243, ce qui signifie: Aucun contrôle d'accès.
J'ai exécuté l'exemple d'application d'Apple (GenericKeychain) sur mon iPad uniquement pour obtenir la même erreur. Hein?
La documentation d'Apple ne fournit-elle pas ce qui est nécessaire pour y parvenir?
Après avoir (beaucoup) creusé sur le Web, j'ai trouvé la réponse. Le groupe d'accès que vous utilisez lors de la construction de votre classe KeychainItemWrapper doit également être spécifié dans chacun des fichiers Entitlements.plist de votre application dans la section "keychain-access-groups".
Il semble presque évident maintenant que je vois "keychain-access-groups". Cependant, je n'avais aucune idée d'y regarder. J'espère que cela aide les autres.
En fait, ce n'est pas difficile à faire. Veuillez suivre les étapes.
App1:
Et ajoutez ces codes à l'endroit dont vous avez besoin.
[UICKeyChainStore setString:@"someValue" forKey:@"someKey" service:@"someService"];
App2:
Et ajoutez ces codes à l'endroit dont vous avez besoin.
NSString *string = [UICKeyChainStore stringForKey:@"someKey" service:@"someService"];
Vos TeamID doivent être identiques pour les deux projets.