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

2025年版:App Storeのアプリ内課金審査を通過する方法

iOSとAndroidでアプリ内課金を承認させるための完全ガイド。2025年における一般的なリジェクト理由、要件、ベストプラクティスを解説します。

2025年版:アプリ内課金でApp Storeの審査を通過する方法 Capgo blog illustration

App StoreやGoogle Playでのアプリ承認、特にアプリ内課金(IAP)やサブスクリプションの実装は困難を伴うことがあります。2025年はガイドラインがより厳格化しているため、審査員がどこを見ているかを理解することが不可欠です。この包括的なガイドでは、初回提出で審査を通過するために必要なすべてを網羅しています。

詳細なセットアップ手順が必要ですか? こちらの完全ガイドをご覧ください: iOS App Store レビュー | Android Play Store レビュー

IAP 搭載アプリがリジェクトされる理由

アプリ内課金(IAP)を含むアプリは、実際の金銭取引を伴うため、より厳格な審査が行われます。 Apple の App Store Review Guidelines と Google Play の収益化ポリシーによると、2025 年の主なリジェクト理由は以下の通りです:

  1. 価格設定が不明確 (リジェクト理由の 42%)
  2. サブスクリプション規約の欠落や不明瞭さ (31%)
  3. 誤解を招くUIパターン (18%)
  4. プライバシーポリシー違反 (9%)

これらの落とし穴を回避する方法を詳しく見ていきましょう。

iOS App Storeの要件

📖 iOS完全ガイド: 完全なセットアップ手順については、こちらの iOS App Store審査ガイド

1. 価格の透明性を徹底する

Appleは正確な価格開示を義務付けています の前に 購入ボタン。これは必須条件です。

Appleが求める要件:

  • 価格の明示: 「$9.99/月」
  • 請求サイクルの事前提示
  • 購入特典の内容
  • 課金が発生するタイミング
  • 解約方法を表示する

UIデザインのベストプラクティス

よくある間違い: 「購読」タップまで価格を隠す、または注釈のみに価格を記載する。

解決策:

// Example: Compliant subscription display
<div className="subscription-card">
  <h2>Premium Plan</h2>
  <p className="price">$9.99/month</p>
  <ul>
    <li>✓ Ad-free experience</li>
    <li>✓ Unlimited cloud storage</li>
    <li>✓ Priority support</li>
  </ul>
  <p className="terms">
    Renews automatically. Cancel anytime in Settings.
  </p>
  <button>Subscribe Now</button>
</div>

価格の一貫性ルール: 以下のすべてで価格を一致させる必要があります:

  • App Storeの製品情報
  • アプリ内課金画面
  • サブスクリプション管理
  • マーケティング素材

わずか1ドルの不一致でも、自動的にリジェクトされます。

2. サブスクリプションプランの提示方法

高額なプランへ誘導する「ダークパターン」の使用は、Appleにフラグを立てられます。

必須事項:

  • すべてのプランを均等に表示すること
  • プレミアムプランの事前選択をしないこと
  • 明確な機能比較
  • 安価な代替プランを見つけやすくすること

禁止事項:

  • 年額プランへの自動設定
  • 月額オプションをタップの奥に隠す行為
  • カウントダウンタイマーによる偽の緊急性の演出
  • 偽の希少性の強調(「残り3枠!」など)

3. 購入情報の復元機能

IAPを導入するすべてのアプリは、サポートへの問い合わせなしで動作する「購入情報の復元」ボタンを提供する必要があります。詳細は当社の スタートガイド.

実装ガイドを:

import { NativePurchases } from '@capgo/native-purchases';

async function restorePurchases() {
  try {
    const { customerInfo } = await NativePurchases.restorePurchases();

    if (customerInfo.activeSubscriptions.length > 0) {
      showSuccess('Purchases restored!');
      unlockPremiumFeatures();
    } else {
      showInfo('No previous purchases found.');
    }
  } catch (error) {
    showError('Restore failed. Please try again.');
  }
}

4. プライバシーへの準拠 (Section 5.1.1)

2025年はプライバシー規制がより厳格化します。Appleは現在、以下を求めています:

