J'utilise Xamarin.Auth ( https://components.xamarin.com/view/xamarin.auth/ ) pour stocker mes informations d'identification, comme je l'ai toujours fait.
var accountStore = AccountStore.Create ();
foreach (var account in accountStore.FindAccountsForService("myAppName"))
accountStore.Delete (account, "myAppName");
AccountStore.Create().Save(acc, "myAppName");
Après la mise à niveau vers iOS 10, j'obtiens cette erreur lors du stockage des informations d'identification:
"Could not save account to KeyChain: -34018"
at Xamarin.Auth.KeyChainAccountStore.Save (Xamarin.Auth.Account account,System.String serviceId) [0x000b2] in <402cf9b3716845b3bdddef581cb33a3e>:0
Dernière version installée 1.2.3.1 Le problème semble persister uniquement sur le SIMULATEUR
Je creusais le lien Pat a envoyé le commentaire: bugzilla.xamarin.com/show_bug.cgi?id=43514
Et a trouvé un commentaire utile de Pavel Sich , il a dit:
Assurez-vous simplement d'activer l'accès au trousseau dans les droits et sélectionnez également les droits pour les versions du simulateur (débogage). Par défaut, cela n'est pas défini.
Dans ma solution xamarin, j'ai double-cliqué sur le projet .IOS pour ouvrir le volet d'options, sélectionné Signature du bundle IOS et changé la boîte de sélection Platform depuis "iPhone" sur "iPhoneSimulator", puis définissez le champ Custom Entitlements sur mon Entitlements.plist. Maintenant ça marche bien pour moi.
Juste une note, c'est après avoir édité le Entitlement.plist comme suggéré par Thibault D. dans la réponse précédente.
J'espère que cela t'aides.
Selon ce fil il suffit que vous ajoutiez un fichier de droits vide dans votre configuration de chant groupée:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
...
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
Vide Entitlements.plist
fichier:
<?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>
</dict>
</plist>
Il semble que lorsque vous travaillez sur IphoneSimulator
même vous avez activé KeyChain
dans Entitlements.plist
, cela ne fonctionne toujours pas et lève cette exception. Parce que Xamarin ne semble pas avoir par défaut CodesignEntitlements
ensembles pour la configuration IphoneSimulator bien qu'il ait pour les configurations Iphone
. Vous devez ouvrir votre IOS.csproj
fichier et ajoutez manuellement cette ligne
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>