コンテンツに進む

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

GitHub

iOSアプリで自動更新可能な購入は、利用者がコンテンツ、サービス、またはプレミアム機能にアクセスできるようにするために繰り返し発生します。このガイドでは、App Store Connectで購入を作成する方法について説明します。

自動更新可能な購入は、利用者がキャンセルするまで、各請求期間の終わりで自動的に更新されます。以下のようなものが適しています。

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

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

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

    App Store Connect からアプリを選択し、 収益化 > サブスクリプション.

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

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

  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提出に含める
    • 独立して提出することはできません

    続次サブスクリプション:

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

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

状況概要テスト可能か?
メタデータが不足していますセットアップが不完全ですサンドボックスで有効
提出可能です提出済みですが提出されていませんサンドボックスで有効
レビュー待ちアップルに提出しましたサンドボックスで有効
レビュー中Appleによるレビュー中サンドボックスで有効です。
承認済み購入可能Yes
Rejected却下サンドボックスで有効です。

サブスクリプションをテストするには、sandboxモードで実行できます。サブスクリプションが “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();
}

月額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をドキュメント化する
  • 家族向けのアプリ(ゲーム、教育、娯楽)向けに有効にする
  • 収益への影響を考慮する
  • 共有の挙動を徹底的にテストする
  • マーケティングで共有可能性を伝える
  • すべてのサブスクリプション名と説明を翻訳する
  • 地域価格差を考慮する
  • すべてのサポート言語で表示テスト
  • 文化的に適切なマーケティング言語を使用する
  • 一貫した視覚的スタイルを維持する
  • サブスクリプション名と主な利点を含める
  • シーズンごとのプロモーション用にアップデートする
  • アプリの全体的なデザイン言語にマッチする

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

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

1レベル(フリーミアム)

「単一レベル(フリーミアム)」
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 の bundle identifier が一致することを確認する
  • 商品を作成した後 2-3 時間待つ

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

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

ファミリーシェアリングの切り替えが無効化されている場合:

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

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

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

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

  • 逆ドメイン形式でなければなりません
  • スペースや特殊文字を含めることはできません
  • 入力ミスを確認
  • 製品IDが全製品で一意であることを確認

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

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

「iOS 自動更新購入」から続けて作成

あなたが使用している iOS 自動更新サブスクリプションの作成 ストアの承認と配布を計画するために使用している場合 Using @capgo/native-purchases native capability を使用する場合に @capgo/native-purchases です。 @capgo/capacitor-アプリ内レビュー @capgo/capacitor-アプリ内レビューの実装詳細のために @Capgo capgo capacitor-アプリ内レビューを使用 native capability については、@capgo/capacitor-in-app-review を使用します。 @capgo/capacitor-native-market @capgo/capacitor-native-marketの実装詳細について @capgo/capacitor-native-market native capability を使用するために @capgo/capacitor-native-market です。