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

Create iOS Auto-Renewable Subscription

GitHub

自動更新可能なサブスクリプションは、iOS アプリ内で利用可能なコンテンツ、サービス、またはプレミアム機能への繰り返しアクセスを提供します。このガイドでは、App Store Connect でサブスクリプションを作成する方法について説明します。

自動更新可能のサブスクリプションは、各請求期間の終わりで自動的に更新されます。ユーザーがキャンセルするまで続きます。

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

前提条件

前提条件

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

  1. サブスクリプション グループを作成する サブスクリプションを整理する
  2. アクティブな Apple Developer Program メンバーシップを持っている
  3. App Store Connectで銀行と税金の情報を完了
  1. サブスクリプションに移動

    App Store Connectでアプリを選択し、 Monetize > サブスクリプション.

    必要に応じてサブスクリプショングループを選択または新規作成

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

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

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

  3. 基本情報を入力

    参考名: 内部使用のための説明名 (顧客に表示されない)

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

    製品ID: このサブスクリプションの固有の識別子 (後で変更できない)

    • フォーマット: com.yourcompany.yourapp.premium_monthly
    • 使用する説明的、小文字の名前でアンダースコアを使用
    • native-purchases プラグインの設定に必要

    サブスクリプションの詳細を入力

  4. 期間の設定

    利用可能なオプションからサブスクリプションの期間を選択:

    • 1 週間
    • 1 か月
    • 2 か月
    • 3 か月
    • 6 か月
    • 1 年

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

  5. 価格設定を設定する

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

    基本地域: 主にあなたの国を選択する (基本的には)

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

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

    価格設定を構成する

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

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

    有効にする場合:

    • 家族向けに適切なコンテンツ
    • 価値提案を増やすには
    • ビジネスモデルがサポートしている

    有効にするには

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

    サブスクリプションを表示する情報をすべての言語に対応させる

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

    説明: サブスクリプションの内容の簡単な説明

    • 簡潔で利点を強調する
    • 主な機能を言及する
    • 価値提案を強調する

    地域化を追加する

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

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

    • App Storeのサブスクリプションページで表示
    • アプリのデザインに合致する
    • サブスクリプション名を明確にする
  9. Save and Submit

    Click Save サブスクリプションを作成するにはこちらをクリックしてください。

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

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

    サブスクsequentサブスクリプション用:

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

サブスクリプションの状態

サブスクリプションの状態

サブスクリプションは次のいずれかの状態になります。

状態説明テスト可能?
メタデータが不足していますセットアップが不完全ですはい(サンドボックス)
提出可能提出されていないものの完了Yes (sandbox)
レビュー中アップルに提出中Yes (sandbox)
アップルによるレビュー中Yes (sandbox)承認
販売可能Yes却下
変更が必要です.Yes (sandbox)Yes (sandbox)

アプリ内での使用

アプリ内での使用

サブスクリプションを使用するには、製品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',
});
}

For the full paywall and entitlement flow, see 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)

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

  • 製品IDが正確に一致していることを確認 (大文字小文字区別)
  • サブスクリプションがサブスクリプション グループに含まれていることを確認
  • App Store Connectのバンドル識別子が正しいことを確認
  • 製品を作成した後 2-3 時間待つ

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

  • 必要なすべてのフィールド (名前、説明、価格) を入力する
  • 少なくとも 1 つのローカライゼーションを追加する
  • 銀行/税務情報が承認されていることを確認する
  • __CAPGO_KEEP_0__のサブスクリプションを確認してください (アプリのバージョンが必要です)

ファミリー シェアリングの切り替えが無効です:

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

価格の階層が利用できません:

  • 一部の地域では制限される可能性があります
  • 代替の階層を選択してください
  • 価格に関する質問はAppleにご相談ください

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

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

詳細は、 自動更新可能なサブスクリプションに関する公式のAppleドキュメントを参照してください.

__CAPGO_KEEP_0__からiOSの自動更新可能なサブスクリプションを作成する

__CAPGO_KEEP_0__からiOSの自動更新可能なサブスクリプションを作成するセクション

__CAPGO_KEEP_0__を使用している場合 iOSの自動更新可能なサブスクリプションを作成 ストアの承認と配布を計画するために__CAPGO_KEEP_0__を使用している場合、 capgo/native-purchasesを使用して capgo/native-purchasesのnative capabilityのために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のネイティブ機能