iOS App StoreのIAPに関する審査ガイドライン
このプラグインのインストール手順とフルマークダウンガイドのセットアッププロンプトをコピーする。
App Storeへのアプリの承認には、特にインアプリ購入とサブスクリプションの実装に関して、Appleのガイドラインに注意する必要があります。このガイドでは、初回提出でレビューを通過するために必要なすべての情報をカバーしています。

提出する前に
提出する前に購入フローのAppleレビュー前に、まずアプリレコード自体が完了していることを確認してください。
App Store ConnectにプライバシーポリシーURL
- App Store Connectに追加する 追加する Add a Privacy Policy URL in App Store Connect
- Finish App Store Connect Setup サポート URL __CAPGO_KEEP_0__
- 質問紙を完了して、アプリを公開できるようにしてください 年齢制限 App Reviewの連絡先情報と、明確なレビューノートを追加してください
- ログインが必要な場合、レビュー中に期限切れにならないデモアカウントを提供してください 注意 注意
- ログインが必要な場合、レビュー中に期限切れにならないデモアカウントを提供してください App Reviewの連絡先情報と、明確なレビューノートを追加してください
実際のスクリーンショットを用意する
「実際のスクリーンショットを用意する」のセクション- 現在レビュー中のビルドから現在のスクリーンショットを使用する
- iPhoneの場合、
1290 x 2796(6.7インチ)はデフォルトのサイズが最も簡単 - あなたのアプリがiPadで動作する場合、iPadのスクリーンショットもアップロードする
- 現在受け入れられている大きなiPadサイズには
2064 x 2752(13インチ)と2048 x 2732(12.9インチ)があります - iPhoneのスクリーンショットを拡大してiPadのサポートを偽装することはない
テストフライトでレビュアー・ジャーニーをDry-Runする
テストフライトでレビュアー・ジャーニーをDry-Runする実機で実行する際にAppleが実行するパスを完全に再現する
- テストフライトから最新のビルドをインストールする
- レビューするアカウントでサインインする
- 非表示のジェスチャーやデバッグメニューなしで壁紙に到達する
- 購入、復元、サブスクリプション管理フローを完了する
- パーミッションが拒否された場合でもアプリが正しく動作することを確認する
インアプリ購入の要件
インアプリ購入の要件価格の透明性(重要)
価格の透明性(重要)Apple は、購入前に明確な価格の披露を要求します:
必須要素:
- 購入ボタン前に精確な価格を表示する
- 請求頻度を明示する(例: “$9.99/月”)
- ユーザーが得るものを明確に述べる
- 料金の発生時期を示す
一般的な拒否理由:
「サブスクリプション価格は明確かつ事前提示でなければなりません。」
:::注意価格の一貫性 すべての価格は次の場所で一致する必要があります:
- App Store メタデータリスト
- インアプリ購入画面
- サブスクリプション管理画面
1 ドル以下の差額(ストアリスト(4.99ドル)とアプリ(5.99ドル))が自動的に却下を引き起こす。
__CAPGO_KEEP_0__
サブスクリプション プラン プレゼンテーションサブスクリプション プラン プレゼンテーション
- 必要な披露
- すべての利用可能なサブスクリプション タイヤが一緒に表示される
- 各レベルごとの機能の明確な比較
- UI のトリックを通じてプレミアム タイヤに自動的に切り替えない

