发布适用于内部分发的 iOS 应用

通过内部分发,Apple Developer Enterprise Program 的成员能够在内部将应用分发给同一组织的其他成员。 内部分发的优势在于无需 App Store 审核,可安装应用的设备数量没有限制。 但是,Apple Developer Enterprise Program 的成员无权访问 App Store Connect,因此许可证持有人负责分发应用。

分发 iOS 应用需要使用预配配置文件预配该应用。 预配配置文件是包含代码签名信息、应用标识及其预期分发机制的文件。

若要分发 .NET Multi-platform App UI (.NET MAUI) iOS 应用,需要生成特定于该应用的分发预配配置文件。 此配置文件使要发布的应用可以进行数字签名,以便将其安装在 iOS 设备上。 内部分发预配配置文件包含 App ID 和分发证书。 可以使用将应用部署到设备进行测试时使用的同一 App ID。 但是,如果还没有分发证书,则需要创建一份来标识组织。

创建内部分发预配配置文件的过程如下所示:

  1. 创建分发证书。 有关详细信息,请参阅创建分发证书
  2. 创建 App ID。 有关详细信息,请参阅创建 App ID
  3. 创建预配配置文件。 有关详细信息,请参阅创建预配配置文件

创建分发证书

分发证书用于确认你的身份。 在创建分发证书之前,应确保已将 Apple 开发者帐户添加到 Visual Studio。 有关详细信息,请参阅 Apple 帐户管理

如果还没有分发证书,则只需创建一个。 必须使用 Apple 开发者帐户的 Apple ID 创建分发证书。

若要创建分发证书,请执行以下操作:

  1. 在 Visual Studio 中,转到“工具”>“选项”>“Xamarin”>“Apple 帐户”
  2. 在“Apple 开发者帐户”对话框中,选择某个团队并单击“查看详细信息…”按钮
  3. 在“详细信息”对话框中,单击“创建证书”,然后选择“iOS 分发”。 如果你拥有正确的权限,将创建新的签名标识并与 Apple 同步。

重要说明

如果 IDE 已与 Mac 生成主机配对,构成签名标识的私钥和证书也将导出到 Mac 生成主机上的“密钥链访问”。 有关详细信息,请参阅通过与 Mac 配对进行 iOS 开发

了解证书密钥对

分发配置文件包含证书、证书关联密钥以及任何与 Apple 开发者帐户关联的预配配置文件。 分发配置文件有两个版本 - 一个存在于 Apple 开发者帐户中,另一个位于本地计算机上。 两者之间的区别在于它们所包含的密钥类型:Apple 开发者帐户中的配置文件包含与证书关联的所有公钥,而本地计算机上的副本包含所有私钥。 要使证书生效,密钥对必须匹配。

警告

丢失证书和关联密钥会很麻烦,因为需要撤销现有证书并重新创建预配配置文件。

创建分发配置文件

借助内部分发预配配置文件,.NET MAUI iOS 应用可进行数字签名以供发布。 内部分发预配配置文件包含 App ID 和分发证书。

创建 App ID

需要 App ID 才能标识要分发的应用。 App ID 类似于反向 DNS 字符串,可唯一标识应用,应与应用的捆绑包标识符相同。 可以使用将应用部署到设备进行测试时使用的同一 App ID。

App ID 有两种类型:

  • 通配符。 通配符 App ID 允许使用单个 App ID 来匹配多个应用,通常采用 com.domainname.* 形式。 通配符 App ID 可用于分发多个应用,并且应用于未启用应用特定功能的应用。
  • 精确。 精确 App ID 对于单个应用而言是唯一的,通常采用 com.domainname.myid 形式。 通过一个精确 App ID 可分发一个应用,其中包含匹配的捆绑包标识符。 精确 App ID 通常用于启用了应用特定功能的应用,例如 Apple Pay 或 Game Center。

有关功能的详细信息,请参阅功能

若要创建新的 App ID,请执行以下操作:

  1. 在 Apple 开发人员帐户中,导航到 证书、ID 和配置文件

  2. 在“ 证书,标识符和配置文件 ”页上,选择“ 标识符 ”选项卡。

  3. 在“标识符”页,单击 + 按钮创建新的 App ID

  4. 在“注册新的标识符”页,选择“App ID”单选按钮,然后单击“继续”按钮

    Create an App ID.

  5. 在“注册 App ID”页上,输入说明,然后选择“精确”或“通配符”捆绑包 ID 单选按钮。 然后,以反向 DNS 格式输入应用的捆绑包 ID:

    Specify the bundle identifier for the app.

    重要说明

    输入的捆绑包 ID 必须与应用项目中 Info.plist 文件中的捆绑包标识符相对应

    .NET MAUI 应用的捆绑包标识符以“应用程序 ID”属性的形式存储在项目文件中

    • 在 Visual Studio 的“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“属性”。 然后,导航到“MAUI 共享”>“常规”选项卡。“应用程序 ID”字段会列出捆绑包标识符
    • 在 Visual Studio for Mac 的“解决方案窗口”中,右键单击 .NET MAUI 应用项目,然后选择“属性”。 然后,在“项目属性”窗口中,选择“生成”>“应用信息”选项卡。“应用程序 ID”字段会列出捆绑包标识符

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

  6. 在“注册 App ID”页上,选择应用使用的任何功能。 任何功能都必须在此页面和应用项目的 Entitlements.plist 文件中同时配置。 有关详细信息,请参阅功能权利

  7. 在“注册 App ID”页上,单击“继续”按钮

  8. 在“注册 App ID”页上,输入部署详细信息(如有),然后单击“继续”按钮

  9. 在“确认 App ID”页上,单击“注册”按钮

