不能访问保存在Xamarin.iOS钥匙扣值
问题描述:
在我的应用我有两种方法,帮助我保存和钥匙扣不能访问保存在Xamarin.iOS钥匙扣值
public static void StoreKeysInKeychain(string key, string value)
{
DeleteKeyFromKeychain(key);
var s = new SecRecord(SecKind.GenericPassword)
{
ValueData = NSData.FromString(value),
Generic = NSData.FromString(key)
};
SecKeyChain.Add(s);
Console.WriteLine(GetRecordsFromKeychain(key));
}
public static string GetRecordsFromKeychain(string key)
{
SecStatusCode res;
var rec = new SecRecord(SecKind.GenericPassword)
{
Generic = NSData.FromString(key)
};
var match = SecKeyChain.QueryAsRecord(rec, out res);
if (match != null)
return match.ValueData.ToString();
return "Error";
}
我节省有两个值获取值,由于某种原因时,我试图让他们中的任何一个我得到一个“错误”字符串,而不是值。相同的代码以前工作没有任何问题,但后来我加了另一个参数在钥匙串来存储并改名都
答
如果你的目标的iOS 10+,确保您检查您的SecKeyChain.Add
的返回状态:
var status = SecKeyChain.Add(s);
if (status == SecStatusCode.Success)
Console.WriteLine(GetRecordsFromKeychain(key));
else
Console.WriteLine(status);
如果你得到一个-34018
,那么你需要确保您的Entitlements.plist
钥匙串访问:
然后确保该Entitlements.plist
分配给您的Custom Entitlements
在你的项目Build
/iOS Bundle Signing
:
哇,不知道应享权利,奇怪的是,之前的工作。顺便说一句,我不知道如何,但是当我昨天使用Keychain.Net库时,即使在幕布后面,图书馆的工作方式也几乎相同。不管怎么说,还是要谢谢你! –
现在的另一个问题是,在启用KeyChain访问后,我无法将应用程序部署到设备“错误MT1006:无法在设备'iPhone'上安装应用程序'Myapp.app':您的代码签名/设置配置文件未正确配置。可能您拥有目前的配置文件不支持的权利,或者您的设备不属于当前的配置文件。请检查iOS设备日志以获取详细信息(错误:0xe8008016)。 –
@SushiHangover如何将钥匙串记录添加到kSecAttrAccessGroupToken访问组? –