購入の復元と法的リンクを含むペイウォール
import { NativePurchases } from '@capgo/native-purchases';
function SubscriptionScreen() { return ( <div> <h2>Choose Your Plan</h2>
{/* Show all tiers equally */} <PlanCard title="Basic" price="$4.99/month" features={['Feature A', 'Feature B']} /> <PlanCard title="Premium" price="$9.99/month" features={['All Basic', 'Feature C', 'Feature D']} highlighted={false} // Don't force premium />
{/* Clear cancellation info */} <Text> Cancel anytime in Settings > Subscriptions. No refunds for partial periods. </Text> </div> );}購入を復元する
購入を復元するセクション必要な実装:
すべてのIAPアプリは、ユーザーが購入を復元する方法を提供する必要があります。サポートに連絡することなく。
import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function restorePurchases() { try { await NativePurchases.restorePurchases();
const { purchases } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.SUBS, });
const activeSub = purchases.find( (purchase) => purchase.isActive && purchase.expirationDate, );
if (activeSub) { unlockPremiumFeatures(); showMessage('Purchases restored successfully!'); return; }
const { purchases: iaps } = await NativePurchases.getPurchases({ productType: PURCHASE_TYPE.INAPP, }); const hasIap = iaps.some((purchase) => purchase.productIdentifier === 'premium_unlock');
showMessage( hasIap ? 'Premium purchase restored!' : 'No previous purchases found.', ); } catch (error) { showError('Failed to restore purchases. Please try again.'); }}
// Add a visible "Restore Purchases" button<Button onClick={restorePurchases}> Restore Purchases</Button>一般的な拒否理由
セクション「一般的な拒否理由」1. アプリがクラッシュしたり機能が壊れたりする
セクション「1. アプリがクラッシュしたり機能が壊れたりする」なぜ失敗するのか:
- アプリが起動時にクラッシュする
- 購入フローが完了しない
- __CAPGO_KEEP_0__はスクリーンショットで表示されている機能が実際に機能しません。
__CAPGO_KEEP_1__:
- __CAPGO_KEEP_2__実機 (シミュレータではありません) でテストしてください。
- __CAPGO_KEEP_3__すべてのサブスクリプションフローをエンドツーエンドでテストしてください。
- __CAPGO_KEEP_4__受領確認が正常に動作することを確認してください。
- __CAPGO_KEEP_5__ネットワークエラーのハンドリングを確認してください。
2. メタデータの不一致
「2. メタデータの不一致」というセクションなぜ失敗するのか:
- スクリーンショットは現在のビルドに含まれない機能を表示しています。
- 説明では実際には存在しない機能を言及しています。
- メタデータの価格設定とアプリ内価格設定が異なります。

予防対策:
// Document exactly what's in each tierconst SUBSCRIPTION_FEATURES = { basic: ['Ad-free', 'Cloud sync', 'Basic themes'], premium: ['Ad-free', 'Cloud sync', 'All themes', 'Priority support']};
// Use these in both your app AND App Store description3. 許可の説明が不足している理由
セクション「3. 許可の説明が不足している理由」なぜ失敗するのか?
- カメラ/位置情報/健康情報のリクエストを行う際に説明が不足している
- 許可のリクエストが画面を何層も深くに埋め込まれている
- 許可の説明が曖昧または一般的である
予防対策:
更新してください Info.plist 明確な説明とともに:
<key>NSCameraUsageDescription</key><string>Camera access is needed to scan product barcodes for quick subscription upgrades.</string>
<key>NSLocationWhenInUseUsageDescription</key><string>Location helps us show relevant local content in your Premium subscription.</string>4. 誤解を招くマーケティング
「4. 誤解を招くマーケティング」のセクションなぜ失敗するのか
- 証拠なしで「世界で#1のアプリ」などと主張する
- 「無制限」な機能が実際には制限がある
- 「今すぐ購入しなければ!」などの急ぎ足


