在App Store和Google Play上获得应用程序批准可能会很困难,尤其是在实施内购(IAP)和订阅功能时。2025年更严格的指南,了解审查员在看什么是至关重要的。这份全面指南涵盖了您需要在第一次提交时通过审查所需的一切内容。
需要详细的设置说明吗? 查看我们的完整指南: iOS App Store 评审 | Android Play Store 评审
为什么 IAP 应用程序会被拒绝
含有内购功能的应用程序面临更高的审查,因为它们涉及真实的货币交易。根据 __CAPGO_KEEP_0__ 和 __CAPGO_KEEP_0__的赚钱政策,2025 年最常见的拒绝原因是:
- 价格不明确 (2025 年拒绝的 42% )
- Missing or confusing subscription terms (31%)
- Deceptive UI patterns (18%)
- Privacy policy violations (9%)
Let’s dive into how to avoid each of these pitfalls.
iOS App Store 的要求
📖 iOS 全面指南: 欲知详细设置指南,请参阅 iOS App Store 审核指南
1. 价格透明度
苹果要求在购买前准确披露价格 before the purchase button. This is non-negotiable.
苹果想要看到的:
- 价格明显显示:“每月 $9.99”
- 账单频率在前期说明
- 用户为钱得到什么
- 费用何时发生
- 取消指示可见

常见错误: 隐藏价格直到用户点击“订阅”或仅在细印中显示价格。
解决方案:
// Example: Compliant subscription display
<div className="subscription-card">
<h2>Premium Plan</h2>
<p className="price">$9.99/month</p>
<ul>
<li>✓ Ad-free experience</li>
<li>✓ Unlimited cloud storage</li>
<li>✓ Priority support</li>
</ul>
<p className="terms">
Renews automatically. Cancel anytime in Settings.
</p>
<button>Subscribe Now</button>
</div>
价格一致性规则: 所有价格必须在以下位置匹配:
- App Store 列表
- 内购屏幕
- 订阅管理
- 营销材料
即使是 $1 的差异也会触发自动拒绝。
2. 订阅计划展示
苹果会标记使用“黑暗模式”来推广昂贵等级的应用程序。
必备:
- 平等显示所有订阅等级
- 不选中优质选项
- 清晰的功能比较
- 便于找到更便宜的替代方案
Forbidden:
- 自动切换到年付计划
- 隐藏月付选项
- 使用倒计时器制造假的紧迫感
- 假的稀缺性(‘仅剩 3 个位置!’)
3. 恢复购买功能
每个支持内购的应用程序都必须提供一个恢复购买按钮,且不需要联系支持人员。了解更多信息,请参阅我们的 入门指南.
实现:
import { NativePurchases } from '@capgo/native-purchases';
async function restorePurchases() {
try {
const { customerInfo } = await NativePurchases.restorePurchases();
if (customerInfo.activeSubscriptions.length > 0) {
showSuccess('Purchases restored!');
unlockPremiumFeatures();
} else {
showInfo('No previous purchases found.');
}
} catch (error) {
showError('Restore failed. Please try again.');
}
}
4. 隐私合规(第 5.1.1 条)
2025 年将实施更严格的隐私规定。苹果现在要求:
对于每个权限:
- 清晰的说明 在请求之前 具体的用例(而不是通用)
- 数据如何存储/共享
- 是否可选
- 示例
entries: Info.plist 2025年,错误的隐私标签是顶级拒绝原因。
<key>NSCameraUsageDescription</key>
<string>Camera access lets you scan product barcodes for quick upgrades. Photos are never uploaded.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location shows relevant local content in your Premium subscription.</string>
Android Google Play Requirements
全面Android指南:
📖 为了完成设置指南,请参阅我们的 For complete setup instructions, see our Android Play Store Review Guide
1. 必须使用 Google Play Billing
对于数字商品(订阅、内购内容),您 必须 使用 Google Play Billing。其他付款方式将被拒绝。
数字商品(必须使用 Play Billing):
- 功能的订阅
- 内购货币
- 数字内容(电子书、音乐)
- 高级解锁
实物商品(不能使用 Play Billing):
- 实物商品
- 实体服务
- 非营利捐赠
使用 native-purchases 实现:
欲了解完整的 Android 配置,请参阅 Android 桌面测试 和 创建订阅.
import { NativePurchases } from '@capgo/native-purchases';
// Automatically uses Google Play Billing on Android
await NativePurchases.configure({
apiKey: 'your_api_key'
});
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly']
});
2. 透明的自动续订
Google 需要明确说明订阅会自动续订,包括:
- 续订通知
- 价格提示
- 易于取消访问
Compliant UI:
<div className="subscription-terms">
<p>Subscription renews automatically at $9.99/month</p>
<p>Cancel anytime in Google Play Subscriptions</p>
<p>Next billing date: February 15, 2025</p>
<button onClick={openManagement}>
Manage in Google Play
</button>
</div>
3.
Mandatory for IAP apps:
- Privacy policy URL in Play Console
- Privacy policy link accessible in-app
- Accurate Data Safety section declarations
Data Safety Must Declare:
- Purchase history collection
- Email addresses (for receipts)
- Device IDs (fraud prevention)
- Analytics data

