コンテンツにジャンプする

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

GitHub

インストール、同期、ソースマークダウンガイドを含む

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

概要

概要

  • 自動更新可能なサブスクリプションは、以下のものに適しています。
  • プレミアムコンテンツと機能
  • 広告なしのエクスペリエンス
  • クラウドストレージと同期
  • ストリーミングサービス

プロフェッショナルツールとユーティリティ

「前提条件」

サブスクリプションを作成する前に、以下の条件を満たす必要があります:

  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. ローカライズを追加

    すべての言語をサポートするアプリで、購入の表示情報を追加します:

    購入表示名: 顧客向けの名前 (例: "プレミアム月" )

    説明: この購入が含まれるbriefの説明

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

    ローカライズを追加

  8. App Store プロモーショナル イメージ (オプション)

    この購入のプロモーショナル イメージをアップロードしてください (312x390 ピクセル):

    • App Storeの購入ページに表示
    • アプリのデザインに合わせる
    • 購入名を明確にする
  9. 保存して提出

    クリック 保存 購入を登録する

    最初の購入:

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

    続行購入について:

    • 購入ページから直接提出できる
    • 新しいアプリバージョンが必要ない
    • 最初の購入承認後利用可能

購入状況は次のいずれかになります:

状況説明テストできる?
メタデータが不足しています設定が不完全ですsandboxモードで有効です
提出できる準備が整っています提出されていませんが完了していますsandboxモードで有効です
レビューの待ちアップルに提出しましたsandboxモードで有効です
レビュー中アップルでレビュー中です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、低い脱落率、より良い価値
  • 複数の階層: Basic、Premium、Ultimate など、異なるユーザー セグメント用
  • 競争分析: 同類アプリの価格を調べる
  • 一貫した命名規則を使用: 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 つのローカライゼーションを追加する
  • 銀行/税務情報が承認されていることを確認する
  • 最初のサブスクリプション (アプリのバージョンが必要)

ファミリー シェアリングの切り替えが無効になっています:

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

価格帯が利用できない:

  • 一部の地域では制限されている可能性があります
  • 別のレベルを選択
  • 価格に関する質問はAppleにご連絡ください

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

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

次のステップ

次のステップ

追加リソース

「追加リソース」

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

「iOS の自動更新可能なサブスクリプションを作成する」から続けてください

「「iOS の自動更新可能なサブスクリプションを作成する」から続けてください」

Capacitor を使用している場合 iOS 自動更新サブスクリプションを作成する アプリのストア承認と配布を計画するには、 Using @capgo/native-purchases Using @capgo/native-purchases のネイティブ機能 @capgo/capacitor-in-app-review Using @capgo/capacitor-in-app-review の実装詳細 Using @capgo/capacitor-in-app-review Using @capgo/capacitor-in-app-review のネイティブ機能 @capgo/capacitor-native-market Using @capgo/capacitor-native-market の実装詳細 Using @capgo/capacitor-native-market Using @capgo/capacitor-native-market のネイティブ機能