Xamarin Auth Store钥匙扣在ios10升级后无法正常工作

时间:2016-09-14 09:47:38

标签: xamarin xamarin.ios xamarin.auth

我正在使用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上

4 个答案:

答案 0 :(得分:65)

我正在挖掘评论中发送的 Pat 链接: bugzilla.xamarin.com/show_bug.cgi?id=43514

发现了 Pavel Sich 的有用评论,他说:

  

只需确保在Entitlements中启用钥匙串访问权限,并选择Simulator(Debug)版本的权利。默认情况下,此设置未设置。

在我的xamarin解决方案中,我双击.IOS项目打开选项窗格,选择 IOS Bundle Signing 并将 Platform 选择框从“iPhone”更改为“iPhoneSimulator”,然后将 Custom Entitlements 字段设置为我的Entitlements.plist。现在它对我来说很好。

请注意,这是在按照上一个答案中 Thibault D。的建议编辑Entitlement.plist之后。

希望这有帮助。

答案 1 :(得分:10)

根据this thread,您可以在捆绑歌曲配置中添加空的权利文件:

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

答案 2 :(得分:0)

似乎您在IphoneSimulator上工作时,即使您在KeyChain中启用了Entitlements.plist,它仍然不起作用,并抛出此异常。因为Xamarin尽管没有设置CodesignEntitlements,但似乎没有为IphoneSimulator配置设置Iphone作为默认设置。您必须打开IOS.csproj文件并手动添加此行

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

  <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

答案 3 :(得分:0)

在ios项目设置中设置自定义权利 enter image description here