App Store 分发

Xamarin.iOS 应用开发完成后,软件开发生命周期中的下一步是使用 iTunes App Store 将应用分发给用户。 这是分发应用程序的最常见方法。 通过在 Apple 的 App Store 中发布应用程序,可将其提供给全球的客户。

重要

Apple 已表明,从 2019 年 3 月开始,提交到 App Store 的所有应用和更新必须是使用 iOS 12.1 SDK 或更高版本构建的,包含在 Xcode 10.1 或更高版本中。 应用还应支持 iPhone XS 和 12.9 英寸 iPad Pro 屏幕大小。

重要

使用 Xamarin.Forms 时,若要查看关于 UIWebView 的弃用警告 (ITMS-90809) 的相关资源,请参阅 Xamarin.Forms WebView 文档。

就像开发应用程序一样,分发应用程序需要使用相应的配置文件对应用程序进行设置。 配置文件是一种文件,其中包含了代码签名信息,以及应用程序标识和预期分发机制。 配置文件还包括可部署应用以实现非 App Store 分发的设备的信息。

重要

必须加入个人或组织的 Apple 开发人员计划,才可使用 iTunes Connect 并将应用发布到 App Store。 如果是 Apple Developer Enterprise Program 的成员,则不能按照此页上的步骤执行操作。

设置应用进行 App Store 分发

无论计划如何发布 Xamarin.iOS 应用程序,都需要生成特定于其的分发配置文件。 此配置文件允许对要发布的应用程序进行数字签名,使其可安装在 iOS 设备上。 类似于开发配置文件,分发配置文件包含以下内容:

  • 应用程序 ID
  • 分发证书

可选择与用于开发配置文件相同的应用程序 ID设备,但是如果还没有,则需要创建一个分发证书,以在将应用提交到 App Store 时,确认你的组织。 下面的部分将介绍创建分发证书的步骤。

注意

只有团队代理和管理员可创建分发证书和预配配置文件。

创建分发证书

  1. 浏览到 Apple Developer Member Center 的“证书、标识符和描述文件”部分。

  2. 在“证书”下选择“生产”

  3. 单击“”+按钮创建新证书。

  4. 在“生产”标题下,选择“App Store 和临时”

    Select App Store and Ad Hoc

  5. 单击“继续”,再按照说明操作,通过密钥链访问创建证书签名请求:

    Create a Certificate Signing Request via Keychain Access

  6. 在按照指示创建 CSR 后,单击“继续”,再将 CSR 上传到 Member Center:

    Upload the CSR to the Member Center

  7. 单击“生成”创建证书。

  8. 最后,下载完成的证书,双击该文件进行安装。

  9. 此时,证书应已在计算机上安装,但可能需要刷新配置文件,确保其在 Xcode 中可见。

或者,可通过 Xcode 中的”首选项”对话框请求证书。 为此,请执行以下步骤:

  1. 选择团队,然后单击“管理证书...”Select the team and View Details

  2. 然后,单击“iOS 分发证书”旁的“创建”按钮:Create an iOS Distribution Certificate

  3. 将根据你的团队特权生成签名标识(如下所示),或者可能需要等待团队代理或管理员批准:The signing identity will be generated and a dialog displayed

创建分发配置文件

创建应用 ID

与创建的其他任何配置文件一样,需要应用程序 ID 来标识将分发到用户设备的应用。 如果尚未创建此项,请按照以下步骤创建:

  1. Apple Developer Center 中,浏览到“证书、标识符和描述文件”部分。 在“标识符”下选择“应用 ID”
  2. 单击“”+按钮并提供“名称”,该名称将在门户中标识它。
  3. 应用前缀需已设置为你的团队 ID 且不可更改。 选择显式或通配符应用程序 ID,并以反向 DNS 格式输入捆绑 ID,如:
    • Explicit: com.[DomainName].[AppName]
    • Wildcard:com.[DomainName].*
  4. 选择应用要求的任何应用服务
  5. 单击“继续”按钮,按照屏幕上的说明创建新的应用程序 ID。