创建预配配置文件

创建 App ID 后,应创建分发预配配置文件。 此配置文件使要发布的应用可以进行数字签名,以便将其安装在 iOS 设备上。

若要创建分发预配配置文件,请执行以下操作 :

  1. 在 Apple 开发人员帐户的“证书、标识符和配置文件”页中,选择“ 配置文件 ”选项卡。

  2. 在“配置文件”选项卡中,单击 + 按钮以创建新的配置文件

  3. 在“注册新的预配配置文件”页,选择“内部”单选按钮,然后单击“继续”按钮

    Register a provisioning profile for in house distribution.

  4. 在“生成预配配置文件”页的“App ID”下拉列表中,选择之前创建的 App ID,然后单击“继续”按钮

    Select your App ID.

  5. 在“生成预配配置文件”页,选择与分发证书对应的单选按钮,然后单击“继续”按钮

    Select your distribution certificate.

  6. 在“生成预配配置文件”页,输入预配配置文件的名称,然后单击“生成”按钮

    Generate the provisioning profile.

    注意

    记下预配配置文件名称,因为对应用进行签名时需要用到它。

  7. 在“生成预配配置文件”页,(可选)单击“下载”按钮可下载预配配置文件

    注意

    现在无需下载预配配置文件。 你将在 Visual Studio 中执行此操作。

在 Visual Studio 中下载预配配置文件

在 Apple 开发者帐户中创建分发预配配置文件后,Visual Studio 可以下载该文件,使其可用于对应用进行签名。

  1. 在 Visual Studio 中,转到“工具”>“选项”>“Xamarin”>“Apple 帐户”
  2. 在“Apple 开发者帐户”对话框中,选择你的团队并单击“查看详细信息”
  3. 在“详细信息”对话框中,验证新的配置文件是否显示在“预配配置文件”列表中。 可能需要重启 Visual Studio 以刷新该列表。
  4. 在“详细信息”对话框中,单击“下载所有配置文件”

在 Windows 上下载预配配置文件,如果 IDE 与 Mac 生成主机配对,则将预配配置文件导出到该主机。 有关详细信息,请参阅通过与 Mac 配对进行 iOS 开发

发布应用

Visual Studio 可以发布用于内部分发的 .NET MAUI iOS 应用。 有关使用命令行接口 (CLI) 发布 iOS 应用的信息,请参阅使用命令行发布 iOS 应用

  1. 在 Visual Studio 中,确保 IDE 已与 Mac 生成主机配对。 有关详细信息,请参阅通过与 Mac 配对进行 iOS 开发

  2. 在 Visual Studio 工具栏中,使用“调试目标”下拉列表选择“iOS 远程设备”,然后选择“远程设备”

    Select your remote device in Visual Studio.

  3. 在 Visual Studio 工具栏中,使用“解决方案配置”下拉菜单,将调试配置更改为发布配置

    Select the release configuration in Visual Studio.

  4. 在“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“属性”。 然后,导航到“iOS 捆绑包签名”选项卡,并确保将“方案”设置为“手动预配”,将“签名标识”设置为“分发(自动)”,并将“预配配置文件”设置为“自动”

    Screenshot of bundle signing tab for iOS in Visual Studio.

    这些设置将确保 Visual Studio 将根据 Info.plist 中的捆绑包标识符(这与项目文件中的“应用程序 ID”属性的值相同)选择正确的预配配置文件。 或者,将“签名标识”设置为相应的分发证书,将“预配配置文件”设置为在 Apple 开发者帐户中创建的配置文件

  5. 在“解决方案资源管理器”中,右键单击 .NET MAUI 应用项目,然后选择“发布…”

    Select the publish menu item in Visual Studio.

    “存档管理器”随即打开,Visual Studio 将开始存档应用捆绑包

    Screenshot of the archive manager in Visual Studio.

    对于所选的解决方案配置,存档过程使用你在“iOS 捆绑包签名”选项卡中指定的证书和预配配置文件对应用进行签名

  6. 在“存档管理器”中,存档成功完成后,请确保已选择存档,然后选择“分发…”按钮,以开始打包应用以进行分发的过程

    Screenshot of the archive manager in Visual Studio once archiving is complete.

    随即显示“分发 - 选择渠道”对话框

  1. 在“分发 - 选择渠道”对话框中,选择“企业”按钮

    Screenshot of selecting a distribution channel in the distribution dialog.

  2. 在“分发 - 签名标识”对话框中,选择签名标识和预配配置文件

    Screenshot of selecting a signing identity in the distribution dialog.

    注意

    你应使用为应用和所选分发渠道创建的签名标识和预配配置文件。

  3. 在“分发 - 签名标识”对话框中,选择“另存为”按钮并输入文件名。 然后,应用将重新签名并发布到文件系统上的 .ipa 文件

内部应用可以通过安全网站或移动设备管理 (MDM) 进行分发。 这两种方法都要求应用做好分发准备,其中包括准备清单。 有关详细信息,请参阅 support.apple.com 上的将企业内部专有 App 分发到 Apple 设备