适用:Flutter / Swift / Objective-C / React Native / Unity
场景:上架 App + 内购订阅(月付/年付)+ RevenueCat 统一管理
Apple IAP(In-App Purchase)本身非常强大,但开发者常常会遇到:
使用 RevenueCat,你可以:
✨ 自动验证订阅(无需自己搭建服务器)
✨ 自动同步跨平台用户 Pro 状态
✨ 显示历史账单、取消原因、续费失败原因
✨ 支持 Offer、价格管理、A/B 测试
✨ 自动处理 Apple 信号(cancel、renew、billing retry 等)
只需 10 行代码即可完成所有 IAP。
| 项目 | 要求 |
|---|---|
| Apple 开发者账号(公司/个人) | 已完成银行卡验证 |
| App Store Connect 中已创建 App | 不需提交,可是 Draft 状态 |
| 已上传一次 build(用于解锁 IAP 功能) | 必须,否则找不到 In-App Purchases |
| RevenueCat 账号 | 免费版即可 |
| Flutter/Swift 项目已加入 IAP 权限 | 需开启 In-App Purchase Capability |
重要:必须先创建订阅组(Subscription Group)才能创建订阅产品。

路径:
App Store Connect → My Apps → 你的 App →
Features → In-App Purchases → Manage
点击:

示例名称:
注意:一个订阅组内,用户只能选择一个订阅(例如月付 or 年付)

例子:
| 字段 | 示例 |
|---|---|
| Reference Name | Linguadiary Monthly Subscription |
| Product ID | linguadiary_monthly_1 |
| Duration | 1 Month |
| Cleared for Sale | YES |
| Localization | Title + Description 必填否则审核失败 |
Apple 要求填写:
示例:
Linguadiary Monthly Plan
建议 35 字以内
示例:
Unlock unlimited AI correction and pro features.
建议 55 字以内
选择 Level 1–87 价格等级。

同组内再创建一个:
| 字段 | 示例 |
|---|---|
| Product ID | linguadiary_yearly_12 |
| Duration | 1 Year |
| 价格 | Level 2–100 |
路径:
App Store → Version → In-App Purchases → 选择你的订阅项目 → 保存
否则会出现:
❌ “元数据丢失(Metadata Lost)”
❌ 无法通过审核
❌ RevenueCat 抓不到产品
路径:
App Store Connect → App Information → Localization
必须填写:
缺少任何一个 → Apple 不让订阅上架 → RevenueCat 显示产品为空。

路径:
RevenueCat → Apps & providers→ Add App → Apple App Store

填写:
然后点击 Add Store。

路径:
Products → New Product
添加:
必须与 App Store Connect Product ID 完全一致(大小写敏感)。
然后创建 Offering:
| Offering | 包含 Package |
|---|---|
| default | monthly + yearly |
RevenueCat 会自动同步价格、商品信息。
await Purchases.configure(
PurchasesConfiguration("public_sdk_key_ios"),
);
final offerings = await Purchases.getOfferings();
final package = offerings.current?.availablePackages.first;
Purchases.purchasePackage(package);
final info = await Purchases.getCustomerInfo();
final isPro = info.entitlements.all["pro"]?.isActive ?? false;
仅以上 4 步即可完成全部逻辑。

路径:
Users and Access → Sandbox Testers
填写:
测试流程:
你可以快速看到:
原因:
原因:
必须在这里添加:
App → Version → In-App Purchases → Add
需要在 app 内提供:
可用:
https://linguadiary.com/privacy
https://linguadiary.com/terms