更新后无法访问钥匙串中先前存储的值

时间:2019-03-29 13:15:02

标签: c# ios xamarin.ios keychain

我们在访问以前在应用程序早期版本中存储在钥匙串中的值时遇到问题。我们已经将Xamarin.iOS版本从11.6.14更新到12.2.1.15,并将XCode版本从9.4.1更新到10.1。

更新后,我们将无法再访问该值。

我已阅读到安全设置方面的一些更改,但是我无法找到有关此设置的详细信息。是否有人曾经遇到过这个问题或在钥匙串方面有很多经验?感谢您的帮助!

bool WriteGenericPasswordValueToSecureKeychain(string service, string account, string value)
       {
           if (service == null || account == null || value == null)
           {
               throw new ArgumentNullException("Both arguments need a value and cannot be null");
           }

           var query = new SecRecord(SecKind.GenericPassword)
           {
               Service = service,
               Account = account
           };

           var newRecord = new SecRecord(SecKind.GenericPassword)
           {
               Service = service,
               Account = account,
               ValueData = NSData.FromString(value, NSStringEncoding.UTF8)
           };

           SecStatusCode error;
           var match = SecKeyChain.QueryAsRecord(query, out error);
           if (error == SecStatusCode.Success)
           {
               error = SecKeyChain.Update(match, newRecord);
           }
           else
           {
               error = SecKeyChain.Add(newRecord);
           }

           if (error != SecStatusCode.Success && error != SecStatusCode.DuplicateItem)
           {
               return false;
           }

           return true;
       }

0 个答案:

没有答案