在我的Xamarin iOS應用程序中,我將DeviceId和AccessToken存儲在鑰匙串中。爲了保存和檢索訪問令牌,我的代碼工作正常,但是對於保存設備ID的設備ID(它是一個GUID),它給出了結果DuplicateItem
,並且在檢索設備ID時它給出了結果ItemNotFound
。我正在使用設備ID和訪問令牌的單獨密鑰。這裏是我的代碼無法從Xamarin iOS中檢索GUID SecKeychain
public const string DEVICE_ID = "DEVICE_ID";
public const string ACCESS_TOKEN = "ACCESS_TOKEN";
public static string GetValue(string key)
{
var query = new SecRecord(SecKind.GenericPassword)
{
Generic = NSData.FromString(key)
};
SecStatusCode result;
var match = SecKeyChain.QueryAsRecord(query, out result);
if (result == SecStatusCode.Success)
{
return match.ValueData.ToString();
}
return string.Empty;
}
public static void SetValue(string value, string key)
{
var query = new SecRecord(SecKind.GenericPassword)
{
ValueData = NSData.FromString(value),
Generic = NSData.FromString(key)
};
var result = SecKeyChain.Add(query);
}
我保存和獲取的設備ID通過方法調用像
SetValue(Guid.NewGuid(), DEVICE_ID);
string deviceId = GetValue(DEVICE_ID);
它可能看起來很奇怪,但我不知道爲什麼它的行爲就像這樣,沒有任何人有遇到過這個問題或者我的代碼中是否有任何錯誤。請幫幫我。
我假設你沒有使用相同的密鑰,每次來存放它# – Digitalsa1nt
我正在使用相同的密鑰「deviceid」來存儲和檢索數據 – RikudouSennin
以及你不能使用相同的密鑰既GUID和令牌...否則鑰匙串如何知道你要求你哪一個來檢索它們。您必須確保您使用兩個不同的'鑰匙' – Digitalsa1nt