Mac Catalyst 功能

在 Mac Catalyst .NET Multi-platform App UI (.NET MAUI) 中,应用在沙盒中运行,沙盒提供一套规则,用于限制在应用和系统资源或用户数据之间的访问。 Apple 提供了一些功能,也称为“应用服务”,作为扩展功能和拓宽 Mac Catalyst 应用功能范围的一种方式。 有关功能的详细信息,请参阅 developer.apple.com 上的功能

这些功能将被添加到应用的预配配置文件中,并在对应用进行代码签名时使用。 预配配置文件必须包含一个应用 ID,该 ID 与应用的捆绑标识符匹配,并启用了所需的功能。 应在 Apple 开发者帐户中创建预配配置文件。

权利与功能概念密切相关。 它们都请求扩展应用运行中的沙盒,以使其具有附加功能。 开发应用时通常会添加权利,而当代码对应用进行分发签名时,通常会添加功能。 有关权利的详细信息,请参阅权利

在 Apple 开发者帐户中添加功能

可在 Apple 开发者帐户中将功能添加到应用的预配配置文件中。 这是一个多步骤过程,需要创建签名证书、应用 ID 和预配配置文件。

向预配配置文件添加新功能时,还应将相同的功能添加到应用的 Entitlements.plist 文件,并确保应用使用此文件。 有关详细信息,请参阅权利。 对于某些功能,可能还需要在 Info.plist 中设置私钥。

创建签名证书

创建预配配置文件需要之前已创建签名证书。 签名证书的类型取决于应用的预期分发通道:

使用应用服务创建应用 ID

应用 ID 类似于反向 DNS 字符串,该字符串唯一标识应用,且需要有应用 ID 才能标识要分发的应用: 应用 ID 应与应用的捆绑标识符相同。

重要

.NET MAUI 应用的捆绑标识符以应用 ID 属性的形式存储在项目文件中。 在 Visual Studio 的“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“属性”。 然后,导航到“MAUI 共享”>“常规”选项卡。“应用 ID”字段列出捆绑标识符。

更新“应用 ID”字段的值时,Info.plist 中的“捆绑标识符”的值将自动更新。

有两种类型的应用 ID - 显式和通配符。 显式应用 ID 对单个应用是唯一的,通常采用 com.domainname.myid 形式。 显式应用 ID 允许将一个具有匹配捆绑标识符的应用安装到设备。 对于启用应用特定功能的应用,需要设置显式应用 ID。

可以使用以下步骤创建显式应用 ID:

  1. 在 Web 浏览器中,转到 Apple 开发者帐户的“标识符”部分,然后单击 + 按钮。

  2. “注册新标识符”页中,选择“应用 ID”,然后单击“继续”按钮。

  3. “注册新标识符”页中,选择“应用”类型,然后单击“继续”按钮。

  4. “注册应用 ID”页中,提供说明并将捆绑 ID 设置为“显式”。 然后,输入采用 com.domainname.myid 格式的应用 ID:

    新应用 ID 注册页的屏幕截图,其中必填字段已填充。

  5. “注册应用 ID”页中,在“功能”“应用服务”选项卡下启用所需的功能:

    已启用的功能的屏幕截图。

  6. “注册应用 ID”页中,单击“继续”按钮。

  7. “确认应用 ID”页中,查看信息,然后单击“注册”按钮。 如果已成功注册应用 ID,你将返回到 Apple 开发者帐户的“标识符”部分。

  8. “标识符”页中,单击刚刚创建的应用 ID。

  9. “编辑应用 ID 配置”页中,任何需要额外设置的已启用功能都将具有“配置”按钮:

    编辑功能的屏幕截图。

    单击任意“配置”按钮以配置已启用的功能。 有关详细信息,请参阅 developer.apple.com 上的配置应用功能

创建预配配置文件

创建应用 ID 后,必须为应用 ID 创建预配配置文件。 创建的预配配置文件也将取决于应用的预期分发渠道:

在 Xcode 中下载预配配置文件

在 Apple 开发人员帐户中创建预配配置文件后,Xcode 可以将其下载,使其可用于对应用签名:

  1. 在 Mac 上,启动 Xcode。

  2. 在 Xcode 中 ,选择“Xcode”>“首选项...”菜单项。

  3. “首选项”对话框中,选择“帐户”选项卡。

  4. “帐户”选项卡中,单击 + 按钮将 Apple 开发人员帐户添加到 Xcode:

    首选项中的“Xcode 帐户”对话框。

  5. 在“帐户类型”弹出窗口中,选择“Apple ID”,然后单击“继续”按钮:

    Xcode 选择要添加弹出窗口的帐户类型。

  6. 在“登录”弹出窗口中,输入 Apple ID 并单击“下一步”按钮。

  7. 在“登录”弹出窗口中,输入 Apple ID 密码,然后单击“下一步”按钮:

    Xcode Apple 帐户登录。

  8. “帐户”选项卡中,单击“管理证书...”按钮,以确保已下载分发证书。

  9. “帐户”选项卡中,单击“下载手动配置文件”按钮下载预配配置文件:

    Xcode Apple 开发人员计划帐户详细信息。

  10. 等待下载完成,然后关闭 Xcode。

在项目文件中定义生成属性

应用的项目文件应更新为使用签名证书、预配配置文件和权利文件。 这可以通过将以下生成属性添加到项目文件中的 <PropertyGroup> 来实现:

属性
<CodesignKey> 代码签名密钥的名称。 按照密钥链访问中所示设置为分发证书的名称。
<CodesignEntitlements> 指定应用所需权利的权利文件的路径。 设置为 Platforms\MacCatalyst\Entitlements.plist
<CodesignProvision> 对应用捆绑包签名时要使用的预配配置文件。
<EnableCodeSigning> 设置为 true,从而启用代码签名。

以下示例展示了用于为 Mac App Store 分发生成和签名 Mac Catalyst 应用的典型属性组:

<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-maccatalyst|AnyCPU'">
  <EnableCodeSigning>True</EnableCodeSigning>
  <CodesignKey>Apple Distribution: John Smith (AY2GDE9QM7)</CodesignKey>
  <CodesignProvision>MyMauiApp</CodesignProvision>
  <CodesignEntitlements>Platforms\MacCatalyst\Entitlements.plist</CodesignEntitlements>
</PropertyGroup>

故障排除

以下列表详细介绍了开发使用功能的 .NET MAUI Mac Catalyst 应用时可能导致问题的常见问题:

  • 确保已在 Apple 开发者帐户的“标识符”部分创建并注册正确的应用 ID。
  • 确保功能已添加到应用 ID,并且使用正确的值配置了该功能。
  • 确保已在开发计算机上安装预配配置文件,并且应用的 Info.plist 文件使用的是与应用 ID 完全相同的捆绑标识符。
  • 确保应用的 Entitlements.plist 文件已启用正确的权利。
  • 确保已在 Info.plist 中设置任何所需的隐私密钥。
  • 确保应用使用 Entitlements.plist 文件。