すべての権限について:

  • 分かりやすい説明 の前に リクエスト中
  • 具体的なユースケース(汎用的でないもの)
  • データの保存・共有方法
  • 任意かどうか

例 Info.plist 項目:

<key>NSCameraUsageDescription</key>
<string>Camera access lets you scan product barcodes for quick upgrades. Photos are never uploaded.</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>Location shows relevant local content in your Premium subscription.</string>

2025年、プライバシーラベルの不備はリジェクトの主要な原因となっています。

Android Google Play の要件

📖 Android 完全ガイド: 完全なセットアップ手順については、こちらの Android Play Store レビューガイド

1. Google Play Billing の必須利用

デジタルコンテンツ(サブスクリプション、アプリ内コンテンツ)には、 必ず Google Play Billing を使用してください。他の決済方法はリジェクト対象となります。

デジタルコンテンツ(Play Billing 必須):

  • 機能のサブスクリプション
  • アプリ内通貨
  • デジタルコンテンツ(電子書籍、音楽)
  • プレミアム機能のアンロック

物理的な商品(Play Billing 使用不可):

  • 実物の商品
  • 実在するサービス
  • 非営利団体への寄付

native-purchases を使用した実装:

Android の完全なセットアップについてはこちら: Android Sandbox テスト と サブスクリプションの作成.

import { NativePurchases } from '@capgo/native-purchases';

// Automatically uses Google Play Billing on Android
await NativePurchases.configure({
  apiKey: 'your_api_key'
});

const { products } = await NativePurchases.getProducts({
  productIdentifiers: ['premium_monthly']
});

2. 透明性のある自動更新

Google は、サブスクリプションが自動更新される旨を以下の内容を含めて明示することを求めています:

  • 課金前の更新通知
  • 価格のリマインド
  • 簡単な解約手順へのアクセス

コンプライアンスに準拠したUI:

<div className="subscription-terms">
  <p>Subscription renews automatically at $9.99/month</p>
  <p>Cancel anytime in Google Play Subscriptions</p>
  <p>Next billing date: February 15, 2025</p>
  <button onClick={openManagement}>
    Manage in Google Play
  </button>
</div>

3. プライバシーポリシーの要件

IAPアプリの必須事項:

  1. Play ConsoleへのプライバシーポリシーURLの登録
  2. アプリ内からアクセス可能なプライバシーポリシーへのリンク
  3. 「データセーフティ」セクションの正確な宣言

データセーフティで宣言すべき項目:

  • 購入履歴の収集
  • メールアドレス(レシート送付用)
  • デバイスID(不正防止目的)
  • 分析データ

アプリの説明に関するガイドライン

両プラットフォームに共通するリジェクト理由

1. メタデータの不一致

却下される理由:

  • スクリーンショットに現行バージョンにない機能が写っている
  • アプリの説明文に、実際には存在しない機能が記載されている
  • 価格がアプリ内の表記と異なっている

メタデータのチェックリスト

対策:

  • 提出のたびにスクリーンショットを更新する
  • 説明文を実際の機能と一致させる
  • すべての記載が正確か確認する
  • 古いプロモーションテキストを削除する

2. 誤解を招くマーケティング

自動リジェクトの対象:

  • 根拠のない「No.1アプリ」表記
  • 制限があるのに「無制限」と表記
  • 偽のレビューや評価
  • 競合他社の誹謗中傷

マーケティングガイドライン

ベストプラクティス: 具体的かつ事実に基づいた表現を:

  • ✓ 「5万人以上のユーザーが利用中」
  • ✗ 「世界最高のアプリ」
  • ✓ 「年間プランで最大30%お得」
  • ✗ 「期間限定!」

3. 購入フローの不備

提出前に確認すべき項目:

  • 商品が正しく読み込まれること
  • 購入が正常に完了すること
  • プレミアム機能が即座に有効化されること
  • 購入の復元が機能すること
  • エラーメッセージが分かりやすいこと
  • ネットワークエラーが適切に処理されること
