1
我已经为此创建了一个新问题,因为这更关联到Xamarin。当我偶然发现StackOverflow中的这个question时,我正在寻找一种在iOS中唯一标识设备的方法。我花了一段时间才弄清楚如何在Keychain中添加任何东西,而我偶然发现了这个question。Xamarin iOS为KeyChain增加价值,可以通过设备上的所有应用程序访问
经过所有的绊脚石,我想出了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>
感谢您的回复。你有没有看过我发布的Gist?我对它做了一些修改,现在就开始工作。所以当我卸载应用程序并重新安装时,我仍然能够获得Guid。但是现在你说了这些,我是否在做一些反对苹果政策的事情? –
@MadhavShenoy 1)你在iOS 10.2或更低版本上做这个? 2)你在物理设备上测试吗? (模拟器不遵循运行时间规则) – SushiHangover
好的,让我测试一下这个设备。所以这意味着根本无法在iOS上唯一标识设备........ –