App Store 转移 App 到另一个开发者账号:步骤与条件
作者:Mehdi Azizi
发布于 ,9分钟
由账号持有人在 App Store Connect 发起 App 转移,接收方需在 60 天内接受。App 保留评分、评论和 Bundle ID。
想把一个 App 从一个 Apple Developer 账号转到另一个账号,Apple 在 App Store Connect 里提供了 App 转移功能。转出账号的持有人发起转移,接收账号的持有人在 60 天内接受,之后整个过程最多需要两个工作日。 App 在此期间照常销售,保留评分、评论和 Bundle ID,用户也会继续收到更新。
会出问题的地方要在点按钮之前准备好:TestFlight、订阅、Sign in with Apple、推送通知、共享钥匙串。我自己还没转移过 App。这篇指南依据的是 Apple 的帮助页面(2026 年 11 月 3 日重新核对过),最后那份清单是我会用在自己 App 上的,我的 App 都是用 Expo 和 RevenueCat 做的。
什么时候需要转移 App
根据 App 转移概述,这个功能适用于你把 App 卖给了另一位开发者,或者想把它挪到另一个账号、另一个组织。独立开发者最典型的情况:从个人账号转到自己公司的账号。要开公司账号,先看看 D-U-N-S 编号 这篇指南。
转移的是 App,不是你的账号。 每个 App 单独转移,转移完成后它会彻底离开你的账号。
Apple 的九项条件
转移条件 页面按顺序列了九项:
| Apple 的条件 | 你要检查什么 |
|---|---|
| 两个账号都没有处于待处理或变更中的状态,且双方都已接受最新版本的付费和免费协议 | 双方都看 Business 里的 Agreements 标签 |
| App 至少有一个版本已在 App Store 上架 | 从未上架的 App 不能转移 |
| App 在任何国家或地区都没有处于预订状态 | 预订已结束或已撤下 |
| App 不处于以下任一状态:Processing for Distribution、Waiting for Review、In Review、Accepted、Pending Developer Release、Pending Apple Release | 你的最新版本正在销售 |
| App 内购买项目处于以下状态之一:Approved、Ready to Submit、Developer Removed from Sale、Rejected | 没有在审核中或未完成的 App 内购买项目 |
| Apple 托管的资源包在 TestFlight 或 App Store 上没有处于 Waiting for Review 或 In Review 的版本 | 这方面没有任何东西在审核中 |
| App 的 App 内购买产品 ID 没有被接收方的 App 使用 | 对比两个账号的产品 ID |
| 使用过沙盒、并与其他 Mac App 共享 Application Group Container Directory 的 Mac App 不能转移 | 只涉及部分 Mac App |
| Apple Arcade 的 App 不能转移 | 涉及的项目很少 |
等你的最新版本正式上架销售后,再发起转移。
转移前的准备
根据 Apple 的帮助页面,下面这些要在点按钮之前处理好:
- 全部备份。 App 会离开你的账号:导出元数据、价格、上架日期、销售和下载数据。
- 清空 TestFlight。 移除所有构建版本和所有测试员,并清空每种语言下 Test Information 的字段。分组的用法见 TestFlight 指南。
- 清空 Xcode Cloud,如果有 App Replacement entitlement,就通过发布一次更新把它去掉。
- 订阅:共享 App 专用密钥。 销售自动续期订阅的 App 必须使用 App 专用共享密钥。你生成它,交给接收方,然后再发起转移。接收方在接受前更新自己的服务器,转移完成后再生成一个新密钥。
- Sign in with Apple:解除分组并准备好标识符。 下文详细说明。
- Webhook:做个决定。 它们会跟着 App 走。如果你不想再收到事件,就提前删掉,或者让接收方去改指向。
钱方面有两个影响要知道。根据 Small Business Program 页面,这个 App 在该自然年内的净收入会计入所有发起或接受转移的账号。所以 100 万美元的门槛,双方都要把这个 App 算进去:见 15% 佣金。另外,转移之后就不能再为这个 App 创建新的促销代码:已有的代码在创建后四周内仍然有效。
转出方的步骤
只有账号持有人(Account Holder)可以发起转移。他需要接收方账号持有人的 Apple ID,以及该账号的 Team ID。根据 发起转移的帮助页面:
- 在 Apps 中选择这个 App。
- 在侧边栏 General 下点击 App information,然后往下滚到 Additional Information。
- 点击 Transfer App。可能会要求你输入双重认证验证码。
- 如果所有条件都满足,点击 Continue。否则点 Cancel,把缺的补上。
- 输入接收方账号持有人的 Apple ID 和 Team ID,然后点 Continue。
- 阅读条款,勾选同意,然后点击 Request Transfer。
- 点击 Done。
App 保持原有状态,另外加上 Pending App Transfer 标记。在此期间,你不能再修改它的元数据、价格、上架范围和 App 内购买项目。与 App Review 正在进行的沟通会被关闭。
接收方的步骤
只有接收账号的持有人可以接受,期限 60 天。根据 接受转移的帮助页面:
- 登录 App Store Connect:会有提醒告诉你有 App 待转移。
- 打开 Business:提醒出现在 Agreements 里。
- 在 App Transfers 下点击 Review。
- 填写支持 URL、营销 URL,如果 App 原来有隐私政策 URL 也一并填写,再填好 App Review 和 App Store 的联系人。
- 在 User Access 中选择团队里谁能看到这个 App。
- 在 App privacy 中沿用或重新填写原所有者的回答。如果没有回答,要在下一个版本之前补全。
- 阅读条款,勾选同意,然后点击 Accept。
转移进入 Processing App Transfer 状态,最多两个工作日。如果 App 需要出口合规文件,会经过 Waiting for Export Compliance。完成后双方持有人都会收到通知,App 从转出方账号中消失。接收方随后要创建新的描述文件,与 App 的 App ID 和分发证书关联:见 iOS 证书和描述文件。
只要状态还是 Waiting for Recipient,双方都可以取消:转出方在 Business 的 App Transfers 区域点 Cancel Transfer,接收方点 Decline。
哪些会跟着走,哪些会出问题
| 项目 | 转移之后 | 要做什么 |
|---|---|---|
| Bundle ID 和 App ID | 跟着走,通配符 App ID 会变成显式 App ID | 无 |
| 评分、评论、更新 | 跟着走,App 照常销售 | 无 |
| 自动续期订阅 | 要求使用 App 专用共享密钥 | 转移前交出密钥,转移后重新生成 |
| iCloud | 数据、容器和键值标识符都跟着走 | 更新 entitlements 中的键值标识符 |
| Sign in with Apple 的 Service ID | 跟着走,除非你事先解除关联 | 60 天内兑换转移标识符 |
| Webhook | 跟着走 | 事先删除,或之后改指向 |
| 推送通知 | 证书在到期前仍然有效 | 接收方的 APNs 密钥,更新服务器 |
| 共享钥匙串 | 在下一次更新前仍能用 | 用接收方的 Team ID 重建分组 |
| App Groups | App 仍可使用 | 转出方删除分组,接收方重新注册 |
| Apple Pay | merchant ID 不跟着走 | 下次更新前申请新的 merchant ID |
| Wallet 卡券 | 由 App 更新的卡券需要重新签发 | 新的标识符 |
| 促销代码 | 不能再创建新代码 | 旧代码有效期四周 |
| 销售和付款 | 转出方保留转移前的,接收方获得转移后的 | 发起前导出 |
| App Analytics | 转出方失去访问权,接收方获得历史数据 | 无 |
| 推荐提名、构建包历史 | 不跟着走 | 发起前记下来并交给对方 |
钥匙串要特别注意。Apple 提醒:更新之后,App 找不到存放在共享钥匙串里的登录令牌,用户需要重新登录一次。如果你的 App 和另一个 App 或扩展共享钥匙串,发布这个更新前要提前告知用户。
Game Center 方面,分组、合并排行榜和配对规则都要由接收方重新设置。Mac Catalyst App 分两步转移,先转 iPad App。
Sign in with Apple:转移标识符
使用 Sign in with Apple 时,每个用户的标识符都是你团队专属的。接收方不能直接拿来用。Apple 关于转移用户的文档 分三步:
- 解除 App 分组。 在 Sign in with Apple 中与其他 App 分在一组的 App 不能转移。
- 为每个用户生成一个转移标识符。 用通过
user.migrationscope 获取的令牌,调用usermigrationinfo端点,传入用户标识符和接收方的 Team ID。响应中包含一个transfer_sub。 - 只交出转移标识符。 不要交出你团队的标识符,也不要交出私密邮箱地址。
这些标识符可以在接受之前生成,也可以在接受后 60 天内生成。接收方在接受后有 60 天时间把它们兑换成自己的标识符。 发起转移前就要把这次兑换安排好。还有一个影响:如果某个用户没有使用你的其他 App,转移后你就不能再通过他的私密地址给他发邮件。登录相关规则见 4.8 条准则。
要记住的期限
| 步骤 | 期限 |
|---|---|
| 接收方接受 | 发起后 60 天 |
| 接受后的处理 | 最多两个工作日 |
| 兑换 Sign in with Apple 标识符 | 接受后 60 天 |
| 已有促销代码 | 创建后四周 |
| 转移的 APNs 证书 | 直到到期日 |
我给 Expo + RevenueCat App 准备的清单
如果是我的 App,我会按这个顺序检查:
- 导出销售、下载和分析数据,再发起转移。
- 等待最新版本上架销售,且 App 内购买项目处于允许的状态。
- 清空 TestFlight:构建版本、测试员和 Test Information。
- 交出 App 专用共享密钥,然后发起转移。
- 接收方在接受之后:生成新的共享密钥,填到所有校验订阅的服务里,包括 RevenueCat。App 内购买密钥在 Users and Access 的 Integrations 标签里创建,而且只能下载一次,见 App Store Connect 帮助。
- 检查 App 信息页里的服务器通知地址。 Apple 关于转移的页面没提到这一点:去确认一下,别想当然。
- 在接收方账号里重新创建描述文件和 APNs 密钥。Expo App 的操作方法见 在 Expo 中配置 APNs 推送证书。
- 用新账号签名并发布一次更新,如果钥匙串是共享的,提前告知用户需要重新登录。
发布时别丢掉已经能用的东西
iOS Kit 基于我自己 App 的起步代码,分四个步骤带你走到 App Store,节奏由你掌握。完整流程见 把 App 发布到 App Store 这一页。
在改动任何东西之前,先做免费诊断:它会帮你理清步骤顺序,并把我的 Apple 防拒审清单发给你。
常见问题
App Store 上的 App 转移需要多长时间?
接收方有 60 天时间接受。接受之后,Apple 表示处理最多需要两个工作日。如果 App 需要出口合规文件,还会多一个核查步骤。
转移期间 App 会从 App Store 下架吗?
不会。App 在转移期间和之后都照常销售。它保留评分、评论和 Bundle ID,用户也会继续收到更新。
转移后订阅用户还能保留订阅吗?
Apple 没有提到订阅用户会有任何中断。它唯一的要求是 App 专用共享密钥:转出方事先交出,接收方更新服务器,转移完成后再生成一个新的。
从未上架过的 App 能转移吗?
不能。App 至少要有一个版本已在 App Store 上架。它也不能处于预订或审核中的状态。
谁可以发起和接受 App 转移?
只有账号持有人,也就是 Account Holder。转出方需要接收方账号持有人的 Apple ID 和该账号的 Team ID。
App 转移可以取消吗?
可以,只要状态还是 Waiting for Recipient。转出方在 Business 的 App Transfers 区域点 Cancel Transfer,接收方点 Decline。如果一直没有回应,转移会在 60 天后过期。

