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”字段列出捆绑标识符。
  • 在 Visual Studio for Mac 的“解决方案窗口”中,右键单击 .NET 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:

    Screenshot of new App ID registration page with required fields populated.

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

    Screenshot of enabled capabilities.

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

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

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

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

    Screenshot of editing capabilities.

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

创建预配配置文件

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

下载预配配置文件

注意

根据 Microsoft 的现代生命周期策略,Visual Studio for Mac 计划于 2024 年 8 月 31 日停用。 在 2024 年 8 月 31 日 之前,Visual Studio for Mac 17.6 将继续受支持,并且可以获得 Apple 针对安全问题和更新平台提供的服务更新。 有关详细信息,包括用于在 Mac 上进行开发的替代选项,请参阅 Visual Studio for Mac 发生了什么情况?

创建预配配置文件后,Visual Studio for Mac 必须下载该配置文件:

  1. 在 Visual Studio for Mac 中,转到“Visual Studio”>“首选项”>“发布”>“Apple 开发者帐户”
  2. “Apple 开发者帐户”窗口中,选择团队并单击“查看详细信息...”按钮。
  3. “详细信息”窗口中,验证新配置文件是否出现在“预配配置文件”列表中。 可能需要重启 Visual Studio for Mac 以刷新该列表。
  4. “详细信息”对话框中,单击“下载所有配置文件”按钮。

然后,预配配置文件将可供使用。

注意

还可以在 Xcode 中下载预配配置文件。 有关详细信息,请参阅 在 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 文件。