跳转到正文

创建 iOS 自动续期订阅

GitHub

自动续期订阅可让用户在您的 iOS 应用中持续访问内容、服务或高级功能。本指南将引导您在 App Store Connect 中创建订阅。

自动续期订阅会在每个计费周期结束时自动续订,直到用户取消为止。它们非常适用于:

  • 高级内容与功能
  • 无广告体验
  • 云存储与同步
  • 流媒体服务
  • 专业工具与实用程序

在创建订阅之前,您必须:

  1. 创建订阅群组 用于整理您的订阅
  2. 需拥有有效的 Apple Developer Program 会员资格
  3. 在 App Store Connect 中填写银行和税务信息
  1. 导航到“订阅”

    在 App Store Connect 中,选择您的 App 并前往 盈利 > 订阅.

    选择您的订阅群组,或根据需要创建新群组。

    导航到订阅

  2. 创建新订阅

    点击 + 点击订阅组旁边的图标以添加新订阅。

  3. 输入基本信息

    参考名称: 仅供内部使用的描述性名称(不会向客户展示)

    • 示例:“Premium Monthly”、“Ultimate Annual”、“Basic Plan”

    产品 ID: 此订阅的唯一标识符(之后无法更改)

    • 格式: com.yourcompany.yourapp.premium_monthly
    • 使用具有描述性的全小写下划线命名
    • 配置 native-purchases 插件时必填

    输入订阅详情

  4. 配置时长

    从可用选项中选择订阅时长:

    • 1 周
    • 1 个月
    • 2 个月
    • 3 个月
    • 6 个月
    • 1 年

    时长决定了用户的计费周期。

  5. 设置定价

    点击 添加订阅价格 配置价格:

    基础区域:选择你的主要市场(通常是你所在的国家/地区)

    价格:设置订阅价格

    • Apple 会自动换算成其他货币
    • 从 Apple 的价格分级中选择
    • 考虑感知价值和市场行情

    配置价格

  6. 家人共享(可选)

    决定是否启用家人共享,启用后最多可供 6 名家庭成员使用该订阅。

    如果符合以下情况,请启用:

    • 内容适合家庭使用
    • 您希望提升产品的价值主张
    • 您的商业模式支持该功能

    如果符合以下情况,请勿启用:

    • 订阅仅限个人使用
    • 内容针对用户进行了个性化定制
    • 您希望最大化单个用户的营收
  7. 添加本地化内容

    为您 App 支持的所有语言添加订阅显示信息:

    订阅显示名称: 面向用户的名称(例如:“高级月度会员”)

    描述: 订阅包含内容的简短描述

    • 保持简洁并突出核心权益
    • 列出关键功能
    • 强调价值主张

    添加本地化内容

  8. App Store 宣传图(可选)

    上传此订阅的宣传图(312x390 像素):

    • 显示在 App Store 订阅页面中
    • 应与您的 App 设计风格保持一致
    • 包含订阅名称,便于识别
  9. 保存并提交

    点击 保存 以创建订阅。

    首次订阅:

    • 必须随新 App 版本一起提交
    • 请在下次 App Store 提交时包含此项
    • 无法独立提交

    后续订阅:

    • 可直接从“订阅”页面提交
    • 无需发布新版本 App
    • 首个订阅获批后即可使用

您的订阅将处于以下状态之一:

状态描述可测试?
缺少元数据设置未完成是(沙盒)
可提交已完成但未提交是(沙盒)
等待审核已提交至 Apple是(沙盒)
审核中Apple 正在审核是(沙盒)
已通过可供购买是
已拒绝需要修改是(沙盒)

创建完成后,请在应用中使用该产品 ID 来引用订阅:

import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
// Fetch subscription products direct from StoreKit
const { products } = await NativePurchases.getProducts({
productIdentifiers: [
'com.yourcompany.yourapp.premium_monthly',
'com.yourcompany.yourapp.premium_annual',
],
productType: PURCHASE_TYPE.SUBS,
});
products.forEach((product) => {
console.log(`${product.title}: ${product.priceString}`);
console.log(`Duration: ${product.subscriptionPeriod}`);
console.log(`Description: ${product.description}`);
});
// Purchase a subscription (StoreKit 2 automatically handles intro pricing and offers)
try {
const transaction = await NativePurchases.purchaseProduct({
productIdentifier: 'com.yourcompany.yourapp.premium_monthly',
productType: PURCHASE_TYPE.SUBS,
});
console.log('Transaction ID:', transaction.transactionId);
// StoreKit receipts are included on iOS for server-side validation
await sendReceiptToBackend(transaction.receipt);
} catch (error) {
console.error('Purchase failed:', error);
}
// Check subscription status using the store's data
const { purchases } = await NativePurchases.getPurchases({
productType: PURCHASE_TYPE.SUBS,
});
const premium = purchases.find(
(purchase) => purchase.productIdentifier === 'com.yourcompany.yourapp.premium_monthly',
);
if (premium?.isActive) {
console.log('Expires:', premium.expirationDate);
console.log('Will renew:', premium.willCancel === false);
console.log('Store state:', premium.subscriptionState);
unlockPremiumFeatures();
} else {
showPaywall();
}

