メインコンテンツにスキップ

iOS Auto-Renewable サブスクリプションの作成

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

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

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

    説明: サブスクリプションが含まれる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%)

Multi-Tier (Good, Better, Best)

「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 のバンドル ID が正しいことを確認する
  • コピー
  • 作成後2-3時間待ってください

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

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

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

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

価格帯が利用できない:

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

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

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

追加リソース

「追加リソース」

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

Create iOS Auto-Renewable Subscriptionから続けて

「Create iOS Auto-Renewable Subscriptionから続けて」

Capacitorを使用している場合 iOS 自動更新サブスクリプションの作成 アプリの販売と配布の計画に役立つため、 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.