两种平台上的常见拒绝原因
1. 元数据不匹配
为什么会失败:
- 截图显示的功能不在当前版本中
- 描述承诺的功能并不存在
- 价格与应用中的不符

预防措施:
- 为每次提交更新截图
- 匹配描述到实际功能
- 测试所有声明的准确性
- 移除过时的促销文本
2. 有误导性的营销
自动拒绝触发器:
- “#1 app”没有证据
- “无限”有隐含的限制
- 虚假评论或评分
- 竞争对手的抨击

最佳实践: 准确具体:
- ✓ “加入50,000+用户”
- ✗ “世界上最好的应用程序”
- ✓ “年度计划可节省至多30%”
- ✗ “限时优惠!”
3. 购买流程异常
测试提交前:
- 产品加载正确
- 购买成功
- 高级功能立即解锁
- 恢复购买成功
- 错误信息友好
- 网络故障处理
// Comprehensive error handling
async function handlePurchase(productId: string) {
try {
const { customerInfo } = await NativePurchases.purchaseProduct({
productIdentifier: productId
});
if (customerInfo.entitlements.active['premium']) {
unlockPremiumFeatures();
}
} catch (error: any) {
switch (error.code) {
case 'USER_CANCELLED':
// Silent - user backed out
break;
case 'ITEM_ALREADY_OWNED':
await NativePurchases.restorePurchases();
break;
case 'NETWORK_ERROR':
showError('Check your connection and try again.');
break;
default:
showError('Purchase failed. Please try again.');
}
}
}
提交前检查清单

在每次提交前使用此清单。详细测试流程请参见:
- iOS 测试: iOS sandbox 测试指南
- Android 测试: Android sandbox 测试指南
测试
- 测试所有订阅等级
- 验证免费试用期工作正常
- 测试入门优惠
- 确认恢复购买功能正常
- 测试多台设备
- 验证sandbox/测试帐户正常工作
定价 & 条款
- 价格与所有平台一致
- 订阅条款明确说明
- 取消指示可见
- 账单频率显示
- 免费试用期准确
隐私 & 权限
- 隐私政策在商店中链接
- 隐私政策在应用内可访问
- 所有权限得到合理说明
- Info.plist 描述清晰 (iOS)
- 数据安全完成 (Android)
元数据
- 截图显示当前版本
- 描述与功能相符
- 没有占位符文本
- 年龄等级正确
- 所有声明都可测试
Code Quality
- 启动时无崩溃
- 所有功能如描述
- 错误处理已实现
- 加载状态显示
- 网络错误已处理
评论时间表预期

iOS:
- 标准: 24-48 小时
- 高峰期: 3-5 天
- 周末: 无评论
- 加急: 对于关键 bug 可用
Android:
- 初始: 7 天平均
- 更新: 通常更快
- 滚动评论: 可以随时上线
- 政策违规: 立即可能被暂停
专业提示: 提交 iOS 应用程序周一至周三以避免周末延迟.
如果被拒绝

步骤 1:了解问题
- 仔细阅读拒绝通知
- 注意引用具体指南
- 检查提供的示例
- 在反馈中寻找模式
步骤 2:彻底修复
- 解决根本问题,而不是症状
- 广泛测试修复
- 记录所有更改
- __CAPGO_KEEP_0__
步骤 3: 保持专业

