Apple 当前文档列出的 App Clip 体积限制,最低部署目标为 iOS 16 及以上时是 15 MB;如果只支持 iOS 17 及以上并且采用数字入口,才可能使用 100 MB 的上限,实体 App Clip Code、二维码或 NFC 入口并不适用这一放宽条件。查看 Apple 的 App Clip 体积说明

这个限制已经说明了结论:App Clips 还值得做吗?只有在产品存在一个可快速完成、入口清晰、无需长期状态的单一任务时,才值得投入。 如果核心价值依赖复杂登录、持续后台任务、大量本地资源或多步骤账户流程,本周应先完善完整 App,不要仅因为 App Clips 仍然存在就额外增加一个 Target。

本周建议动作:先写出 App Clip 的唯一任务、唯一入口和完成后的完整 App 衔接;如果其中任意一项说不清,先做小范围原型,不要直接进入正式发布。

这篇文章适合三类读者:

  • 准备做扫码、链接或线下触发体验的独立开发者,需要判断即时入口是否真的服务于核心用户路径。
  • 正在维护 iOS App 发布链路的小团队,需要评估额外 Target、签名、App Store Connect 和测试成本。
  • 没有本地 Mac 的 Windows 或 Linux 开发者,需要知道远程 Mac 能承担哪些构建工作,以及哪些验收仍必须依赖真实设备。
01

App Clips 还值得做吗:先看任务价值

Apple 对 App Clips 的定位不是“完整 App 的试用版副本”,而是让用户在需要某项功能时,快速启动并完成一个轻量任务。用户通常不会先在 App Store 搜索 App Clip,而是通过网站链接、Messages、Safari、地图、二维码、NFC 或 App Clip Code 等入口发现它。Apple 对 App Clips 的官方概览

因此,判断是否值得做,第一步不是打开 Xcode,而是把任务压缩成一句话:

用户从入口进入后,是否能在一次短流程中完成一个明确动作,并且不需要先理解完整 App 的信息架构?

适合做 App Clip 的任务通常具有以下特征:

  • 扫描后立即查看某个实体对象的信息,例如门店、设备、活动或现场服务。
  • 通过链接完成一次预约、取号、付款前确认或简单订单操作。
  • 让用户先体验一个核心动作,再自然安装完整 App。
  • 用户在特定地点或特定事件中临时需要该功能,而不是每天打开并管理长期数据。

不适合直接立项的情况也很明确:

  • 用户必须先建立复杂账户关系,或者需要恢复长期登录状态。
  • 核心体验依赖大量图片、模型、离线数据库或复杂本地资源。
  • 任务完成前需要连续经过多个设置页、权限页和后台同步步骤。
  • App Clip 做完一次动作后,用户没有明确理由继续安装完整 App。

这里最容易出现的误判,是把“功能可以拆出来”当成“用户值得从入口进入”。一个购物、社交、项目管理或内容类 App,理论上都能抽出某个页面,但如果入口无法在真实场景中被看见,或者用户完成动作后不需要完整 App,拆分出来的 Target 只会增加维护面。

02

入口能否被发现,决定 App Clip 是否有价值

App Clip 的调用能力不等于自然流量。Apple 文档明确列出了多种调用方式,但每一种入口都需要对应的产品、内容或线下运营条件。查看 App Clip Experiences 与调用方式

网站链接适合已经有落地页、帮助页或产品页面的应用;二维码和 App Clip Code 适合线下设备、门店或活动现场;地图入口依赖地点关联与审核条件;Messages 和 Safari 链接则依赖用户已经接触到该链接。入口越多,维护的 URL、卡片文案、关联域名和场景测试也越多。

App Clip Experience 负责描述入口对应的体验卡,包括调用 URL、标题、图像和行动按钮。系统会根据调用 URL 匹配体验,再将 URL 传给 App Clip,应用需要据此决定显示哪个任务状态。某些启动情况可能没有可用的调用 URL,代码不能只处理“URL 一定存在”的理想路径。Apple 的调用 URL 与体验配置说明

对独立开发者而言,可以用三个问题筛掉不合适的项目:

  1. 用户在真实场景中从哪里看到入口?
  2. 入口 URL 是否能稳定映射到一个具体任务,而不是只打开首页?
  3. 用户完成任务后,是否有自然的安装完整 App 的理由?

如果第一个问题的答案只是“以后可以投放广告”,或者第二个问题只能回到通用首页,那么 App Clip 还没有形成可验证的产品闭环。

03

App Clips 与完整 App 的边界必须先设计

