我为此创建了一个新问题,因为这与Xamarin有更多联系。当我在StackOverflow中偶然发现question时,我正在寻找一种在iOS中唯一标识设备的方法。我花了一段时间才弄清楚如何在Keychain中加入任何东西,我偶然发现了question。
在所有绊脚石之后,我想出了this段代码来生成唯一令牌。
var s = new SecRecord(SecKind.GenericPassword)
{
AccessGroup = "kSecAttrAccessGroupToken",
ValueData = NSData.FromString(value),
Generic = NSData.FromString(key)
};
SecKeyChain.Add(s);
现在的问题是,即使我将此条目添加到钥匙串,我也无法找到它。我也很想知道我是否正确使用了kSecAttrAccessGroupToken。
我的Enlistments.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>
<key>keychain-access-groups</key>
<array>
<string>my app id</string>
<string>kSecAttrAccessGroupToken</string>
</array>
</dict>
</plist>
答案 0 :(得分:1)
kSecAttrAccessGroupToken
只能由CryptoTokenKit智能卡驱动程序写入。应用可以使用该属性查询钥匙串,以便查找存储在特定智能卡上的项目。此属性不适用于任何其他用途。
10.3.x测试版中存在一个错误,允许任何应用也写入,但已修补。