创建预配配置文件

拥有创建分发配置文件所需的必要组件后,请按照下面的步骤进行创建:

  1. 返回 Apple 预配门户,选择“预配”>“分发”

    RSelect Provisioning > Distribution

  2. 单击“”+按钮,选择要创建为“App Store”的分发配置文件的类型:

    Create an App Store distribution profile

  3. 单击“继续”按钮,然后在下拉列表中选择要为其创建分发配置文件的应用程序 ID:

    Select App ID from the dropdown list

  4. 单击“继续”按钮,再选择对应用进行签名所需的证书:

    Select the certificate required to sign the application

  5. 单击“继续”按钮,选择允许运行 Xamarin.iOS 应用的 .iOS 设备:

    Select the iOS devices that app will be allowed to run on

  6. 单击“继续”按钮,为新的分发配置文件输入“名称”

    Enter a Name for the new Distribution Profile

  7. 单击“生成”按钮,创建新的配置文件并完成该过程。

可能需要退出 Visual Studio for Mac,并让 Xcode 刷新可用签名标识和预配配置文件列表(按照请求签名标识部分中的说明操作),然后 Visual Studio for Mac 中才会有新的分发配置文件。

在 Xamarin.iOS 项目中选择分发配置文件

如果准备好最终生成用于在 iTunes App Store 中销售的 Xamarin.iOS 应用程序,可选择上面创建的分发配置文件。

在 Visual Studio for Mac 中,执行以下操作:

  1. 在“解决方案资源管理器”中,双击项目名称,将其打开进行编辑。

  2. 在“配置”下拉列表中,选择“iOS 应用程序包签名”和“发布 | iPhone”

    Select Release | iPhone from the Configuration dropdown

  3. 在大多数情况下,可以保留“签名标识”和“预配配置文件”的默认值(即“自动”),Visual Studio for Mac 会根据 Info.plist 中的应用程序包标识符选择正确的配置文件:

    The Signing Identity and the Provisioning Profile set to the default values of Automatic

  4. 如果需要,在下拉列表中,选择上面创建的签名标识和分发配置文件:

    Select the Signing Identity and Distribution Profiles

  5. 单击“确定”按钮保存更改。

在 iTunes Connect 中配置应用程序

成功预配应用后,下一步是在 iTunes Connect 中配置应用。iTunes Connect 是一套可管理 App Store 中 iOS 应用等的 Web 工具。

Xamarin.iOS 应用程序需要在 iTunes Connect 中进行恰当安装并配置,然后才能提交到 Apple 进行审核并最终在 App Store 作为付费或免费应用发布。

有关详细信息,请参阅在 iTunes Connect 中配置应用文档。

将应用提交到 iTunes Connect

使用分发配置文件对应用程序进行签名并在 iTunes Connect 中创建应用后,可将应用程序二进制文件上传到 Apple,供其审核。 成功通过 Apple 的审核后,即可将其发布到 App Store。

若要深入了解如何将应用程序发布到 App Store,请参阅发布到 App Store

自动将 .app 应用程序包复制回 Windows

在 Visual Studio 和 Mac 生成代理中生成 iOS 应用时,.app 应用程序包不会复制回 Windows 计算机。 Xamarin Tools for Visual Studio 7.4 新增了 CopyAppBundle 属性,以便 CI 内部版本可以将 .app 应用程序包复制回 Windows。

若要使用此功能,请将 CopyAppBundle 属性添加到 .csproj 中要应用此功能的属性组下。 例如,下面的示例展示了如何为定目标到“iPhoneSimulator”的“调试”内部版本,将 .app 应用程序包复制回 Windows 计算机:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
    <CopyAppBundle>true</CopyAppBundle>
</PropertyGroup>

总结

本文介绍了一些关键组件,用于准备 Xamarin.iOS 应用程序以在 App Store 中分发。