予防策
- 具体で事実に基づいた説明をしてください
- 証拠のない超越的な表現を避けます
- ユーザーに偽の限界感を与えることは避けます
5. 画面外のキャンセルプロセス
「5. 画面外のキャンセルプロセス」のセクションなぜ失敗するのか
- キャンセル方法が示されていない
- キャンセルボタンが隠されているか、非表示になっている
- Appleのネイティブフローを使用しない複数ステップのキャンセルプロセス
防止策
// Always inform users about cancellationfunction SubscriptionInfo() { return ( <div> <h3>How to Cancel</h3> <ol> <li>Open iPhone Settings</li> <li>Tap your name at the top</li> <li>Tap Subscriptions</li> <li>Select this app and tap Cancel</li> </ol>
<p>Or manage directly in the App Store app.</p>
<Button onClick={openSubscriptionManagement}> Manage Subscription in Settings </Button> </div> );}
async function openSubscriptionManagement() { // Direct link to iOS subscription management await NativePurchases.showManageSubscriptions();}プライバシーとデータ使用状況(セクション 5.1.1)
プライバシーとデータ使用に関するセクション (5.1.1)2025年、Appleはプライバシー要件を厳格化しました。
必須の披露
必須の披露すべてのパーミッションの場合:
- なぜ必要なのか (具体的な用途)
- 使用される時期
- データの保存/共有方法
- オプションか必須か
例: 正しいパーミッションのフロー
クリップボードにコピーasync function requestCameraPermission() { // Show explanation BEFORE requesting await showDialog({ title: 'Camera Access', message: 'We need camera access to let you scan barcodes for quick product lookup. Your photos are never uploaded or stored.', buttons: ['Not Now', 'Allow'] });
// Then request permission const result = await Camera.requestPermissions(); return result.camera === 'granted';}プライバシー栄養ラベル
「プライバシー栄養ラベル」セクションアプリストアのプライバシー栄養ラベルが正確に反映されるように、以下の情報を確認してください。
- 購入履歴の収集
- 請求書のための電子メールアドレス
- 不正防止のためのデバイスID
- 分析のための使用データ
2025年には不正確なプライバシー栄養ラベルが一般的な却下理由です。データ収集を慎重に検討してください。
提出前にチェックリスト
「提出前にチェックリスト」セクション
-
すべての購入フローのテスト
- 各サブスクリプション階層を購入する
- 無料試用版をテストする
- 初期割引が正しく適用されることを確認する
- 購入を復元することをテストする
- Family Sharing (有効の場合) が正しく機能することを確認する
- 複数のデバイスでテストする
-
価格の一貫性を確認する
- App Store メタデータがインアプリ価格と一致することを確認する
- すべての通貨が正しいことを確認する
- 無料試用期間の説明と一致することを確認する
- 初期割引の条件が正確であることを確認する
-
すべてのコピーを確認する
- __CAPGO_KEEP_0__を削除
- 請求されるのはテスト可能な請求であることを確認
- 文法とスペルのチェック
- 現在のビルドに合わせた説明を確認
- 競合他社の言及を削除
-
権限のテスト
- 必要な権限のみを要求
- 権限を要求する前に明確な説明を表示
- 「拒否」フローをテスト(アプリはまだ機能するはず)
- Info.plistの説明が明確であることを確認
-
テストアカウントの準備
- レビュー期間中有効なまま残るレビュー用アカウントの作成
- __CAPGO_KEEP_0__のログイン資格情報をApp Review情報に記録する
- __CAPGO_KEEP_0__のレビュアーがpaywallに到達し購入フローを完了できることを確認する
- __CAPGO_KEEP_0__の追加アカウントやアプリ固有のswitchを必要に応じてNotesフィールドに含める
-
メタデータを確認する
- スクリーンショットが現在のUIと一致する
- サポートURLに実際の連絡先情報が含まれている
- プライバシーポリシーURLが埋められている
- アプリの年齢制限がビルド内のコンテンツと一致している
- アプリプレビュー動画(必要に応じて)が現在のバージョンを表示している
- 説明が機能を正確に説明している
- プライバシーポリシーがアプリ内とストアリストの両方からアクセスできる
-
詳細なレビュー用メモを書く
Contact:Name: Jane DeveloperEmail: review@yourapp.comPhone: +1 555-0100Test Account:Email: reviewer@test.comPassword: TestPass123!This account does not expire during review.Testing Instructions:1. Log in with test account above2. Tap "Upgrade to Premium" button3. Select "Monthly Premium" subscription4. Complete purchase (no charge in sandbox)5. Verify premium features unlockNote: Subscription pricing is clearly shown before purchase.Cancellation instructions are in Settings > Account.
レビューのタイムライン
レビューのタイムラインのセクション
標準レビュー: 24-48時間 ピーク時: 3-5日(App Storeの休日リリース) 週末: レビューが処理されません 優先レビュー: 緊急修正用(App Store Connect経由でリクエスト)
App Store Connect でよく見るステータス:
Waiting for ReviewIn ReviewPending Developer ReleaseRejected
2026 年の提出焦点
2026 年の提出焦点現在の焦点分野
現在の焦点分野1. サブスクリプションの明確さ
- プランの比較が必要です
- 安いオプションを隠す「暗いパターン」はありません
- ダウングレード/アップグレードのパスは明確です
2. メタデータの正確性
- スクリーンショットはレビュー中のビルドと一致する必要があります
- iPadスクリーンショットは、iPadのサポートが有効になっている場合に必要です
- サポートURLとプライバシーポリシーは、提出前にすでに公開されている必要があります
3. プライバシーとレビュー詳細の品質
- SDKが実際に収集するものと一致するプライバシー情報が提示されている必要があります
- アプリレビューの連絡先情報と注釈は、最初の提出時に完了している必要があります
- デモクレデンシャルは、レビュー期間中に有効なまま残す必要があります
4. 提出の準備
- Appleは、定期的に最小限のSDK要件を更新しているため、現在の締切を確認する前にリリースビルドをアップロードする必要があります
- TestFlightは、提出前に実際のレビュ modalパスを確認する最も安全な場所です
ネイティブ購入プラグインのベストプラクティス
Native Purchases プラグインのベスト プラクティスエラー処理を適切に行う
エラー処理の実装import { NativePurchases, PURCHASE_TYPE } from '@capgo/native-purchases';
async function handlePurchase(productId: string) { try { const transaction = await NativePurchases.purchaseProduct({ productIdentifier: productId, productType: PURCHASE_TYPE.SUBS, });
// Success await validateReceiptOnServer(transaction.receipt); showSuccess('Subscription activated!'); unlockFeatures();
} catch (error: any) { // Handle specific error cases if (error.code === 'USER_CANCELLED') { // User cancelled - don't show error console.log('Purchase cancelled by user'); } else if (error.code === 'PAYMENT_PENDING') { showInfo('Payment is pending. Please check back later.'); } else if (error.code === 'PRODUCT_ALREADY_PURCHASED') { // Restore instead await NativePurchases.restorePurchases(); } else { // Show user-friendly error showError('Unable to complete purchase. Please try again.'); } }}ロード中の状態を表示
ロード中の状態の表示function PurchaseButton({ productId }: { productId: string }) { const [loading, setLoading] = useState(false);
const handlePurchase = async () => { setLoading(true); try { await NativePurchases.purchaseProduct({ productIdentifier: productId }); } finally { setLoading(false); } };
return ( <button onClick={handlePurchase} disabled={loading}> {loading ? 'Processing...' : 'Subscribe Now'} </button> );}利用規約を明確に表示
利用規約の表示function SubscriptionTerms() { return ( <div className="terms"> <p> Subscription automatically renews unless cancelled at least 24 hours before the end of the current period. </p> <p> Your account will be charged for renewal within 24 hours prior to the end of the current period. </p> <p> Subscriptions may be managed by the user and auto-renewal may be turned off in Account Settings after purchase. </p> <p> <a href="/terms">Terms of Service</a> | <a href="/privacy/">Privacy Policy</a> </p> </div> );}アプリが却下された場合
アプリが却下された場合の処理問題解決の手順
「問題解決の手順」セクション-
再提出の理由を丁寧に読みます
- __CAPGO_KEEP_0__を特定する
- Appleが指摘した問題を正確に理解する
-
根本的な問題を修正する
- 根本的な問題を修正するだけでは十分ではない
- 修正を徹底的にテストする
- 変更した内容を記録する
-
Resolution Centerで回答する
Thank you for your feedback. I have addressed the issue:Issue: Subscription pricing not clear upfrontFix: Added explicit pricing display on subscription selectionscreen showing "$9.99/month" before purchase button. Also addedcancellation instructions on the same screen.The changes are in this submission and can be tested using theprovided test account. -
すぐに再提出する
- __CAPGO_KEEP_0__は通常24時間以内にレビューされます
- __CAPGO_KEEP_0__は通常24時間以内にレビューされます
拒否処理
拒否処理のセクション再提出が不正と考える場合:

- App Store Connectで「拒否」ボタンをクリック
- 明確な証拠を提示する:
- コンプライアンスを示すスクリーンショット
- 特定のガイドラインへの参照
- 要件を満たしていることを説明する
- 専門的で事実に基づいた
- テストアカウントを含める場合は、機能が見つけるのが難しい場合

追加のリソース
「追加のリソース」セクション- Apple App Store レビュー ガイドライン
- イン アプリ購入ガイドライン
- サブスクリプションのベスト プラクティス
- App Store Connect ヘルプ
- スクリーンショットの仕様
- プラットフォーム バージョン情報
サポート
「サポート」セクションあなたがまだ問題が解決しない場合:
- ドキュメントを Native Purchasesドキュメント
- チェック 一般的なトラブルシューティングの問題
- Apple Developer Supportに連絡して、ガイドラインの説明を求めます
専門家の助けが必要ですか?
セクションのタイトル “専門家の助けが必要ですか?”アプリのレビューに苦労しているか、個別の支援が必要ですか? 私たちのチームと電話会議を予約してください 専門的なサポートを受けるために:
- IAPの実装のレビューと最適化
- App Storeのレビュー準備と戦略
- 提出物チェックリストのレビュー
- 却下解決と異議申し立て
- 完全なテストと検証
私たちの専門家は、数百のアプリをレビュー通過に成功させました!
iOS App Store Review Guidelines for IAPから続けてください
セクション「iOS App Store Review Guidelines for IAPから続けてください」あなたが使用している場合 iOS App Store Review Guidelines for IAP ストアの承認と配布を計画するために使用し、@__CAPGO_KEEP_0__/native-purchases を@capgo/native-purchasesのネイティブ機能と接続する Using @capgo/native-purchases @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のネイティブ機能について