// Comprehensive error handling
async function handlePurchase(productId: string) {
  try {
    const { customerInfo } = await NativePurchases.purchaseProduct({
      productIdentifier: productId
    });

    if (customerInfo.entitlements.active['premium']) {
      unlockPremiumFeatures();
    }
  } catch (error: any) {
    switch (error.code) {
      case 'USER_CANCELLED':
        // Silent - user backed out
        break;
      case 'ITEM_ALREADY_OWNED':
        await NativePurchases.restorePurchases();
        break;
      case 'NETWORK_ERROR':
        showError('Check your connection and try again.');
        break;
      default:
        showError('Purchase failed. Please try again.');
    }
  }
}

提出前のチェックリスト

提出前のチェックリスト

提出前にこのチェックリストを活用してください。詳細なテスト手順については:

テスト

  • 全サブスクリプションプランをテスト
  • 無料トライアルが正しく動作するか確認
  • 導入オファーをテスト
  • 購入情報の復元が機能するか確認
  • 複数デバイスでのテスト
  • Sandbox/テストアカウントの動作確認

価格と利用規約

  • 全プラットフォームで価格が一致
  • サブスクリプションの規約を明記する
  • 解約方法を表示する
  • 請求サイクルの表示
  • 無料トライアル期間が正確

プライバシーと権限

  • ストアにプライバシーポリシーへのリンク
  • アプリ内でプライバシーポリシーにアクセス可能
  • すべての権限に正当な理由がある
  • Info.plistの記述が明確 (iOS)
  • データセーフティの入力完了 (Android)

メタデータ

  • スクリーンショットが最新バージョンを反映していること
  • 説明と機能の一致
  • プレースホルダーの削除
  • 年齢制限の設定が正確
  • すべての主張に根拠がある

Code の品質

  • 起動時のクラッシュなし
  • 全機能が説明通りに動作
  • エラーハンドリングの実装
  • ローディング状態の表示
  • ネットワークエラーへの対応

レビュー期間の目安

レビューのタイムライン

iOS:

  • 通常: 24〜48時間
  • 混雑時: 3〜5日
  • 週末: レビューなし
  • 優先審査: 重大なバグがある場合

Android:

  • 初回: 平均7日間
  • アップデート: 通常はより迅速
  • 段階的公開: いつでもリリース可能
  • ポリシー違反: 即時停止の可能性あり

プロのヒント: 週末の遅延を避けるため、iOSアプリの申請は月曜〜水曜に行いましょう。

リジェクトされた場合の対処法

確認プロセス

ステップ 1: 問題を把握する

  • リジェクト通知を注意深く読む
  • 引用されている具体的なガイドラインを確認する
  • 提示された例をチェックする
  • フィードバックのパターンを探る

ステップ 2: 徹底的に修正する

  • 症状ではなく根本原因に対処する
  • 修正を徹底的にテストする
  • すべての変更内容を記録する
  • ビフォー・アフターのスクリーンショット

ステップ 3: プロフェッショナルに対応する

ドキュメントの提出要求

iOS Resolution Center:

Thank you for the feedback. I have addressed the issue:

Issue: Subscription pricing not clear upfront

Fix: Added explicit pricing display on subscription screen
showing "$9.99/month" before purchase button. Also added
cancellation instructions on the same screen.

Screenshots showing changes are attached. Test account
provided in App Review Notes.

Android 異議申し立て:

Subject: Policy Violation Appeal - [App Name]

I have received notification regarding [Policy X.Y].

Changes made:
1. Updated subscription UI to show all pricing upfront
2. Added clear cancellation instructions
3. Implemented restore purchases functionality

Version [X.Y.Z] addresses all concerns. Test account
credentials provided below for verification.

ステップ 4: すぐに再提出する

  • 再提出は審査が早まります
  • 通常24時間以内
  • テストアカウントを含める
  • 前回の提出内容を参照する

2025年のアップデートと新要件

iOSの変更点

AI機能の開示について (新規)

  • AI生成コンテンツのラベル表示義務
  • AIの利用目的を説明すること
  • コンテンツの安全性に関する文書化

サブスクリプション情報の透明性向上

  • プランの比較表の提示が必須
  • 安価なプランを隠さないこと
  • アップグレード/ダウングレード手順の明確化

プライバシー保護の強化

  • セクション 5.1.1 の適用強化
  • データ収集の正当性に対する審査の厳格化
  • 子供向けアプリへの規制強化