App Clip 和完整 App 不是两个互不相关的产品。Apple 要求 App Clip 对应一个完整 App,二者可以在同一个 Xcode 工程中共享代码与资源;当用户安装完整 App 后,后续相同调用会进入完整 App,因此完整 App 也必须能够处理 App Clip 提供的任务。查看 Apple 的 App Clip Target 创建说明

工程上应采用“共享核心逻辑、独立入口体验、可回退发布链路”的结构,而不是复制一个 Target 后再逐项修补。

共享的部分

  • 网络请求模型、数据解析和核心业务规则。
  • 身份状态的最小共享机制,例如需要从 App Clip 过渡到完整 App 的临时数据。
  • 设计系统中稳定的基础控件和错误处理组件。

应独立控制的部分

  • App Clip 的启动页面和任务流程。
  • 入口 URL 解析与异常 URL 回退。
  • 资源清单、图像体积和启动路径。
  • 签名能力、Bundle ID、Associated Domains 等 Target 级配置。

App Clip 与完整 App 之间的数据衔接还会涉及共享容器、Keychain 和相关 Entitlement。Apple 提供了专门的数据共享说明,但这不代表复杂账户系统可以无成本地搬入 App Clip;账户恢复、权限确认和注销状态仍需要逐条设计。查看 App Clip 与完整 App 的数据共享机制

新增 Target 前要检查的 Xcode 工程项

至少需要评估以下工程变化:

  • 在现有项目中新增 App Clip Target 和对应 Scheme。
  • 为 App Clip 配置独立的产品标识、签名和能力。
  • 决定哪些源文件、资源和 Swift Package 依赖同时加入两个 Target。
  • 为入口 URL 增加解析逻辑,并处理 URL 缺失或参数异常。
  • 为 App Clip 单独执行 Build、Archive、安装和真实设备调用测试。

可以先用下面的命令确认工程是否能够分别构建完整 App 与 App Clip。示例中的 Scheme、Workspace 和路径必须替换为脱敏后的项目名称:

xcodebuild \
  -workspace "Project.xcworkspace" \
  -scheme "FullApp" \
  -configuration Release \
  -destination "generic/platform=iOS" \
  clean archive \
  -archivePath "$PWD/build/full-app.xcarchive"

xcodebuild \
  -workspace "Project.xcworkspace" \
  -scheme "AppClip" \
  -configuration Release \
  -destination "generic/platform=iOS" \
  build

构建成功只说明 Target、依赖和签名链路暂时可用,不能证明调用卡片、入口 URL、用户任务和完整 App 衔接已经验收。

04

发布维护不是一次性配置

App Store Connect 的 App Clip 配置通常要在包含 App Clip 的首个构建上传后继续完成。默认 App Clip Experience 是基础配置;如果需要多个域名、物理地点、不同业务场景或更细的卡片内容,还要增加进阶体验。查看 App Store Connect 的 App Clips 概览

发布验收至少要分成五层:

  1. 代码层:完整 App 和 App Clip Target 都能编译。
  2. 构建层:能够生成 Archive,签名和嵌入关系正确。
  3. 调用层:调用 URL 能匹配正确的 App Clip Experience。
  4. 任务层:用户能在 App Clip 内完成承诺的核心动作。
  5. 衔接层:安装完整 App 后,原来的调用仍能进入正确状态。

App Store Connect 还要求后续提交的完整 App 版本继续包含 App Clip,否则已提供的体验可能无法维持。查看 App Store Connect 的 App Clip 发布要求

这也是额外 Target 的隐性成本:每次改动依赖、资源、签名能力或入口逻辑时,都要确认完整 App 与 App Clip 没有出现行为分叉。对于独立开发者,如果主 App 仍在快速改版,App Clip 可能会让每次发布都多出一轮回归。

05

远程 Mac 能承担哪些 App Clip 工作

可以把远程 Mac 用于 Xcode 27 工程构建、Archive、签名、上传和自动化回归,但不能把远程构建环境当成完整的真实入口验收环境。

App Store Connect 支持通过 Xcode、Transporter、命令行工具或相关 API 上传构建;具体可用的 Xcode 版本和上传要求应以当前官方页面为准。查看 App Store Connect 的构建上传要求 Xcode 27 的具体小版本变化也应在发布前复核官方 Release Notes,而不是沿用旧项目的脚本假设。

远程 Mac 适合承担:

  • 拉取代码并执行 xcodebuild。
  • 生成完整 App 与 App Clip Archive。
  • 检查签名、Entitlement 和导出产物。
  • 上传到 App Store Connect。
  • 执行不依赖摄像头、定位和实体入口的自动化测试。

