Брелок Xamarin Auth Store не работает после обновления ios10

Я использую Xamarin.Auth ( https://components.xamarin.com/view/xamarin.auth/) для хранения своих учетных данных, как я всегда делал.

var accountStore = AccountStore.Create ();
foreach (var account in  accountStore.FindAccountsForService("myAppName"))
    accountStore.Delete (account, "myAppName");

AccountStore.Create().Save(acc, "myAppName");

После обновления до iOS 10 я получаю эту ошибку, сохраняя учетные данные:

"Could not save account to KeyChain: -34018"

at Xamarin.Auth.KeyChainAccountStore.Save (Xamarin.Auth.Account account,System.String serviceId) [0x000b2] in <402cf9b3716845b3bdddef581cb33a3e>:0 

Установлена ​​последняя версия 1.2.3.1 Проблема, кажется, сохраняется только на SIMULATOR

2 ответа

Решение

Я копался по ссылке, которую Пэт послал в комментарии: https://bugzilla.xamarin.com/show_bug.cgi?id=43514

И нашел полезный комментарий Павла Сича, он сказал:

Просто убедитесь, что вы включили доступ к цепочке для ключей в Entitlements и выберите права для сборок Simulator (Debug). По умолчанию это не установлено.

В моем решении xamarin я дважды щелкнул проект.IOS, чтобы открыть панель параметров, выбрал " Подписывание пакетов IOS" и изменил поле выбора платформы с "iPhone" на "iPhoneSimulator", а затем установил поле " Пользовательские права доступа" в свой Entitlements.plist. Теперь у меня все работает нормально.

Просто примечание, это после редактирования Entitlement.plist, как это было предложено Тибо Д. в предыдущем ответе.

Надеюсь это поможет.

В соответствии с этой веткой достаточно, чтобы вы добавили пустой файл разрешений в конфигурацию вашего пакета:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
  ...
  <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

пустой Entitlements.plist файл:

<?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>

Установите пользовательские права в настройках проекта ios

Кажется, что когда вы работаете над IphoneSimulator даже ты включен KeyChain в Entitlements.plist, он все еще не работает и выдает это исключение. Потому что Xamarin, кажется, не имеет CodesignEntitlements устанавливает для конфигурации IphoneSimulator по умолчанию, хотя он имеет для Iphone конфигурации. Вы должны открыть свой IOS.csproj файл и вручную добавить эту строку

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">

  <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>
Другие вопросы по тегам