メインコンテンツにジャンプ

iOSの自動更新サブスクリプションを作成する

GitHub

iOSアプリで自動更新可能なサブスクリプションは、利用者がキャンセルするまで、各請求期間の終わりで自動的に更新されます。このガイドでは、App Store Connectでサブスクリプションを作成する方法について説明します。

自動更新可能なサブスクリプションは、利用者がキャンセルするまで、各請求期間の終わりで自動的に更新されます。以下のような場合に適しています。

  • プレミアムコンテンツと機能
  • 広告なしのエクスペリエンス
  • クラウドストレージと同期
  • ストリーミングサービス
  • プロフェッショナルツールとユーティリティ

サブスクリプションを作成する前に、次のことが必要です:

  1. サブスクリプショングループを作成する サブスクリプションを組織する
  2. Apple Developer Programの有効な会員資格を持つ
  3. App Store Connectで銀行と税務情報を完了する
  1. サブスクリプションに移動する

    App Store Connectにアクセスし、 Monetize > サブスクリプション.

    必要に応じて新しいサブスクリプションを作成するか、サブスクリプション グループを選択する。

    サブスクリプションに移動する

  2. 新しいサブスクリプションを作成する

    サブスクリプション グループの隣にある + アイコンをクリックして新しいサブスクリプションを追加する。

  3. 基本情報を入力する

    参照名: 内部使用の説明名 (顧客に表示されません)

    • : 例: “プレミアム月額”, “アナイタル年額”, “ベーシックプラン”

    : このサブスクリプションの固有識別子 (後で変更できません):

    • : 説明的な、下線付きの小文字名を使用してください com.yourcompany.yourapp.premium_monthly
    • : native-purchases プラグインの設定に必要
    • : サブスクリプションの詳細を入力してください

    : 期間の設定

  4. : 選択可能なオプションからサブスクリプションの期間を選択してください:

    : 1 週間

    • : 1 か月
    • 1 年
    • 2 か月
    • 3 か月
    • 6 か月
    • 1 年

    期間は、ユーザーが請求される頻度を決定します。

  5. 価格設定を設定

    設定 サブスクリプション価格を追加 価格設定を設定するには:

    基本地域: 主に国としてのあなたの国を選択

    価格: 価格設定を設定する

    • Appleは自動的に他の通貨に変換します
    • Appleの価格階層から選択してください
    • 市場価格と認知価値を考慮してください

    価格設定を設定する

  6. ファミリー シェアリング (オプション)

    ファミリー シェアリングを有効にするかどうかを決定します。これにより、最大 6 人の家族メンバーがサブスクリプションにアクセスできます。

    有効にする場合:

    • ファミリー向けに適切なコンテンツであることを確認してください
    • 価値提案を高めたい
    • あなたのビジネスモデルがそれをサポートしている

    有効にするのはNGの場合

    • サブスクリプションは個人の利用のみ
    • コンテンツはユーザーに合わせてカスタマイズ
    • ユーザーあたりの収益を最大化したい
  7. ローカライズを追加

    アプリがサポートするすべての言語でサブスクリプション情報を表示

    サブスクリプション表示名顧客向けの名前(例:「プレミアム月額」)

    説明サブスクリプションに含まれる内容の簡単な説明

    • __CAPGO_KEEP_0__を簡潔かつ利点に焦点を当ててください
    • __CAPGO_KEEP_0__の重要な機能を言及する
    • __CAPGO_KEEP_0__の価値提案を強調する

    __CAPGO_KEEP_0__を追加する

  8. App Storeのプロモーショナル画像(任意)

    このサブスクリプションのプロモーショナル画像をアップロードしてください(312x390ピクセル):

    • App Storeのサブスクリプションページで表示
    • アプリのデザインに合致するようにする
    • サブスクリプション名を明確にするために含める
  9. __CAPGO_KEEP_0__と__CAPGO_KEEP_1__を保存して送信

    __CAPGO_KEEP_2__ __CAPGO_KEEP_3__ 新しいアプリのバージョンとともに送信する必要があります

    初回のサブスクリプション用:

    • アプリの新しいバージョンが必要ありません
    • App Storeの次の提出に含める
    • 独立して送信することはできません

    サブスクの後続:

    • Subscriptionsページから直接送信できます
    • アプリの新しいバージョンが必要ありません
    • 初回のサブスクリプションが承認された後利用可能

サブスクリプション ステータス

サブスクリプション ステータス

