将 iOS 应用分发给用户的最常见方法是通过 App Store。 应用是通过名为 App Store Connect 的联机工具提交到 App Store 的。 只有加入了 Apple 开发人员计划的开发人员有权访问此工具。 Apple Developer Enterprise Program 成员没有访问权限。 所有提交到 App Store 的应用都需要获得 Apple 的批准。
分发 iOS 应用需要使用预配配置文件预配应用。 预配配置文件是一种包含了代码签名信息,以及应用程序标识和预期分发机制的文件。
若要分发 .NET Multi-platform App UI (.NET MAUI) iOS 应用,需要生成特定于它的分发预配配置文件 。 此配置文件支持对应用进行数字签名并发布,以便将其安装在 iOS 设备上。 分发预配配置文件包含应用 ID 和分发证书。 可以将应用部署到设备以进行测试时使用的相同应用 ID。 但是,如果还没有分发证书,则需要创建分发证书来标识自己或组织。
创建 App Store 分发预配配置文件的过程如下所示:
重要
Apple 为 App Store 上面向 iOS 的应用制定了隐私策略。 它要求应用在应用程序包中包含隐私清单文件,其中列出了 .NET MAUI 应用或任何第三方 SDK 和包收集的数据类型,以及使用任何所需原因 API 的原因。 如果你使用的所需原因 API 或第三方 SDK 未在隐私清单中声明,你的应用可能会被 App Store 拒绝。 有关详细信息,请参阅 Apple 隐私清单。
创建分发证书
分发证书用于确认标识。 在创建分发证书之前,应确保已将 Apple 开发人员帐户添加到 Visual Studio。 有关详细信息,请参阅 Apple 帐户管理。
如果还没有分发证书,则只需创建一个分发证书。 必须使用 Apple 开发人员帐户的 Apple ID 创建分发证书。
在 Visual Studio 中创建分发证书:
- 在 Visual Studio 中,转到“工具” > “选项” > “Xamarin” > “Apple 帐户”。
- 在“Apple 开发人员帐户”对话框中,选择一个团队,然后单击“查看详细信息…”按钮。
- 在“详细信息”对话框中,单击“创建证书”并选择“iOS 分发”。 将创建新的签名标识,并且会与 Apple 同步,前提是你具有正确的权限。
重要说明
如果 IDE 已配对,构成签名标识的私钥和证书也将导出到 Mac 生成主机上的密钥链访问。 有关详细信息,请参阅与 Mac 配对以进行 iOS 开发。
了解证书密钥对
分发配置文件包含证书、关联密钥以及与 Apple 开发人员帐户关联的任何预配配置文件。 分发配置文件有两个版本,一个在 Apple 开发人员帐户中,另一个在本地计算机上。 两者的区别是所含密钥的类型:Apple 开发人员帐户中的配置文件包含与证书关联的所有公钥,而本地计算机上的副本包含所有私钥。 为了使证书生效,密钥对必须匹配。
警告
丢失证书和关联密钥会很麻烦,因为需要撤销现有证书并重新创建预配配置文件。
创建分发配置文件
分发预配配置文件可用于对 .NET MAUI iOS 应用进行数字签名以供发布,使应用可以安装在 iOS 设备上。 分发预配配置文件包含应用 ID 和分发证书。
创建 App ID
识别正在分发的应用时,需要使用应用 ID。 应用 ID 类似于反向 DNS 字符串,是应用的唯一识别标识,应当与应用的捆绑标识符相同。 可以使用在将应用部署至设备进行测试时使用的相同应用 ID。
有两种类型应用 ID:
- 通配符。 通过通配符应用 ID 可以使用单个应用 ID 匹配多个应用,其形式通常为
com.domainname.*
。 通配符应用 ID 可用于分发多个应用,并且应当用于不启用特定于应用功能的应用。 - 精确。 显式应用 ID 对单个应用是唯一的,通常采用
com.domainname.myid
形式。 显式应用 ID 允许分发一个应用,其中包含一个匹配的捆绑标识符。 显式应用 ID 通常用于启用特定于应用功能的应用,例如 Apple Pay 或 Game Center。 有关功能的详细信息,请参阅功能。
创建新的应用 ID。
在 Apple 开发者帐户中,导航到“证书、ID 和配置文件”。
在“证书、标识符和配置文件”页上,选择“标识符”选项卡。
在“Identifiers”页上,单击 + 按钮以创建新应用 ID。
在“Register a new identifier”页上,选择“App IDs”单选按钮,然后单击“Continue”按钮:
在“Register a new identifier”页上,单击“Continue”,然后选择“App”:
在“注册应用 ID”页上,输入说明,然后选择“显式”或“通配符”捆绑 ID 单选按钮。 然后,以反向 DS 格式输入应用的捆绑 ID:
重要
输入的捆绑 ID 必须与应用项目中 Info.plist 文件中的捆绑标识符相对应。
.NET MAUI 应用的捆绑标识符以应用 ID 属性的形式存储在项目文件中。 在 Visual Studio 的“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“属性”。 然后,导航到“MAUI 共享”>“常规”选项卡。“应用 ID”字段列出捆绑标识符。
更新“应用 ID”字段的值时,Info.plist 中的“捆绑标识符”的值将自动更新。
在“注册应用 ID”页上,选择应用使用的任何功能。 必须在此页上和应用项目中的 Entitlements.plist 文件中配置任何功能。 有关详细信息,请参阅功能和权利。
在“注册应用 ID”页上,单击“继续”按钮。
在“确认应用 ID”页上,单击“注册”按钮。
创建预配配置文件
创建应用 ID 后,应创建分发预配配置文件。 此配置文件支持对应用进行数字签名并发布,以便将其安装在 iOS 设备上。
若要为 App Store 分发创建预配配置文件,请执行以下操作:
在 Apple 开发人员帐户的“证书、标识符和配置文件”页中,选择“配置文件”选项卡。
在“配置文件”选项卡中,单击 + 按钮创建新配置文件。
在“Register a New Provisioning Profile”页中,单击“Continue”按钮之前,选择“App Store”单选按钮:
在“生成预配配置文件”页的“应用 ID”下拉列表中,选择之前创建的应用 ID,然后单击“继续”按钮:
在“生成预配配置文件”页中,选择对应于分发证书的单选按钮,然后单击“继续”按钮:
在“生成预配配置文件”页中,输入预配配置文件的名称,然后单击“生成”按钮:
注意
记下预配配置文件名称,因为对应用签名时需要用到它。
在“生成预配配置文件”页中,可以选择单击“下载”按钮下载预配配置文件。
注意
现在无需下载预配配置文件。 你将在 Visual Studio 中执行此操作。
在 Visual Studio 中下载预配配置文件
在 Apple 开发人员帐户中创建分发预配配置文件后,Visual Studio 可以下载它,以便用于对应用进行签名:
- 在 Visual Studio 中,转到“工具” > “选项” > “Xamarin” > “Apple 帐户”。
- 在“Apple 开发人员帐户”对话框中,选择你的团队,然后单击“查看详细信息”。
- 在“详细信息”对话框中,验证新配置文件是否出现在“预配配置文件”列表中。 可能需要重启 Visual Studio 以刷新该列表。
- 在“详细信息”对话框中,单击“下载所有配置文件”。
预配配置文件在 Windows 上下载,如果 IDE 已配对,则导出到 Mac 生成主机。 有关详细信息,请参阅与 Mac 配对以进行 iOS 开发。
发布应用
Visual Studio 可以发布用于 App Store 分发的 .NET MAUI iOS 应用并将其上传到 App Store。 但是,在将应用上传到 App Store 之前,必须执行以下操作:
- 在 App Store Connect 中为要上传到 App Store 的应用创建记录。 此记录包括有关应用的所有信息(这些信息将在 App Store 中显示)和通过分发流程管理应用所需的所有信息。 有关详细信息,请参阅 developer.apple.com 上的创建应用记录。
- 创建特定于应用的密码。 有关生成特定于应用的密码的信息,请参阅 support.apple.com 上的通过使用特定于应用的密码的 Apple ID 登录到应用。
发布 .NET MAUI iOS 应用以进行 App Store 分发:
在 Visual Studio 中,确保 IDE 已与 Mac 生成主机配对。 有关详细信息,请参阅与 Mac 配对以进行 iOS 开发。
在 Visual Studio 工具栏中,使用“调试目标”下拉列表选择“iOS 远程设备”,然后选择“远程设备”:
在 Visual Studio 工具栏中,使用“解决方案配置”下拉列表从调试配置更改为发布配置:
在“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“属性”。 然后,导航到“iOS 捆绑签名”选项卡并确保“方案”设置为“手动预配”,“签名标识”设置为“分发(自动)”,并将“预配配置文件”设置为“自动”:
这些设置将确保 Visual Studio 将根据 Info.plist 中的捆绑标识符(这与项目文件中应用程序 ID 属性的值相同)选择正确的预配配置文件。 或者,将“签名标识”设置为相应的分发证书,并将“预配配置文件”设置为在 Apple 开发人员帐户中创建的配置文件。
在“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“发布...”:
“存档管理器”将打开,Visual Studio 将开始存档应用程序包:
存档过程使用你在“iOS 捆绑包签名”选项卡中指定的证书和预配配置文件对应用进行签名,以用于所选解决方案配置。
在存档管理器中,存档完成后,请确保已选择档案,然后选择“分发...”按钮开始打包应用以供分发的过程:
将显示“分发 - 选择频道”对话框。
在“分发 - 选择通道”对话框中,选择“App Store”按钮:
在“分发 - 签名标识”对话框中,选择签名标识和预配配置文件:
注意
应使用为应用和所选分发频道创建的签名标识和预配配置文件。
在“分发 - 签名标识”对话框中,选择“另存为”按钮或“上传到 Store”按钮。 单击“另存为”按钮时,可输入文件名,然后重新签名应用并将其发布到文件系统中的 .ipa 文件,以便稍后通过 Transporter 等应用上传到 App Store。 在将应用上传到 App Store 之前,点击“上传到 Store”按钮会重新对应用进行签名并将其发布到 .ipa 文件。
如果选择“上传到 Store”按钮,在 Visual Studio 创建 .ipa 文件后,将显示“上传以存储凭据”对话框。 在“上传以存储凭据”对话框中,输入 Apple ID 和特定于应用的密码,然后选择“确定”按钮:
Visual Studio 将验证应用包并将其上传到 App Store,前提是已在 App Store Connect 中创建应用程序记录。
有关使用命令行接口 (CLI) 发布 iOS 应用的信息,请参阅使用命令行发布 iOS 应用。
疑难解答
Transporter 可用于帮助识别应用包的错误,这些错误会导致提交到 App Store 的操作中断。