App Store Connect 优惠码:如何创建订阅优惠代码
作者:Mehdi Azizi
发布于 ,8分钟
2026 年 3 月起,App 内购买的促销代码由优惠代码取代:一次性代码或自定义代码,可通过链接、App Store 或 App 内兑换。
在 App Store Connect 里,订阅或 App 内购买的“促销码”现在叫优惠代码(offer code)。从 2026 年 3 月 26 日起,Apple 不再允许为 App 内购买创建促销代码(promo code):促销代码只剩一个用途,就是免费送出付费 App 的下载。你先在产品上创建一个优惠,再生成一次性代码或自定义代码。对方可以通过链接、在 App Store 里,或者直接在你的 App 里兑换。
我的 App 都是免费下载、靠订阅赚钱,所以 App 促销代码对我没用。因此在 TradaZen 的代码里,邀请奖励用的是优惠代码,而且由 App 自己打开兑换流程。下面依次讲:变化了什么、Apple 各类优惠的对照表、怎么创建代码、怎么兑换,以及 3.1.1 条款禁止什么。
促销代码和优惠代码:2026 年有什么变化
Apple 在 2025 年 10 月 29 日的开发者新闻中宣布:优惠代码现在覆盖所有 App 内购买。除了自动续期订阅,消耗型、非消耗型和非续期订阅也都支持了。因此,从 2026 年 3 月 26 日起,你不能再为 App 内购买创建促销代码。之前创建的代码在过期前仍然可用。
App 促销代码本身还在。根据 App Store Connect 帮助文档,它用来免费送出一份付费 App。每个代码只能用一次,有效期四周。每个版本、每个平台最多可以申请 100 个,入口在 App 侧边栏的 Promo Codes。使用代码的人不能给 App 评分或写评论。
对于靠订阅赚钱的免费 App,App 促销代码什么也送不出去:你要送的是订阅,得用优惠代码。
Apple 的各种优惠:面向谁,怎么获得
下面是 Apple 围绕订阅提供的各种优惠,外加 App 促销代码。这张表我一直放在手边,用来做选择:
| 优惠类型 | 面向谁 | 获得方式 |
|---|---|---|
| 推介促销优惠 | 订阅组的新订阅者 | 购买时自动生效 |
| 一次性优惠代码 | 某一个特定的人 | 链接、App Store 或 App |
| 自定义代码 | 一次活动、一类人群 | 链接或在 App 内输入 |
| 促销优惠 | 当前或以前的订阅者 | 由你的 App 展示 |
| 赢回优惠 | 以前的订阅者 | 设置、App Store、App |
| App 促销代码 | 仅限付费 App | 在 App Store 中输入 |
优惠代码是让你自己在 App 之外分发的:通过邮件、你的网站、线下活动、内容创作者。其他优惠大多是自动显示,或者按你设定的规则在 App 内显示。推介促销优惠,也就是免费试用,有单独的指南:推介促销优惠和免费试用。
为订阅创建优惠代码
订阅优惠代码帮助文档里的流程分两步:先建优惠,再生成代码。界面名称以 Apple 帮助文档为准。
1. 优惠。 在 Subscriptions 里打开订阅组,再打开订阅。在 Subscription Prices 中点加号按钮,然后点 Create Offer Codes。接着:
- 填一个参考名称,之后会在销售报告里看到它;
- 选择优惠结束后订阅是否续期;不续期的话,只能做免费优惠;
- 勾选符合条件的人:该订阅组的新订阅者、当前订阅者、以前的订阅者;
- 如果订阅有推介促销优惠,选择对方是先享受推介优惠再享受代码优惠,还是只享受代码优惠;
- 选择国家或地区,再选免费、预先支付或随用随付,以及时长和价格。
优惠一旦创建就不能再修改。想改资格条件,就新建一个优惠。
2. 代码。 有两种,在优惠页面里生成:
- 一次性代码:一人一个,每批生成 500 到 25000 个。最迟在创建后六个月过期。你会下载到一个包含代码及其链接的文件。
- 自定义代码:一个你自己选的词,最多 64 个字符,不能有特殊字符,比如 RENTREE(虚构示例)。你设定最多多少人能用,每批最多 25000 人,结束日期可选。
共同限制:每个 App 每季度最多一百万个代码,每个订阅最多十个生效中的优惠,每人每个优惠只能用一个代码。代码生成后最多可能要一小时才能使用。最重要的是,你的 App 必须已上架销售,代码才能兑换:App 发布前没法送订阅。
测试方面,Apple 提供沙盒代码,每批 10 到 10000 个,在 iOS 16.3 或更高版本上通过沙盒账户的设置兑换。
为一次性购买或点数创建优惠代码
App 内购买优惠代码的页面逻辑相同。在 In-App Purchases 里打开该购买项目,然后在 Offer Codes 部分点 Create Offer。资格条件依据用户在你 App 里的购买记录:从未购买过、最近 30 天内购买过,或 30 天以前购买过。优惠可以是免费的,也可以是付费的。
要生成代码,App 必须已上架销售,且该购买项目已获批准。一个 App 同时最多有十个生效中的优惠。在 App 内兑换需要 iOS 16.3 或更高版本。
用户如何兑换代码
StoreKit 文档介绍了三种途径:
- 兑换链接。 App Store Connect 在优惠页面上提供一个示例链接,你在后面加上代码即可。如果对方没装 App,会先被引导去下载。
- App Store。 一次性代码可以在账户的 Redeem Gift Card or Code 页面输入。自定义代码则只能通过链接或你的 App 兑换。
- 你的 App。 用 Swift 的话,SwiftUI 用
offerCodeRedemption,UIKit 用presentOfferCodeRedeemSheet。在 Expo App 里用 RevenueCat 的话,是presentCodeRedemptionSheet。
RevenueCat 文档给出了链接格式:https://apps.apple.com/redeem?ctx=offercodes&id={apple_app_id}&code={code}。文档还提醒,Apple 的兑换表单自推出以来一直很不稳定,并建议用链接作为备用方案。下面是 TypeScript 的基本写法:
import { Linking } from "react-native";
import Purchases from "react-native-purchases";
const PAGE_ECHANGE = "https://apps.apple.com/redeem";
export async function echangerUnCode(): Promise<void> {
try {
await Purchases.presentCodeRedemptionSheet();
} catch {
await Linking.openURL(PAGE_ECHANGE); // 表单失败时的备用方案
}
}
这个表单不返回任何结果。权益会像购买后一样,通过你 App 里已有的 addCustomerInfoUpdateListener 监听器到达。要让 RevenueCat 正确统计这些代码带来的收入,需要提供你的 In-App Purchase 密钥。
TradaZen 的代码里准备的就是这套方案。使用邀请奖励时,App 打开已经填好代码的链接:这比表单更可靠,因为用表单还得手动再输一遍代码。输入收到的代码时,App 打开原生表单,失败时打开 App Store 的兑换页面。用户不知道在哪里输入的代码,等于没用:App Store 账户页面藏得很深,也没有任何提示。在你的 App 里放一个“我有兑换码”按钮就解决了。
促销优惠和赢回优惠,简单说说
这两种优惠不靠你分发的代码,但解决的是同一个需求:留住订阅者,或者让他们回来。
促销优惠面向当前或以前的订阅者。由你在 App 里决定什么时候展示,比如给正准备退订的人。根据促销优惠帮助文档,每个订阅最多可以有十个生效中的促销优惠。它们适用于该订阅的所有国家或地区,而且即使用户已经享受过推介促销优惠,也仍然可以享受。签名优惠需要 In-App Purchase 密钥。
赢回优惠(win-back)面向以前的订阅者。赢回优惠帮助文档详细列出了条件:最短付费订阅时长、订阅结束后经过的时间、两次优惠之间的间隔。Apple 会自动在订阅管理页面展示它,iOS 18 或更高版本上也会在你的 App 里展示。Apple 还会生成一个可分享的链接,只能发给符合条件的人。要让它出现在 App Store 上,需要用一张已获批准的订阅图片来推广,图片不能照搬你的图标或截图。这部分我在订阅推广图片的指南里讲过。
3.1.1 条款禁止什么
3.1.1 条款要求解锁功能或内容必须使用 App 内购买。它禁止自建机制,比如许可证密钥或二维码。你自己编的代码,在 App 的输入框里输入就能解锁高级版,会面临 3.1.1 拒审风险,即使是免费送的也一样。而 Apple 的优惠代码走的是 App 内购买。完整规则见我的 3.1.1 条款指南。
还有一点和邀请奖励有关:5.1.2 条款禁止把开启通知、定位或跟踪作为获得奖励的条件,代码也算在内。所以奖励不能依赖这些权限。详情见 5.1.2 条款指南。
送出订阅,别用错工具
发布前想让人免费试用 App,用 TestFlight:里面的购买走测试环境,不会扣费。发布后,用优惠代码。订阅本身怎么搭建,见 用 RevenueCat 做 iOS 订阅。
iOS & Android Kit 基于我自己 App 的起步代码:引导页、付费墙和订阅都已经写好,第三步“接入收款”会带你完成配置。整条流程都在 iOS App 内订阅页面上。如果你在准备第一次发布,来做免费诊断:它会帮你理清步骤顺序,并把我的 Apple 防拒审清单发给你。
常见问题
如何在 App Store Connect 中生成促销码?
付费 App 的话,打开 App 侧边栏的 Promo Codes:每个版本最多 100 个代码,有效期四周。订阅或 App 内购买的话,在产品上通过 Create Offer Codes 或 Create Offer 创建优惠,再生成一次性代码或自定义代码。
促销代码和优惠代码有什么区别?
促销代码送的是付费 App 的下载。优惠代码送的是订阅或 App 内购买,可以免费或打折,时长自选。从 2026 年 3 月 26 日起,App 内购买只能创建优惠代码。
能创建多少个优惠代码?
每个 App 每季度最多一百万个,所有产品合计。一次性代码每批 500 到 25000 个,自定义代码每批最多可使用 25000 次。一个订阅同时最多有十个生效中的优惠。
App 发布前能用优惠代码吗?
不能:App 必须已上架销售,代码才能兑换。发布前,给测试人员用 TestFlight,在 App 里测试兑换用沙盒代码。
当前订阅者能用优惠代码吗?
能,前提是你在优惠的资格条件里勾选了当前订阅者。Apple 的订阅页面说明,他只能兑换与当前订阅同级或更高级别的代码。
用户在哪里输入优惠代码?
可以通过兑换链接;一次性代码也可以在 App Store 账户的 Redeem Gift Card or Code 页面输入;如果你在 App 里放了兑换表单,也可以在 App 里输入。自定义代码只能通过链接或 App 兑换。

