嗨,我当前在我的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