Androidの変更点

代替決済手段 (地域限定)

  • EEAおよび韓国で許可
  • Google Playの選択肢も必須
  • サービス手数料の引き下げ

サブスクリプション API の要件

  • 新規アプリは monetization.subscriptions API が必須
  • 従来の決済APIは非推奨に
  • サブスクリプション管理ツールの改善

審査通過のためのベストプラクティス

1. 適切なSDKを使用する

この @capgo/native-purchases プラグインが両プラットフォームを正しく処理していること:

// Single API for iOS and Android
await NativePurchases.configure({
  apiKey: 'your_api_key'
});

// Automatically uses correct billing system
const { products } = await NativePurchases.getProducts({
  productIdentifiers: ['premium_monthly']
});

// Platform-specific logic handled automatically
await NativePurchases.purchaseProduct({
  productIdentifier: 'premium_monthly'
});

2. 適切なエラーハンドリングを実装する

すべての購入ステータスを適切に処理すること:

  • ユーザーによるキャンセル(サイレント)
  • ネットワークエラー(リトライオプション)
  • 購入済み(復元)
  • 商品が利用不可(ユーザーに通知)
  • 支払い保留中(後で確認)

3. 明確なコミュニケーション

ユーザーが常に把握しておくべき事項:

  • 購入内容
  • 価格
  • 課金タイミング
  • 解約方法
  • トライアル終了後の挙動

4. 入念なテスト

iOS Sandbox:

  • App Store Connectでテスト用アカウントを作成
  • デバイス側で設定 (Settings > App Store > Sandbox)
  • サブスクリプション期間が短縮される点に注意

Android License Testing:

  • Play Consoleにテストアカウントを追加する
  • 「テスト購入」の通知を確認する
  • 実際の課金は発生しません

リソース

プラットフォームドキュメント

実装ガイド

詳細なレビューガイド

専門家のサポートが必要ですか?

アプリの審査で躓いていませんか?当社のチームが、アプリ内課金(IAP)の実装や審査準備に関する専門的なサポートを提供します。

コンサルティングを予約する 以下の内容について個別のアドバイスを提供します:

  • IAP実装のレビュー
  • App Store 審査の準備
  • 申請戦略のガイダンス
  • リジェクト解消のサポート
  • セットアップからテストまで徹底支援

これまで数百ものアプリの審査通過を支援してきました!

まとめ

2025年にアプリ内課金を含むアプリの審査を通過するには、細部への注意、明確なコミュニケーション、適切な実装が不可欠です。重要なポイントは以下の通りです:

  1. 透明性の確保は必須 - 価格は常に事前に提示すること
  2. プラットフォームの規約を遵守 - 必須の課金システムを使用する
  3. 徹底的なテスト - レビュアーより先に問題を発見する
  4. 明確なコミュニケーション - ユーザーを混乱させてはいけません
  5. ドキュメントを準備する - テスト用アカウントを用意しておく

このガイドに従い、適切なツールである native-purchases プラグインを使用することで、初回審査の通過率を大幅に高めることができます。

忘れないでください。レビュアーは、ユーザーを尊重しガイドラインに従っているアプリを探しています。その意識を持って開発すれば、承認は自然とついてきます。

アプリ内課金の実装でお困りですか? こちらをチェックするか、 ドキュメントはあります。 コミュニティに問い合わせてサポートを受けてください。

2025年版 App Store のアプリ内課金審査を通過する方法 の続きはこちら

使用している場合 2025年版:App Storeのアプリ内課金審査を通過する方法 ストアの承認と配信を計画するには、これを次と連携させてください: @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 の使用におけるネイティブ機能については、および Capacitor OTAアップデート: App Store審査ガイド Capacitor OTA Updates: App Store Approval Guide の実践的な文脈については。

Capacitor アプリ向けの Live Updates

Web レイヤーのバグが本番で発生したら、App Store の審査を何日も待たずに Capgo で修正を配信しましょう。ネイティブの変更は通常の審査フローに残したまま、ユーザーはバックグラウンドでアップデートを受け取れます。

最新のブログ記事

Capgoは、真にプロフェッショナルなモバイルアプリを作るために必要な最高のインサイトを提供します。