コンテンツにジャンプ

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

GitHub

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

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

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

Before creating subscriptions, you must:

  1. Create a subscription group to organize your subscriptions
  2. Have an active Apple Developer Program membership
  3. Complete banking and tax information in App Store Connect
  1. Navigate to Subscriptions

    In App Store Connect, select your app and go to Monetize > Subscriptions.

    Select your subscription group or create a new one if needed.

    Navigate to subscriptions

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

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

  3. 基本情報を入力

    参照名: このサブスクリプションの内部使用の説明的な名前 (顧客に表示されません)

    • 例: “プレミアム月額”、 “アルティメット年間”、 “ベーシック プラン”

    製品 ID: このサブスクリプションのユニークな識別子 (後で変更できません)

    • フォーマット: com.yourcompany.yourapp.premium_monthly
    • 説明的な、下線付きの小文字の名前を使用してください
    • native-purchases プラグインの設定に必要です

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

  4. 保護期間の設定

    サブスクリプションの有効期間を選択してください:

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

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

  5. 価格設定の設定

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

    基本地域:主な市場を選択(通常は国)

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

    • Appleは自動的に他の通貨に変換します
    • Appleの価格階層から選択
    • 顧客の価値観と市場レートを考慮

    価格設定を構成

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

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

    有効にする場合

    • 家族向けに適切なコンテンツです
    • 価値を高めたい
    • ビジネスモデルがサポートしている

    有効にしない場合

    • 個人のみが利用できるサブスクリプションです
    • ユーザーに個別のコンテンツを提供する
    • 最大限の収益をユーザーあたり得たい
  7. ローカライズを追加する

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

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

    説明: サブスクリプションが含むbriefの説明

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

    ローカライズを追加する

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

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

    • App Store サブスクリプションページで表示されます
    • アプリのデザインに合わせてください
    • サブスクリプション名を明確にするために含めてください
  9. 保存して提出

    クリック 保存 サブスクリプションを作成するために

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

    • 新しいアプリバージョンとともに提出する必要があります
    • 次のApp Store提出で含めてください
    • Cannot submit independently

    For Subsequent Subscriptions:

    • Can be submitted directly from the Subscriptions page
    • Don’t require a new app version
    • Available after first subscription is approved

Your subscription will have one of these statuses:

StatusDescriptionCan Test?
Missing Metadata未完全セットアップYes (sandbox)
提出可能完了したが提出されていないYes (sandbox)
レビュー待ちアップルに提出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',
});
}

フル ペイウォールとエンタイトルメントフローについては、 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%)

グッド、ベター、ベストの多段階

Multi-Tier (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)

製品IDが正確に一致していることを確認してください (大文字小文字区別あり)

  • サブスクリプションがサブスクリプション グループ内にあることを確認してください
  • App Store Connect の bundle identifier が正しいことを確認してください
  • 2-3 時間後に製品を作成した後、待ってください
  • 2-3 時間後に製品を作成した後、待ってください

サブスクリプションの提出ができません:

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

ファミリーシェアリングの切り替えが無効化されました:

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

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

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

“Invalid Product ID”エラー:

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

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

Create iOS Auto-Renewable Subscriptionから続けてください

Create iOS Auto-Renewable Subscriptionの続きのセクション

Capgoを使用している場合 Create iOS Auto-Renewable Subscriptionを使用しています to plan store approval and distribution, connect it with 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, Using @capgo/capacitor-in-app-review for the native capability in Using @capgo/capacitor-in-app-review, @capgo/capacitor-native-market for the implementation detail in @capgo/capacitor-native-market, and Using @capgo/capacitor-native-market for the native capability in Using @capgo/capacitor-native-market.