提问人:Nimerya 提问时间:10/31/2023 最后编辑:Nimerya 更新时间:11/6/2023 访问量:31
MAUI MacCatalyst 无法编辑 Entitlements.plists 以允许使用近场通信
MAUI MacCatalyst can't edit Entitlements.plists for allowing use of Near Field Communication usage
问:
我正在使用这个PCSC包来读取和写入一些NFC标签的数据。
当我在调试或发布 mod 中启动我的应用程序时,一切正常,直到我准备好将应用程序打包到 MacCatalyst 中。 我需要添加一个 Entitlements.plist 文件以允许某些功能使用,这是我在遵循此打包教程后找到的一个基本文件。
添加此文件后,如果我启动我的应用程序,我会收到一条错误消息,它无法访问智能卡资源管理器。 在另一台Mac上,我刚刚得到,但我认为这是同样的问题。The Smart card resource manager is not running.
PCSC.framework/PCSC
下面是一个快速的分步步骤,其中包含一个简化的示例代码来重现该问题:
- 创建一个新的默认 .NET MAUI 应用,目标来自 awork .NET 7.0,我称之为“pcsc-test”
- 右键单击解决方案并安装 NuGet 包 PCSC
- 转到 MainPage.xaml.cs 并将代码替换为此示例,不要忘记将命名空间更改为名为项目的名称。
using PCSC;
namespace pcsc_test
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void OnCounterClicked(object sender, EventArgs e)
{
try
{
var context = ContextFactory.Instance.Establish(SCardScope.System);
CounterBtn.Text = context.GetReaders().FirstOrDefault("None");
}
catch (Exception ex)
{
CounterBtn.Text = ex.Message;
}
SemanticScreenReader.Announce(CounterBtn.Text);
}
}
}
此时,如果您启动应用程序并单击按钮,您应该会获得计算机上连接的第一个阅读器的名称,或者如果您没有,则为无。这是预期的行为,现在是问题所在
- 进入 Platforms>MacCatalyst 并创建一个新文件“Entitlement.plist”,并将其内容设置为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
</dict>
</plist>
现在尝试再次启动应用程序并单击按钮,您应该会在阅读器名称的位置收到一条错误消息。我的是.
如果尝试在 Entitlements.plist 文件中添加任何其他参数,则会出现另一个问题,而该文件无法启动应用。The Smart card resource manager is not running.
如果有人遇到同样的错误或愿意提供帮助,我们将不胜感激。 祝你有美好的一天。
答:
0赞
Nimerya
11/6/2023
#1
通过删除 Entitlements 文件的第一个授权解决了问题。
<key>com.apple.security.app-sandbox</key>
<true/>
评论