将企业内部专有 App 分发到 Apple 设备
Apple 设备支持以无线方式安装企业内部专有 App,无需使用 Mac 或通过 App Store。你必须有预置描述文件才能分发此类 App。你可以使用移动设备管理 (MDM) 解决方案安装和管理预置描述文件,然后用户通过 MDM 或 App 更新进行下载并安装。预置描述文件过期之前,请参阅 Apple 开发者网站为 App 创建新描述文件。对于 iOS 或 iPadOS App,请使用新预置描述文件为首次安装该 App 的用户导出新的 App 捆绑包(.ipa 文件)。
为企业内部专有 App 开发者预置和管理用户
企业内部专有 App 开发者可访问 Apple API 以预置和管理用户,这可允许其自动执行任务,如生成预置描述文件和将用户管理集成到现有工作流程中。
你可以通过两种方式分发企业内部专有 App:
使用 MDM
使用网站
这两种方法都需要为分发准备 App,包括准备清单。
【重要事项】在 iOS 18 和 iPadOS 18 或更高版本中,手动安装(而非使用 MDM)的企业内部专有 App 需要重新启动设备以完成对预置描述文件的信任。
为无线分发准备企业内部专有 App
为准备企业内部专有 App 以进行无线分发,请构建归档版本(.ipa 文件)和用于启用无线分发和 App 安装的清单文件。使用 Xcode 创建版本化的 App 归档,然后将 App 导出以用于分发到组织。Xcode 使用分发证书并包括合适的预置描述文件。清单文件是一个 XML 属性列表(.plist 文件),可供 Apple 设备用来从你的网页服务器上查找、下载和安装 App。清单文件由 Xcode 创建,使用的是你在共享用于分发到组织的归档 App 时所提供的信息。若要查看属性和关联值列表,请参阅 Apple 开发者网站上的安装应用程序命令。
管理适用于 Mac 电脑的企业内部专有 App
在 macOS 14 或更高版本中,你可以管理更多应用程序。如果软件包内含多个单个应用程序包,部署到“/应用程序”中的任何应用程序都会被管理。受管理的 App 必须保留在“/应用程序”文件夹中才视为受管理。
组织可以使用 MDM 定义在取消注册时是否保留或移除受管理的应用程序,或者甚至使用 MDM 卸载应用程序。这将从“/应用程序”中移除应用程序包。由软件包安装的任何数据或其他位置的关联脚本仍保持不变。
另外,在使用用户注册或账户驱动型设备注册时,受管理的应用程序的数据位于单独的宗卷上。
为企业内部专有 App 开发者预置和管理用户
企业内部专有 App 开发者可访问 Apple API 以预置和管理用户,这可允许其自动执行任务,如生成预置描述文件和将用户管理集成到现有工作流程中。
有关更多信息,请参阅 Apple 开发者网站上的企业项目 API。
获取 Mac 应用程序的捆绑包 ID
若要获取捆绑包标识符(也称为捆绑包 ID),请按住 Control 键点按应用程序,然后选择“显示包内容”。打开“Contents”文件夹,然后打开 Info.plist 文件。如果不确定使用哪个 App,请在“文本编辑”中打开文件。使用 App 的“查找”功能来在文件中查找 CFBundleIdentifier
,然后拷贝该行下方的字符串。例如,com.betterbag.applicationname。将应用程序捆绑包标识符粘贴到文本文件中,或者粘贴到备忘录中以供后续使用。
使用 MDM 来分发 App
若要使用 MDM,请通过 InstallEnterpriseApplication
(清单文件或嵌入式清单)命令或者 InstallApplication
(清单文件)命令使用清单。macOS 还支持 sha256 和证书定位。搭配不同操作系统使用这些命令时提供额外选项:
在运行 iOS 17.2 或者 iPadOS 17.2 或更高版本的设备上,你还可以使用声明式 App 配置。
在运行 macOS 的设备上,你可以使用:
InstallApplication
命令以进行批量购买和 .pkg 安装。InstallEnterpriseApplication
命令以仅进行 .pkg 安装。
有关更多信息,请参阅 MDM 命令。
使用网站来分发 App
若要通过无线方式安装 App,iOS、iPadOS 和 visionOS 1.1 App 必须满足以下要求:
App 的格式必须为 .ipa,并且使用企业内部预置描述文件进行构建。
必须有 XML 清单文件。
必须从地址以 HTTPS 开头的网站下载。
必须由设备上信任的证书签名。
网络配置必须允许设备访问 Apple 服务器。有关更多信息,请参阅 Apple 支持文章:在企业网络上使用 Apple 产品。
为了安装软件包,用户需要使用特殊的 URL 前缀从你的网站上下载清单文件。你可以通过 iMessage 信息或邮件来分发用于下载清单文件的 URL。以下是添加了前缀的示例链接:
<a href="itms-services://?action=download-manifest&url=https://betterbag.com/manifest.plist">安装 App</a>
你负责设计和托管用于分发这些类型 App 的网站。请确保用户已通过认证,且网站可通过内网或互联网访问(取决于你的需求)。你的网站可以是链接到清单文件的单个页面。当用户轻点网站链接时,会下载清单文件,并触发下载和安装网页所描述的内容。
请确保遵循以下额外指南:
请勿添加直接指向归档 App (.ipa) 的网站链接。载入清单文件时,设备会下载该 .ipa 文件。虽然 URL 的协议部分是“itms-services”,但 App Store 并不参与此过程。
请确保 .ipa 文件可通过 HTTPS 访问,并且你的站点已使用 iOS 和 iPadOS 信任的证书进行了签名。如果自签名证书没有受信任的锚点并且无法由设备验证,安装会失败。
将这些项目上传到网站上可供已认证的用户访问的区域:
清单文件(文件扩展名为 .plist)
App 文件(文件扩展名为 .ipa)
你可能需要配置网页服务器,让清单文件和 App 文件可正确传输。对于服务器,请将 MIME 类型添加到网页服务的 MIME 类型设置:
application/octet-stream ipa
text/xml plist
对于微软的互联网信息服务器 (IIS),请使用 IIS Manager 在服务器的“属性”页面中添加 MIME 类型:
.ipa application/octet-stream
.plist text/xml
【注】创建自助服务门户时,请考虑在用户的主屏幕中添加一个 Web Clip,以便用户轻松返回门户以获取以后需要的信息,如新的配置描述文件、推荐的 App Store App 以及允许用户在 MDM 解决方案中进行注册。
证书验证
用户首次打开 App 时,系统会通过联系 Apple OCSP 服务器来验证分发证书。如果证书已撤销,App 将不会启动。为了验证状态,设备必须能够访问 ocsp.apple.com。
OCSP 响应会在设备上缓存一段时间(由 OCSP 服务器指定),当前为 3 到 7 天之间。在重新启动设备和缓存的响应过期之前,将不会再次检查证书的有效性。如果当时收到撤销命令,系统将阻止 App 运行。
【警告】撤销分发证书会导致使用该证书签名的所有 App 失效。只有万不得已时才应撤销证书,比如确定专用密钥已丢失或确信证书已遭破解。
提供更新的企业内部专有 App
你自己分发的 App 不会自动更新。有新版本时,应通知用户进行更新并指导他们安装 App。请考虑让 App 检查更新,并在打开 App 时通知用户。请确保通知中提供了 itms-services 链接。你还可以使用 App 内部的 openURL 来安装更新。
如果想要用户保留他们设备上储存的 App 数据,请确保新版本与要替换的版本使用的捆绑标识符相同,并告知用户在安装新版本之前不要删除旧版本。
预置描述文件过期之前,请通过 iOS 开发者网站、iPadOS 开发者网站或 visionOS 开发者网站为 App 创建新描述文件。对于首次安装 App 的用户,请使用新的预置描述文件导出新的 App 捆绑包(.ipa 文件)。
如果用户已有该 App,你不妨设定发布下一个版本的时间,并在该版本中包括新预置描述文件。这样用户在使用 App 工作时不会被打断。如果不想这样做,你可以仅分发新的 .mobileprovision 文件,这样用户便不必再次安装该 App。新的预置描述文件会覆盖 App 归档中已有的描述文件。
分发预置描述文件自签发之日起 12 个月后过期。过期后,系统会删除描述文件,App 将不会启动。
如果你的分发证书过期,App 将不会启动,而你需要使用新的分发证书来重新构建 App。分发证书自签发之日起 3 年内有效,或者在你的 Apple Developer Enterprise Program(Apple 开发者企业级计划)成员资格过期之前一直有效,以二者中更早时间为准。若要防止证书过期,请确保在成员资格过期之前先进行续订。
你可以拥有同时处于活跃状态的两个证书,并且它们彼此独立。第二个证书提供了一个重叠期,让你能够在第一个证书过期前更新 App。请求第二个分发证书时,请确保不要撤销第一个证书。
无线 App 分发故障诊断
如果无线 App 分发失败,并显示“无法下载”信息:
请确定 App 已正确进行签名。测试方法是使用 Mac 版 Apple Configurator 将它安装到设备上,然后查看是否发生错误。
请确定清单文件的链接是否正确,清单文件是否可供网络用户访问。
请确保清单文件中 .ipa 文件的 URL 正确,并且网络用户可通过 HTTPS 访问该 .ipa 文件。