【问题标题】:key chain not storing data in iOS simulator 11.2钥匙链未在 iOS 模拟器 11.2 中存储数据
【发布时间】:2018-09-23 11:24:30
【问题描述】:

我在 xamarin c# 中编写了以下代码,以将敏感数据存储在 iPhone 钥匙串中。

    void StoreKeysInKeychain(string key, string value)
    {

        var user = Settings.CurrentUser;
        var userstring = JsonConvert.SerializeObject(user);

        if (value == "logout")
        {
            userstring = string.Empty;
        };

        var record = new SecRecord(SecKind.GenericPassword)
        {
            ValueData = NSData.FromString(userstring),
            Generic = NSData.FromString(key),
            Label="Sanket",
        };
        SecKeyChain.Remove(record);
        SecKeyChain.Add(record);

    }

    SecRecord GetRecordsFromKeychain(string key)
    {
        SecStatusCode res;
        var rec = new SecRecord(SecKind.GenericPassword)
        {
            Generic = NSData.FromString(key)
        };
        return SecKeyChain.QueryAsRecord(rec, out res);
    }

在另一个 MAC 模拟器上使用相同的代码进行了测试,它在那里工作,但在我的 MAC 上没有。

两个 MAC 的 iOS 10.13.3 和模拟器版本 11.2 相同。 即使我尝试更改模拟器,但它不存储数据。

我试图浏览以 sqlite 格式存储的钥匙串内容。 参考下面的链接如何浏览存储在模拟器钥匙串中的内容。

链接到:Browse Keychain Data stored in Simulator

我尝试重置模拟器的内容,但没有成功。

任何帮助将不胜感激。 谢谢 :(

【问题讨论】:

    标签: c# ios xamarin xamarin.forms xamarin.ios


    【解决方案1】:

    在 iOS 10 中模拟器上的钥匙串坏了。查看此 Xamarin 论坛帖子:https://forums.xamarin.com/discussion/77760/ios-10-keychain 和相关的苹果帖子:https://forums.developer.apple.com/thread/51071

    这是问题:问题:SecKeyChain.Add() 在 iOS 10 模拟器上返回 -34018,除非在 Entitlements.plist 中启用了启用钥匙串访问组。

    您需要为模拟器构建配置更新您的Entitlements.plist

    【讨论】:

      猜你喜欢
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      相关资源
      最近更新 更多