远程 Mac 不能替代:

  • 真实 iPhone 上的摄像头扫码。
  • NFC、地点、地图和真实网络环境。
  • 用户从 Safari、Messages 或现场入口进入的完整体验。
  • 安装完整 App 后再次调用 URL 的行为确认。
  • 权限弹窗、系统设置和设备状态造成的差异。

Apple 推荐在开发阶段使用 _XCAppClipURL 调试调用 URL,并通过测试设备上的 Local Experiences 检查卡片与入口体验;这类测试仍需要真实 iPhone,而不是只在模拟器中运行。查看 App Clip 启动体验测试流程

远程协作可以按以下方式分工:

  1. 本地或 CI 环境提交代码。
  2. 远程 Mac 执行 Xcode 27 Build、Archive 和上传。
  3. 拥有 iPhone 的协作者安装测试构建。
  4. 协作者执行扫码、链接、定位或真实入口测试。
  5. 团队在 App Store Connect 检查体验状态、构建状态和发布信息。

如果没有本地 Mac,NodeMini 的远程 Mac 开发环境可以承担 macOS 专属的构建与上传环节;但真机入口、摄像头和用户侧安装流程仍需要由协作者或测试设备完成。若团队需要按地域安排远程访问,也可以先比较不同 Mac 计算节点对网络协作和交付流程的影响。

06

两种投入路径的实际差异

判断维度 增加 App Clip Target 先做完整 App 或原型
核心任务 已经能压缩成一个即时动作 仍在验证用户到底需要什么
入口条件 已有网站、二维码、线下地点或可传播链接 入口尚未确定
工程结构 核心逻辑可共享,资源和流程可裁剪 主 App 仍在快速变化
维护成本 每次发布都要同时检查两个 Target 先集中维护一个发布链路
测试要求 需要模拟器、真机、入口和完整 App 衔接测试 先验证主流程与用户需求
更适合谁 已有真实触发场景的产品 仍处于概念、试用或早期验证阶段

App Clip 的价值不在于“多一个入口”,而在于它是否能把原本会因为下载、注册或环境准备而流失的即时任务压缩下来。如果任务本身没有明确需求,增加入口只会把问题推迟到维护阶段。

07

最终决策卡:现在做、先验证还是暂缓

按照下面的条件分支执行,比单纯讨论 App Clips 是否过时更可靠:

  • ✅ 若满足“单一即时任务 + 稳定入口 + 完成后有安装理由”,选择现在立项。先做一个最小 App Clip,不要同时扩展多个体验。
  • ✅ 若任务明确,但入口或用户完成率尚未验证,选择先做原型。先用一个调用 URL、一个核心任务和一台真实设备验证,不急着配置复杂的进阶体验。
  • ⚠️ 若核心任务依赖长期登录、复杂权限、后台持续状态或大体积资源,回退到完整 App,暂缓增加 App Clip Target。
  • ❌ 若只能说“以后可能通过搜索或广告获得用户”,不要把 App Clip 当作获客方案。Apple 文档说明的是调用机制,不是流量承诺。

正式发布前,至少完成以下验收:

验收项 必须确认的结果 未通过时的处理
构建 完整 App 与 App Clip 均可 Build 或 Archive 检查 Target 成员、依赖和签名
入口调用 至少有一次真实入口能打开正确体验 检查 URL、Experience 和关联配置
核心任务 用户能完成 App Clip 承诺的单一动作 删除不必要的登录、权限或页面
完整 App 衔接 安装完整 App 后原入口仍能进入正确功能 补齐 Universal Link、状态共享或回退逻辑
发布状态 App Store Connect 中构建、体验卡和提交信息一致 重新核对版本、Bundle ID 和体验状态

如果本周只能完成一件事,应先制作一张“入口—任务—衔接”表:入口写清楚用户从哪里来,任务写清楚进入后做什么,衔接写清楚为什么还要安装完整 App。三列中有一列为空,就不应把 App Clip 当作正式功能排期。

对于已经满足条件的项目,下一步应进入 App Store Connect App Clip Experience 配置 和 Archive 上传验收;没有本地 Mac 的开发者,应先完成远程 Mac 的构建、签名和交付测试。当前方案如果只是 Windows 或 Linux 本地开发,仍然无法直接运行 Xcode、完成 macOS 专属签名与上传,而且把构建临时交给不稳定的共享环境,还会增加权限、缓存和日志排查成本;租用 NodeMini 的远程真实 Mac,更适合承担阶段性的 Xcode 27 构建、Archive 和 App Store Connect 上传工作。不过,若团队长期高频构建、必须连接固定物理设备,购买并自持 Mac 仍可能更合适。

最终判断可以压缩成一句话:有明确即时任务和稳定入口,就做;只有概念没有入口,就先验证;依赖复杂状态和重资源,就先把完整 App 做扎实。