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 中设置私钥。
创建签名证书
创建预配配置文件需要之前已创建签名证书。 签名证书的类型取决于应用的预期分发通道:
- 如果打算通过 Mac App Store 分发应用,请参阅发布用于 Mac App Store 分发的 Mac Catalyst 应用中的创建分发证书。
- 如果打算在 Mac App Store 外部分发应用,请参阅发布 Mac Catalyst 应用以在 Mac App Store 外分发中的创建 Developer ID 应用程序证书。
- 如果你打算在 Mac App Store 外部的注册设备上将应用分发给数量有限的用户,请参阅发布 Mac Catalyst 应用进行即席分发中的创建开发证书。
使用应用服务创建应用 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:
在 Web 浏览器中,转到 Apple 开发者帐户的“标识符”部分,然后单击 + 按钮。
在“注册新标识符”页中,选择“应用 ID”,然后单击“继续”按钮。
在“注册新标识符”页中,选择“应用”类型,然后单击“继续”按钮。
在“注册应用 ID”页中,提供说明并将捆绑 ID 设置为“显式”。 然后,输入采用
com.domainname.myid
格式的应用 ID:在“注册应用 ID”页中,在“功能”和“应用服务”选项卡下启用所需的功能:
在“注册应用 ID”页中,单击“继续”按钮。
在“确认应用 ID”页中,查看信息,然后单击“注册”按钮。 如果已成功注册应用 ID,你将返回到 Apple 开发者帐户的“标识符”部分。
在“标识符”页中,单击刚刚创建的应用 ID。
在“编辑应用 ID 配置”页中,任何需要额外设置的已启用功能都将具有“配置”按钮:
单击任意“配置”按钮以配置已启用的功能。 有关详细信息,请参阅 developer.apple.com 上的配置应用功能。
创建预配配置文件
创建应用 ID 后,必须为应用 ID 创建预配配置文件。 创建的预配配置文件也将取决于应用的预期分发渠道:
- 如果打算通过 Mac App Store 分发应用,请参阅发布适用于 Mac App Store 分发的 Mac Catalyst 应用中的创建预置配置文件。
- 如果打算在 Mac App Store 外部分发应用,请参阅发布适用于在 Mac App Store 外部分发的 Mac Catalyst 应用中的创建预置配置文件。
- 如果打算在 Mac App Store 外部的注册设备上将应用分发给有限数量的用户,请参阅发布用于临时分发的 Mac Catalyst 应用中的创建预置配置文件。
在 Xcode 中下载预配配置文件
在 Apple 开发人员帐户中创建预配配置文件后,Xcode 可以将其下载,使其可用于对应用签名:
在 Mac 上,启动 Xcode。
在 Xcode 中 ,选择“Xcode”>“首选项...”菜单项。
在“首选项”对话框中,选择“帐户”选项卡。
在“帐户”选项卡中,单击 + 按钮将 Apple 开发人员帐户添加到 Xcode:
在“帐户类型”弹出窗口中,选择“Apple ID”,然后单击“继续”按钮:
在“登录”弹出窗口中,输入 Apple ID 并单击“下一步”按钮。
在“登录”弹出窗口中,输入 Apple ID 密码,然后单击“下一步”按钮:
在“帐户”选项卡中,单击“管理证书...”按钮,以确保已下载分发证书。
在“帐户”选项卡中,单击“下载手动配置文件”按钮下载预配配置文件:
等待下载完成,然后关闭 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 文件。