从iOS Siri扩展中获取KeychainAccessGroup

时间:2018-12-13 16:49:41

标签: c# ios xamarin xamarin.ios

嗨,我当前在我的C#/ Xamarin应用程序之一中使用Siri Intent Extension,需要共享父项目中的一些数据。我已经创建了一个访问组,如下所示:com.example.ExampleApp并将其添加到扩展程序和主应用程序的权限中。

从我的iOS项目中,我存储密钥

public static void StoreKeysInKeychain(string key, string value)
    {
        var s = new SecRecord(SecKind.GenericPassword)
        {
            ValueData = value,
            Generic = NSData.FromString(key),
            Accessible = SecAccessible.Always,
            AccessGroup = "com.example.ExampleApp"
        };
        SecKeyChain.Add(s);
    }

获取密钥

public static string GetRecordsFromKeychain(string key)
    {
        SecStatusCode res;
        var rec = new SecRecord(SecKind.GenericPassword)
        {
            Generic = NSData.FromString(key),
            AccessGroup = "com.example.ExampleApp"
        };
        var match = SecKeyChain.QueryAsRecord(rec, out res);

        if (match != null)
            return match.ValueData.ToString();

        return "Error";
    }

在父iOS项目中一切正常,但是在我的意图扩展中,当我使用相同的getRecord代码时,它将返回错误。我正在从IntentHandler.cs内部调用代码,不知道这是否是导致问题的原因?

要使此功能正常工作,我还缺少其他东西吗?

我还有:

  • 自定义权利设置为我的Entitlement.plist
  • 我正在iOS模拟器上运行
  • 在Visual Studio中,签名身份是开发人员(自动)

0 个答案:

没有答案