按月计费(12 个月合约)

“按月付费(12 个月合约)”章节

如果您的 App Store Connect 订阅配置为按月计费且包含 12 个月合约,StoreKit 可以返回该产品的额外定价条款。请利用这些条款在购买前展示月费、合约总价以及完整的合约周期。

const yearlyProduct = products.find(
(product) => product.identifier === 'com.yourcompany.yourapp.premium_annual',
);
const monthlyCommitment = yearlyProduct?.pricingTerms?.find(
(term) => term.billingPlanType === 'monthly',
);
if (yearlyProduct && monthlyCommitment) {
console.log('Monthly charge:', monthlyCommitment.billingDisplayPrice);
console.log('Total commitment:', monthlyCommitment.commitmentInfo?.priceString);
await NativePurchases.purchaseProduct({
productIdentifier: yearlyProduct.identifier,
productType: PURCHASE_TYPE.SUBS,
billingPlanType: 'monthly',
});
}

有关完整的付费墙和权益流程,请参阅 iOS 按月合约计费方案.

  • 按月方案: 降低准入门槛,培养使用习惯
  • 按年方案: 价值更高、LTV 更高、流失率更低
  • 多档套餐: 面向不同用户群体提供基础版、高级版和旗舰版
  • 竞品分析: 研究同类应用的定价
  • 保持命名一致: company.app.tier_duration
  • 在 ID 中包含档位和时长: premium_monthly, ultimate_annual
  • 避免更改 Product ID(它们是永久的)
  • 为团队记录所有 Product ID
  • 面向家庭类应用(游戏、教育、娱乐)开启此功能
  • 评估其对营收的影响
  • 彻底测试共享行为
  • 在营销中告知用户支持共享功能
  • 翻译所有订阅名称和描述
  • 考虑不同地区的定价差异
  • 测试在所有支持语言下的显示效果
  • 使用符合当地文化习惯的营销用语
  • 保持视觉风格一致
  • 包含订阅名称和核心权益
  • 根据季节性促销进行更新
  • 与 App 的整体设计语言保持一致

单一层级(Freemium)

“单一层级 (Freemium)”章节
Free App + Premium Subscription
- Basic: Free (limited features)
- Premium Monthly: $4.99
- Premium Annual: $39.99 (save 33%)

多档定价(好、更好、最佳)

“多层级 (Good, Better, Best)”章节
- Basic Monthly: $4.99
- Premium Monthly: $9.99
- Ultimate Monthly: $19.99
- Basic Annual: $49.99
- Premium Annual: $99.99
- Ultimate Annual: $199.99

消耗型 + 订阅混合模式

“消耗型 + 订阅混合模式”章节
- Credit packs (consumable)
- Monthly subscription (unlimited credits)
- Annual subscription (unlimited + bonus features)

App 内无法加载订阅:

  • 核对 Product ID 是否完全一致(区分大小写)
  • 检查订阅是否已加入订阅组
  • 确保 Bundle Identifier 与 App Store Connect 一致
  • 创建产品后请等待 2-3 小时

无法提交订阅:

  • 填写所有必填项(名称、描述、价格)
  • 添加至少一种本地化语言
  • 确认银行/税务信息已通过审核
  • 检查是否为首次订阅(需要 App 版本)

家人共享开关已禁用:

  • 已启用(无法禁用)
  • 在订阅详情中查看
  • 若遇到问题,请联系 Apple Support

该价格档位不可用:

  • 可能在某些地区受限
  • 选择其他价格档位
  • 如有价格疑问,请联系 Apple

“Invalid Product ID” 错误:

  • 必须符合反向域名格式
  • 不能包含空格或特殊字符
  • 检查是否存在拼写错误
  • 验证所有产品 ID 是否唯一

欲了解更多详情,请参阅 Apple 关于自动续期订阅的官方文档.

如果你正在使用 创建 iOS 自动续期订阅 要规划商店审核与分发,请将其与 使用 @capgo/native-purchases 关于“使用 @capgo/native-purchases”中的原生能力, @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. 时的原生能力