跳到正文
AppFoyer
免费开始

指南 提交之前

用编码代理来编写你的合规页面

这些页面需要的事实已经在你的代码仓库里。代理能真正推导出什么、必须问你什么,以及在让它碰这件事之前值得坚持的边界。

一个能读取你代码仓库的编码代理,已经掌握了这些页面所需的事实:应用名称、bundle id、商店链接以及构建中的每个 SDK。借助合适的工具,它会根据这些证据起草页面,并交给你一个审阅链接——由你检查并发布。

1:10
1:10 视频 · 在 YouTube 上打开

几分钟就能搞定

AppFoyer 托管本指南所讲的页面——隐私政策、服务条款、支持、账号删除和 app-ads.txt——放在它们自己的子域名上,你无需自己的域名或服务器。一个应用免费,而且商店要求的任何内容都绝不放在付费墙后面。

核查于 2026年9月25日。 商店政策会变,有时不会事先通知。下文所有内容都链接到官方文档,以那个页面为准,而不是本页。如果两者不一致,以商店为准。 本指南译自英文;引用的商店文档保留英文原文。

写隐私政策主要是誊写工作。难的部分——弄清楚你的应用到底收集了什么——答案就在你代码仓库现有的文件里,而这正是拥有文件系统访问权限的代理擅长的工作。

代理能真正推导出什么

仅凭构建文件,无需问你任何问题:

事实来源
应用名称strings.xml app_name、CFBundleDisplayName、pubspec.yaml、app.json
Application id / bundle idGradle 中的 applicationId,Xcode 项目中的 PRODUCT_BUNDLE_IDENTIFIER
平台上述文件中存在哪些
数据收集build.gradle、Podfile、Package.swift、pubspec.yaml、package.json 中的每个第三方 SDK
权限和用途说明字符串AndroidManifest.xml、Info.plist
广告发布商 IDmanifest 或 plist 中的 AdMob 应用 ID
建议的 Play URL根据 application id 拼出——这是建议,不是事实,因为应用可能尚未上架

这张表就是隐私政策的实质内容。它也是“我的应用收集了什么”这个问题的答案——大多数开发者凭记忆答错、靠阅读文件才答对的问题。

它无法知道、必须询问的内容

一个编造这些内容的代理,比没有代理更糟:

  • 你的法律实体名称,以及你的条款中指定的司法管辖区。
  • 你真正会查看的支持邮箱。它绝不能从 git 配置或 fastlane 文件中找到的 Apple 开发者登录账号去猜。
  • 你真实的 App Store id,除非它在 fastlane 配置中——这个数字 id 是无法推导出来的。
  • 应用是否已上线,以及对应哪个商店页面。
  • 业务事实:你是否销售订阅、儿童是否是目标受众、你是否与某个在依赖列表中不留痕迹的合作伙伴共享数据。
  • 任何关于你后端的信息。代码仓库里没有任何东西能说明你把数据保留多久。

好的结果是这样的:所有能推导的都推导出来,并附上来源文件和行号;剩下的是一份只有你能回答的简短问题清单。

值得坚持的边界

在让任何代理碰这件事之前,先确定下面几点——它们决定了这是一个有用的工具还是一个隐患:

  1. 没有人工点击,就不发布任何内容。一个生成的法律页面未经审阅就上线——整个风险用一句话就说完了。
  2. 每个推导出的事实都可溯源。“我在 app/build.gradle:47 找到了 firebase-crashlytics”是可以核查的;“你的应用收集诊断数据”则不是。
  3. 它不提交、也不推送代码。提出一个 diff 是帮忙;改写你的仓库则不是。
  4. 它只把最少的内容发出你的机器。在本地推导事实、只发送结论,与上传你的源代码是截然不同的两件事。
  5. 它会说出自己不知道什么。一个用貌似合理的句子填补占位符的代理,产出的是一份包含猜测的合规文件。

对这一类中的任何工具都问这五个问题,包括我们的。

人在哪些环节参与

代理起草;你来决定。具体来说,由你来:

  • 确认它无法推导的问题;
  • 阅读第三方那一节,这是审核人员拿来与你的 Data safety 表单对照的部分;
  • 决定数据保留期限,因为只有你了解你的后端;
  • 点击发布;
  • 填写商店后台的字段——任何代理都不应该进入你的 Play Console。

如果你的应用涉及金钱、健康数据或儿童,这份清单上仍然应该有一小时的律师咨询。根据证据起草的模板,比一张白纸是更好的起点;但它不是法律建议。

AppFoyer 在这里做什么

我们有一个 Claude Code 插件。安装后,说 “make this app store-ready”,技能就会读取你的构建文件,推导出上面那张表,并为每个事实附上文件和行号,只询问它找不到的内容,然后起草全部五个页面以及 app-ads.txt。之后它会在控制台中给你一个审阅 URL。

上述边界是被强制执行的,而不只是承诺。代理的凭据只能使用一组固定的工具——列出和读取应用、创建应用(每个 flavor 一个)、更新设置、起草页面、app-ads.txt、检查清单、应用图标和自定义地址——而发布不在其中:request_publish 给你的是一个链接,而不是一个上线的页面。图标和地址是仅有的两项没有草稿步骤的内容,所以代理在设置它们时会告诉你,而且不会在未询问的情况下替换你已经在使用的地址。代理不能发布、取消发布、删除应用、修改通知渠道,也不能接触你的删除请求收件箱;这些都是仅限会话的操作,由你自己执行。完整的工具列表和实际示例见代理文档页面。该技能从不提交或推送代码,只有在你要求它把最终 URL 接回应用时,才会提出一个 diff。

如果你的代理不是 Claude Code——比如 Cursor、Codex 或某个聊天助手——隐私页面提供了一条复制粘贴的途径:编辑器会给你一段已经填好你应用信息的提示词,你在任何地方运行它,再把回复粘贴回来。这段提示词以及它为什么这样措辞,见用 AI 助手编写你的隐私政策。

如果你没有代理,同样的功能也以一个简短表单的形式提供。代理途径更快,是因为答案已经在你的代码仓库里——它并不是另一个产品。

权威来源