あなたのサブスクリプションは次のいずれかのステータスになります。

ステータス説明テスト可能?
メタデータが不足していますセットアップが不完全ですはい(サンドボックス)
提出に準備できました完了しましたが提出されていませんはい(サンドボックス)
レビュー待ちアップルに提出中はい (サンドボックス)
レビュー中アップルによってレビュー中はい (サンドボックス)
承認販売可能はい
却下修正が必要はい (サンドボックス)

Missing Metadata

Ready to Submit

を表示しても、サブスクリプションをテストできます!

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();
}

クリップボードにコピー

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',
});
}

月額12ヶ月コミットメントプランのセクションタイトルです。 iOS 月額コミットメント請求計画.

  • 月額プラン: 入り口が低く、習慣を形成する
  • 年間プラン: 高価値、より高いLTV、低い脱落率
  • 複数の階層: 基本、プレミアム、アルティメットの異なるユーザー セグメント用
  • 競争分析: 類似アプリの価格を調べる
  • 一貫した命名規則を使用する: company.app.tier_duration
  • IDに階層と期間を含める: premium_monthly, ultimate_annual
  • 製品IDを変更しない (永久保存)
  • 製品IDをすべてチームでドキュメント化する
  • ファミリー向けアプリ (ゲーム、教育、娯楽) に対して有効にする
  • 収益への影響を考慮する
  • シェアリングの動作を徹底的にテストする
  • マーケティングで共有機能を伝える

ローカライゼーション

「ローカライゼーション」
  • すべてのサブスクリプション名と説明を翻訳
  • 地域の価格差を考慮
  • すべてのサポート言語で表示をテスト
  • 文化的に適切なマーケティング言語を使用

プロモーション用画像

「プロモーション用画像」
  • 一貫した視覚的スタイルを維持
  • サブスクリプション名と主な利点を含める
  • シーズンごとのプロモーション用に更新
  • アプリのデザイン言語を一貫させる

共通のサブスクリプションパターン

共通のサブスクリプションパターン

フリーミアム

フリーミアム
Free App + Premium Subscription
- Basic: Free (limited features)
- Premium Monthly: $4.99
- Premium Annual: $39.99 (save 33%)

グッド、ベター、ベスト

グッド、ベター、ベスト
- 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)

アプリ内でサブスクリプションが読み込まれない場合:

  • __CAPGO_KEEP_0__が完全に一致する場合 (大文字小文字区別あり)
  • __CAPGO_KEEP_1__がサブスクリプション グループ内にあることを確認する
  • __CAPGO_KEEP_2__がApp Store Connectと一致することを確認する
  • 製品を作成した後2-3時間待つ

サブスクリプションを提出できない:

  • __CAPGO_KEEP_3__がすべて入力されていることを確認する (名前、説明、価格)
  • __CAPGO_KEEP_4__が少なくとも1つ入力されていることを確認する
  • __CAPGO_KEEP_5__が承認されていることを確認する
  • __CAPGO_KEEP_6__が最初のサブスクリプション (アプリバージョンが必要) であることを確認する

ファミリー共有の切り替えが無効化されました:

  • すでに有効化されています (無効化できません)
  • サブスクリプション詳細を確認してください
  • Appleサポートに連絡してください (詰まっている場合)

価格帯が利用できません:

  • 一部の地域では利用できない可能性があります
  • 代替の価格帯を選択してください
  • 価格に関する質問はAppleにご相談ください

「無効な製品ID」エラー:

  • 逆ドメイン形式でなければなりません
  • スペースや特殊文字を含めることはできません
  • タイプミスを確認してください
  • すべての製品で一意性を確認する

__CAPGO_KEEP_0__

追加リソース

詳細は 公式のAppleドキュメント.

Create iOS Auto-Renewable Subscription

Create iOS Auto-Renewable Subscription

Capacitorを使用している場合 Capacitor Capacitor Using @capgo/native-purchases for the native capability in Using @capgo/native-purchases, @capgo/capacitor-in-app-review for the implementation detail in @capgo/capacitor-in-app-review, Capgoで使用する@capgo/capacitor-in-app-review Capgoで使用する@capgo/capacitor-in-app-reviewのためのネイティブ機能 Capgoで使用する@capgo/capacitor-native-market Capgoで使用する@capgo/capacitor-native-marketの実装詳細 Capgoで使用する@capgo/capacitor-native-market Capgoで使用する@capgo/capacitor-native-marketのためのネイティブ機能