Deliver (Fastlane) 是一个用于将应用上传到 App Store Connect 的工具:二进制文件、元数据、屏幕截图和价格。与通过 App Store Connect Web 界面手动发布不同,Deliver 通过一个命令自动化发布的所有阶段。根据 Fastlane 官方文档 (2026),Deliver 将发布发布时间从 40 分钟缩短到几秒钟。
要点
Deliver (Fastlane) 是 Fastlane 生态系统的一个组件,用于自动将移动应用发布到 App Store 的过程。它管理二进制文件的上传、元数据(名称、描述、关键词)的更新、屏幕截图的上传以及所有本地化语言的价格设置。
没有 Deliver,每次发布都需要通过 App Store Connect Web 界面手动更新信息:用多种语言填写描述、为每种屏幕尺寸上传屏幕截图、更新关键词和设置价格。发布到 App Store 是 iOS 应用生命周期的最后阶段,包括验证二进制文件、内容审核和应用发布到生产环境。
根据 App Store Connect 文档 (2025),定期更新的应用获得的重新安装量增加 30%,并且在搜索中排名更高。Deliver 使得团队可以每周发布更新,自动化发布的常规步骤,并降低在数十种语言中填写元数据时的人为错误风险。
对任何在 App Store 中发布的应用使用 Deliver — 对于具有多语言本地化的项目尤其有价值,因为手动更新 32 种语言需要几个小时。
Deliver 的工作机制 基于两阶段过程。在第一阶段,该工具准备元数据 — 检查 Deliverfile 结构、加载屏幕截图并生成更改清单。在第二阶段,Deliver 将数据发送到 App Store Connect API,上传二进制文件并启动 Apple 方面的构建验证过程。
Deliver 使用 App Store Connect API 进行所有操作,这保证了与 Apple 新要求的兼容性,并排除了使用私有接口。App Store Connect API 是 Apple 官方的 REST API,用于自动化应用操作,包括上传构建、管理元数据和跟踪审核状态。
Deliver 通过 Fastlane 直接与 Gym 集成:在 IPA 构建之后,Deliver 将其上传到 App Store Connect 并启动处理过程。--ipa 参数指定二进制文件的路径。如果未指定参数,Deliver 会自动在 Gymfile 中指定的或通过 Fastlane 先前步骤传递的构建目录中找到最后一个 IPA。
上传后,Deliver 等待 Apple 完成二进制文件的处理 — 类似于 Pilot,通过进度条跟踪状态。可用状态:Processing、Waiting For Review、In Review、Ready For Sale 或 Rejected。Deliver 通过 Fastfile 中的回调通知团队每次状态更改。
Deliver 管理应用的完整元数据集:名称、描述(简短和完整)、关键词、支持和营销 URL、类别和年龄分级。应用元数据 是在 App Store 页面上显示的关于应用的文本信息,用于搜索索引和 ASO 优化。
--submit_for_review 参数在上传元数据后立即将应用发送到审核。这是完全自动化发布的关键参数。没有它,Deliver 仅上传数据但不发送应用进行审核 — 这对于在实际提交之前预先检查所有字段很有用。
Deliver 从指定目录自动上传所有设备和语言组合的屏幕截图。文件名必须符合模式:第一个插槽中 6.5 英寸对角线 iPhone 的 iPhone_6.5_01.png。Deliver 自行确定屏幕截图的尺寸并将其与 Apple 对每种设备类型的要求相匹配。
屏幕截图按正确顺序上传,并为每种本地化语言单独上传。如果某种语言未找到屏幕截图,Deliver 使用英文版本作为后备选项。屏幕截图本地化 是希望在各个国家的 App Store 中获得良好排名的应用的强制要求,因为 Apple 在搜索结果中考虑本地内容。
# 上传到 App Store 的基本命令
fastlane deliver
# 指定元数据和屏幕截图的上传
fastlane deliver --ipa "build/MyApp.ipa" \
--force --submit_for_review
# 不上传的预览
fastlane deliver --preview
Deliverfile 是一个 Fastlane 配置文件,用于以结构化的 Ruby 格式存储应用元数据。与在 App Store Connect 中手动填写表单不同,Deliverfile 允许在 Git 中对元数据进行版本控制,并在发布前通过代码审查检查更改。
# Deliverfile — 应用元数据
app_identifier("com.company.app")
title("MyApp")
description("应用商店的应用描述")
keywords("移动、应用、ios、swift")
support_url("https://company.com/support")
marketing_url("https://company.com")
privacy_url("https://company.com/privacy")
# 元数据本地化语言
languages(["en-US", "ru", "de"])
languages 参数确定将为哪些语言上传元数据。对于每种语言,必须在 fastlane/metadata 文件夹中创建一个单独的目录,包含相应的描述、关键词和营销文本文件。Deliver 同时支持多达 32 种 App Store 语言。
上传屏幕截图使用 Fastlane 文件夹内的 screenshots 目录。文件夹结构:screenshots/[语言]/[设备类型]_[屏幕尺寸]_[编号].png。Deliver 自动为指定的语言和设备上传屏幕截图,将尺寸与 Apple 要求相匹配。建议使用 Snapshot 生成屏幕截图 — 其输出格式与 Deliver 兼容。
价格组通过 price_tier 参数配置,该参数接受从 0 到 87 的价格级别编号。Apple 的价格组会自动转换为所有存在国家的货币。Deliver 允许在发布范围内更改价格,这对于临时促销或更改应用的商业模式很有用。
Deliver 界面 包括用于上传元数据、二进制文件、屏幕截图和完整发布的命令。不带参数的主要命令 fastlane deliver 使用 Deliverfile 和 metadata 目录中的数据完成完整的发布周期。
fastlane deliver --preview 命令启动元数据的预验证,而不实际上传到 App Store Connect。--force 是上传所必需的 — 没有它,Deliver 以预览模式运行。--skip_binary 参数仅上传元数据和屏幕截图,跳过上传二进制文件 — 这方便快速更新 ASO 字段而无需新发布。
# 上传二进制文件的完整发布
fastlane deliver --force --ipa "build/App.ipa"
# 仅上传元数据而不上传二进制文件
fastlane deliver --force --skip_binary
# 仅更新屏幕截图
fastlane deliver --force --skip_metadata
--skip_metadata 参数仅上传屏幕截图和二进制文件,保持现有元数据不变。这对于热修复发布很有用,当需要快速发布修复而不更改描述和 ASO 字段时。标志的组合允许灵活地单独管理发布的每个阶段。
| Deliver 命令 | 用途 | 标志 |
|---|---|---|
| deliver | 完整发布,包含元数据和二进制文件 | --force, --ipa |
| deliver --skip_binary | 仅更新元数据和屏幕截图 | --force |
| deliver --skip_metadata | 上传二进制文件和屏幕截图,不更改 ASO | --force, --ipa |
| deliver --preview | 元数据预检查 | 不带 --force |
| deliver --submit_for_review | 自动发送审核 | --force, --ipa |
发布管道 与 Deliver 结合 — 是一个完整的 iOS CI/CD 流程,自动化从提交到发布到 App Store 的所有阶段。典型管道包括:用于证书的 Match、用于 IPA 构建的 Gym、用于屏幕截图的 Snapshot 以及用于将所有数据上传到 App Store 并随后发送审核的 Deliver。
Deliver 在管道中的关键特性 — 支持 metadata.json,它以结构化的 JSON 格式存储元数据。这允许从外部 CMS 系统以编程方式生成元数据,或通过翻译 API 自动创建多种语言的描述。
# Fastfile 中的发布管道
lane :release do
match(type: :appstore)
capture_screenshots
gym(scheme: "MyApp", export_method: "app-store")
deliver(ipa: "build/MyApp.ipa", force: true, submit_for_review: true)
end
在管道中调用 Deliver 之前,请确保所有元数据都是最新的:描述与新版本匹配,屏幕截图已更新以反映新功能,且价格组不需要更改。Submit for review 将应用发送到 Apple 审核,新应用需要 24 到 48 小时,更新需要 2 到 12 小时。
Deliver 支持 app_version 机制,允许指定用于更新元数据的目标版本。如果未指定版本,Deliver 会更新 App Store Connect 中当前活动的应用版本。要发布新版本,需要先通过 App Store Connect 界面或 API 创建相应的版本。
使用 Deliver 时,开发人员经常遇到元数据验证错误、屏幕截图文件结构不正确和身份验证问题。错误诊断 从分析命令日志开始 — Deliver 显示每个上传阶段和拒绝原因的详细信息。
当屏幕截图的文件夹结构与预期格式不符时,会出现 无效的屏幕截图路径 错误。解决方案:检查屏幕截图文件名是否符合模式 DeviceType_ScreenSize_Number.png(例如 AppleiPhone15ProMax_6.7_01.png)。Deliver 对文件名中的大小写和分隔符敏感。
元数据验证失败 错误表示元数据不符合 App Store 要求。解决方案:检查描述长度(最多 4000 个字符)、关键词(最多 100 个字符)和名称(最多 30 个字符)。App Store 审核指南 包含每个元数据字段的完整要求 — 建议在每次发布前进行检查。
当使用指定的 apple_identifier 在 App Store Connect 中找不到应用时,会出现 未找到 Apple ID 错误。解决方案:在首次调用 Deliver 之前通过 Web 界面在 App Store Connect 中创建应用记录,指定 Bundle Identifier 和名称。Deliver 不创建新应用 — 它只更新商店中的现有记录。
常见问题
是的,Deliver 支持上传 iOS、iPadOS、macOS、tvOS 和 watchOS 的应用。对于每种应用类型,需要指定为相应平台编译的正确 IPA 文件。Deliver 从 App Store Connect 应用记录中自动确定平台。
Deliver 从 fastlane/metadata/[lang] 目录读取每种语言的元数据。如果某种语言未找到文件,Deliver 使用英文值作为后备。屏幕截图从 screenshots/[lang] 目录为每种语言单独上传。
不需要,不需要关闭双重身份验证。Deliver 使用 App Store Connect API 密钥进行身份验证,该密钥独立于 2FA 工作。API 密钥在 App Store Connect 中生成,允许在无需交互确认的情况下执行所有操作。
使用 fastlane deliver --reject 命令,它可以撤回已提交审核的应用。这只有在审核尚未开始时才可能 — 检查开始后,只能通过 App Store Connect Web 界面取消更新。
Pilot 管理 TestFlight 中的 Beta 构建:上传二进制文件,分发给测试组。Deliver 负责生产发布:将元数据、屏幕截图和二进制文件上传到 App Store 供最终用户使用。Pilot 用于 Beta 测试,Deliver 用于发布。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。