iOS 解决中心:
Thank you for the feedback. I have addressed the issue:
Issue: Subscription pricing not clear upfront
Fix: Added explicit pricing display on subscription screen
showing "$9.99/month" before purchase button. Also added
cancellation instructions on the same screen.
Screenshots showing changes are attached. Test account
provided in App Review Notes.
Android 上诉:
Subject: Policy Violation Appeal - [App Name]
I have received notification regarding [Policy X.Y].
Changes made:
1. Updated subscription UI to show all pricing upfront
2. Added clear cancellation instructions
3. Implemented restore purchases functionality
Version [X.Y.Z] addresses all concerns. Test account
credentials provided below for verification.
步骤 4: 快速重新提交
- 重新提交将更快处理
- 通常在 24 小时内
- 包含测试账户
- 参考之前的提交
2025 年更新和新要求
iOS 变更
人工智能功能披露 (New)
- 必须标记人工智能生成的内容
- 解释人工智能使用
- 文档内容安全
增强的订阅清晰度
- 必须进行横向比较
- 不能隐藏更便宜的选项
- 清晰的升级/降级路径
隐私强化
- 第 5.1.1 条规定的执行力度增加
- 对数据正当性进行更严格的审查
- 更严格的儿童应用规则
Android 变更
替代付款 (地区)
- 允许在欧洲经济区、韩国
- 仍然必须提供Google Play选项
- 减少服务费
订阅API要求
- 新应用必须使用订阅服务API
- 遗留付款API已过时
- 更好的订阅管理工具
成功最佳实践
1. 使用合适的 SDK
这个 @capgo/native-purchases 插件正确地处理了两种平台:
// Single API for iOS and Android
await NativePurchases.configure({
apiKey: 'your_api_key'
});
// Automatically uses correct billing system
const { products } = await NativePurchases.getProducts({
productIdentifiers: ['premium_monthly']
});
// Platform-specific logic handled automatically
await NativePurchases.purchaseProduct({
productIdentifier: 'premium_monthly'
});
2. 实现合适的错误处理
优雅地处理所有购买状态:
- 用户取消(静默)
- 网络错误(重试选项)
- 已拥有(恢复)
- 产品不可用(通知用户)
- 支付待定(稍后检查)
3. 清晰的沟通
用户应该始终知道:
- 他们购买的内容
- 费用
- 他们将何时被收费
- 如何取消
- 试用期结束后会发生什么
4. 测试
iOS沙盒:
- 在App Store Connect中创建测试账户
- 在设备上配置(设置>App Store>沙盒)
- 注意加速订阅时长
Android许可测试:
- 在Play Console中添加测试账户
- 查看“测试购买”通知
- 不会产生实际费用
资源
平台文档
实现指南
详细评审指南
需要专家帮助?
在应用程序评审或需要现场协助时,困扰?我们的团队为在应用程序内购买实施和评审准备提供了专门的支持。
与我们预约电话会议 以获取以下内容的定制帮助:
- IAP 实施评审
- App Store 评审准备
- 提交策略指导
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_1__
__CAPGO_KEEP_2__
__CAPGO_KEEP_3__
__CAPGO_KEEP_4__
- __CAPGO_KEEP_5__ __CAPGO_KEEP_6__
- __CAPGO_KEEP_7__ __CAPGO_KEEP_8__
- __CAPGO_KEEP_9__ __CAPGO_KEEP_10__
- __CAPGO_KEEP_11__ - 用户不应感到困惑
- 准备文档 - 准备好测试账号
按照本指南和使用合适工具,如 native-purchases 插件,您将显著增加首次通过的机会。
请记住:审查员正在寻找尊重用户并遵循指南的应用。以这种思维方式开发,审查将随之而来。
需要帮助实现内购功能? 查看我们的 全面文档 或联系社区获取支持。
继续阅读 2025 年 App Store 内购审查指南
如果您正在使用 2025 年如何通过 App Store 审核 In-App 购买 以规划商店批准和分发,连接它与 @capgo/capacitor-in-app-review 在 @capgo/capacitor-in-app-review 中的实现细节 使用 @capgo/capacitor-in-app-review 在使用 @capgo/capacitor-in-app-review 中的原生能力 @capgo/capacitor-native-market 在 @capgo/capacitor-native-market 中的实现细节 使用 @capgo/capacitor-native-market 在使用 @capgo/capacitor-native-market 中的原生能力,并且 Capacitor OTA 更新:App Store 批准指南 为实用上下文中的Capacitor OTA 更新:App Store 审核指南。