跳转至正文
教程

Apple Remote Code 规则与 Capgo Live Updates

App 审核指南 2.5.2、ADPLA 3.3.1(B) 以及 2025 年指南 4.7 中关于 mini-app 的澄清,涵盖了原生远程 code、解释型 code 例外以及 mini-app 目录。只要保持 App 经审核的用途、遵守操作系统安全要求,并符合 ADPLA 3.3.1(C),你在 Capacitor WebView 中运行的已签名 JavaScript 仍可算作解释型 code。下面说明 Capgo 如何契合这一模式。

Apple 远程 code 执行规则与 Capgo 实时更新 Capgo 博客插图

交付中的团队 Capacitor Live Updates 在 Apple 审核邮件提及后仍反复问同一个问题 远程执行 code:这会阻止 Capgo 吗?

对大多数 Capacitor 应用来说,不会。 Capgo 替换的是应用当前运行的 web bundle。它不会下载 Swift、frameworks 或字节码,也不会把你的产品变成迷你应用商店。Apple 引用的规则确实存在,但它们针对的是另一类行为,与已签名 JavaScript 交付到 WebView WKWebView 或 JavaScriptCore 的情况不同。

本文仅为工程指导,而非法律建议。请阅读 Apple 公布的原文,并就你的应用咨询法律顾问。

审核人员引用的三段文本:

App 审核指南 2.5.2

指南 2.5.2 规定应用不得“下载、安装或执行 code,从而引入或改变应用(包括其他应用)的功能或特性”。

审核团队在看到以下情况时会引用该条款:

  • dlopen, dlsym,或类似的动态加载,
  • performSelector: 以及针对私有 API 的其他运行时钩子,或
  • 用于在审核通过后改变原生行为的远程脚本。

这就是 远程执行 code 这是拒信中的常见模式。它并不是禁止安装后下载的每一个字节。

ADPLA 第 3.3.1(B) 节(按 code 解读)

本指南中介绍的 Apple Developer Program 许可协议 章节 3.3.1(B) 允许 解释型 code 在满足以下条件时下载:

  1. 不会改变 App 的核心用途,
  2. 不会绕过签名、沙盒或其他 OS 安全特性,且
  3. 不会为其他应用创建商店或店面。

Capacitor 的 Web 层按设计由 code 解释执行。 Capgo 在用户从 App Store 安装审核过的二进制文件后,替换该层。

ADPLA 第 3.3.1(C) 条(附加功能)

章节 3.3.1(C) 又增加了一道限制:除非获得 Apple 事先书面批准,或属于允许的 3.3.9(A) 应用内购买(In-App Purchase)用途,否则 App 不得通过 App Store、Custom App Distribution 或 TestFlight 以外的分发机制提供、解锁或启用额外功能或特性。

特定的 OTA bundle 是否越界,需要由您的团队做出法律判断。Capgo 不会替您做决定。这份 合规检查清单 列出了 3.3.1(C),方便您评估每次发布。

Guideline 4.7 以及 2025 年 11 月的澄清说明

Apple 2025 年 11 月 13 日的指南更新 明确了 指南 4.7 适用于提供 HTML5 和 JavaScript 的应用 小程序、mini games、聊天机器人、插件及类似软件 且未嵌入二进制文件.

如果用户在您的应用内浏览或启动许多不同的软件体验,您可能需要遵循 4.7 的目录、索引和年龄分级机制。bundle 的所有权并不能决定这个问题。这份 你交付的体验 。

Capgo 是用于向 你的 渠道交付 bundle 的 你的 渠道。它本身并不是 4.7 市场。如果你的产品是白标宿主或小程序平台,在依赖 OTA 之前请认真对待 4.7。

Capgo 实际交付的内容

层级 Capgo 的行为
原生二进制 保持不变。新的 plugin、权限和 entitlement 需要走 store build。
Web 资源 经过签名的 JavaScript、HTML、CSS、字体、图像和静态文件将替换应用内的 bundle。
执行 在 Apple 已随你的壳应用批准的 WebView 或 JavaScriptCore 引擎中运行。
加密 可选的端到端加密可确保 Capgo 在传输和存储期间无法读取 bundle 内容。

Capgo 帮助你在几分钟内发布 Web 层修复,在特定 channel 上回滚有问题的 bundle,并让原生版本继续走 App Store 发布流程。数千款生产应用采用这种拆分方式,而不会将 live update 变成远程原生加载器。

给团队的实用规则

  • 对于 Apple 已审核产品内的 bug、UI、文案和改进,请使用 OTA。
  • 当原生 code、SDK、权限或 entitlements 发生变化时,提交新的二进制文件。
  • 不要使用 live update 来更改定价模式、解锁隐藏功能或改变应用用途。
  • 如果被要求,请在 App Review 备注中说明更新机制。
  • 阅读完整 Apple 远程 code 与 Capgo 部分,在您下次发布之前。

如果您需要产品视图(渠道、回滚、签名),请从 Capacitor Live Updates开始。如果您需要深入的政策分析,请使用上方的合规文档或 Apple 允许 Live Update 吗?.

为 Capacitor 应用提供 Live Updates

当 Web 层出现线上 Bug 时,通过 Capgo 发布修复,而不用等 App Store 审核好几天。用户会在后台收到更新,原生变更则仍走正常审核流程。

博客最新动态

Capgo 为你提供打造真正专业的移动应用所需的最有价值的洞察。