App Storeの問題
0:10:00App Storeの設定に関する問題は、多くの場合、商品の承認、StoreKitの設定、bundle IDの不一致に関連しています。このセクションでは、最も一般的なiOS特有の問題を取り上げます。
問題1:商品が承認されていない、または販売できない
エラーメッセージ
warning: RevenueCat SDK is configured correctly, but contains some issues you might want to address
Warnings:
• Your products are configured in RevenueCat but aren't approved in App Store Connect yet.
This prevents users from making purchases in production.
Please ensure all products are approved and available for sale in App Store Connect.よくある原因
- 商品が審査待ち:商品を提出したものの、まだAppleの承認を受けていない場合です。
- 商品が却下された:App審査の過程で商品が却下された場合です。
- 契約が未締結:Paid Applications Agreementに署名していない場合です。
- 銀行/税務情報が未完了:App Store Connectで財務情報の入力を完了していない場合です。
- 商品が販売不可の状態:商品は存在するものの、"Available for Sale"と表示されていない場合です。
解決手順
ステップ1:App Store Connectで商品のステータスを確認
- App Store Connectに移動します。
- 対象のアプリを選択します。
- In-App Purchases(一回限りの購入)またはSubscriptionsに移動します。
- 各商品のステータスを確認します。
- Ready to Submit:アプリのバイナリと一緒に商品を提出する必要があります。
- Waiting for Review:提出済みで、Appleの承認待ちです。
- Approved / Ready to Sell:準備完了です。
- Rejected:却下の理由を確認し、問題を解決します。
ステップ2:Paid Applications Agreementへの署名
- App Store Connectで行います。
- Agreements, Tax, and Bankingをクリックします。
- 保留中の契約(赤い警告アイコン)がないか確認します。
- "Paid Applications"の横にあるRequestをクリックします。
- 規約に記入して同意します。
ステップ3:銀行および税務情報の入力を完了
- Agreements, Tax, and Bankingで行います。
- Bankingセクションを完了します(銀行口座情報を追加します)。
- Tax Formsを完了します(米国はW-9、米国以外の地域はW-8BENです)。
- Appleの確認を待ちます(24〜48時間かかる場合があります)。
ステップ4:商品を審査に提出
- 商品は必ずアプリのバイナリと一緒に提出する必要があります。
- App Store Connectでアプリのバージョンに移動します。
- 該当バージョンにアプリ内課金を追加します。
- アプリを審査に提出します。
- 商品はアプリと一緒に審査されます。
ステップ5:テストにStoreKit Configurationを使用(推奨)
承認を待つ代わりに、ローカルテストにはStoreKit Configuration Fileを使用します。
- XcodeでFile → New → Fileに移動します。
- StoreKit Configuration Fileを選択します。
- 一致するIDで商品を追加します。
- スキーム設定でStoreKit構成ファイルを有効にします。
- シミュレーターと実機の両方で商品がすぐに動作します。
問題2:StoreKit Configuration Fileの問題
エラーメッセージ
Error: Product not found in StoreKit configuration
StoreKit.Error: Unknown product identifierよくある原因
- 商品IDの不一致:StoreKitファイルのIDがRevenueCat/App Store Connectと一致していない場合です。
- StoreKitファイルが未有効化:構成ファイルは存在するものの、スキームで有効になっていない場合です。
- サンドボックスの代わりにプロダクションを使用:アプリがローカルファイルではなくApp Store Connectから取得しようとしている場合です。
解決手順
ステップ1:商品IDが一致しているか確認
- Xcodeで
.storekitファイルを開きます。 - 商品IDが次の値と完全に一致しているか確認します。
- App Store Connectの商品ID
- RevenueCatダッシュボードの商品ID
- IDは大文字と小文字を区別するため、一文字も違わず一致している必要があります。
ステップ2:スキームでStoreKit Configurationを有効化
- XcodeでProduct → Scheme → Edit Schemeに移動します。
- 左側のパネルでRunを選択します。
- Optionsタブに移動します。
- StoreKit Configurationの下で
.storekitファイルを選択します。 - 再度ビルドして実行します。
ステップ3:商品の詳細を正しく構成
StoreKitファイルで、各商品に次の項目があるか確認します。
- 正しいProduct ID
- 適切なType(消耗型、非消耗型、自動更新サブスクリプション)
- 有効なPriceおよびLocale
- サブスクリプションの場合:Subscription Duration
問題3:bundle IDの不一致
エラーメッセージ
Error: The bundle identifier does not match the app configured in RevenueCat
Error: Unable to fetch products for bundle ID: com.example.wrongappよくある原因
- RevenueCatのbundle IDの誤り:ダッシュボードに誤ったバンドル識別子が入力されている場合です。
- プロビジョニングプロファイルの不一致:別のbundle ID用のプロファイルを使用している場合です。
- 複数のアプリターゲット:誤ったターゲットのbundle IDを使用している場合です。
解決手順
ステップ1:Xcodeでbundle IDを確認
- Xcodeのナビゲーターでプロジェクトを選択します。
- アプリのターゲットを選択します。
- Generalタブに移動します。
- Bundle Identifierフィールドを確認します。
- この値を正確にコピーします。
ステップ2:RevenueCatでbundle IDを確認
- RevenueCatダッシュボードに移動します。
- 対象のプロジェクトに移動します。
- Apps & providers → App Storeに移動します。
- bundle IDがXcodeのbundle IDと完全に一致しているか確認します。
- 必要であれば修正します。
ステップ3:プロビジョニングプロファイルを確認
- XcodeでSigning & Capabilitiesタブに移動します。
- プロビジョニングプロファイルがbundle IDと一致しているか確認します。
- 自動署名を使用している場合は、Xcodeが自動的に処理します。
- 手動署名を使用している場合は、Apple Developerポータルから正しいプロファイルをダウンロードします。
問題4:サンドボックステストの問題
エラーメッセージ
Error: Cannot connect to iTunes Store
StoreKitError: Purchase failed - Invalid sandbox accountよくある原因
- サンドボックスアカウントにログインしていない:デバイスにサンドボックスアカウントが設定されていない場合です。
- プロダクションアカウントを使用:サンドボックステスターではなく通常のApple IDでログインしている場合です。
- サンドボックスアカウントが未作成:サンドボックステスターアカウントが存在しない場合です。
- 誤ったサンドボックス構成:デバイスがサンドボックステスト向けに正しく設定されていない場合です。
解決手順
ステップ1:サンドボックステスターアカウントを作成
- App Store Connectに移動します。
- Users and Accessに移動します。
- 左側のサイドバーでSandbox Testersをクリックします。
- +をクリックして新しいテスターを追加します。
- 詳細情報を入力します(一意のメールアドレスを使用します。実在するメールアドレスである必要はありません)。
- テスターを保存します。
ステップ2:プロダクションのApp Storeからログアウト
- iOSデバイスでSettingsに移動します。
- 上部の名前をタップします。
- 下にスクロールしてSign Outをタップします。
- ここではサンドボックスアカウントでログインしません。アプリが表示するプロンプトを待ちます。
ステップ3:プロンプトが表示されたらログイン
- アプリをデバッグモードで実行します。
- 購入を試みます。
- Apple IDの入力プロンプトが表示されたら、サンドボックステスターの資格情報を使用します。
- デバイスは以降のテスト購入のためにこの情報を記憶します。
ステップ4:より高速なテストにTest Storeを使用(代替手段)
サンドボックス特有の煩わしさなしに、より安定したテストを行うにはRevenueCat Test Storeを使用します。
- サンドボックスアカウントが不要です。
- 購入結果が決定的です。
- シミュレーターで動作します。
- Appleのサーバーに依存しません。
問題5:すべてのフィールドを入力したのに"Missing Metadata"ステータスになる
症状
必須フィールドをすべて入力したつもりでも、App Store Connectでサブスクリプション商品が"Missing Metadata"と表示されます。このステータスでは商品を審査に提出できません。
Missing Metadata状態の商品をRevenueCatは取得できますか?
環境によって異なります。
- サンドボックスおよびStoreKit Configuration:可能です。"Missing Metadata"状態の商品でも、サンドボックス環境とStoreKit Configurationファイルでテストできます。
- プロダクション:不可能です。プロダクションで商品を取得するには"Approved"状態である必要があります。"Missing Metadata"の商品は審査に提出できないため、問題を解決するまでプロダクションには決して反映されません。
よくある原因
"Missing Metadata"ステータスは、もどかしいほど曖昧です。すべての項目が完了しているように見える場合でも発生する、最も一般的な原因は次のとおりです。
- 審査用スクリーンショットがまだ処理中:最も見落とされがちな原因です。スクリーンショットがUIに表示されていても、App Store Connectの内部ではまだ処理中の場合があります。5〜10分待ってからページを再読み込みします。
- サブスクリプションのローカライズの欠如:サブスクリプションのDisplay NameとDescriptionを少なくとも1つの言語で追加する必要があります。サブスクリプション → App Store Localizationセクションに移動し、表示名と説明を追加します。
- 審査用スクリーンショットの欠如:各サブスクリプション商品には、アプリ内のサブスクリプションを示すスクリーンショットが必要です。このスクリーンショットは、アプリバージョンのスクリーンショットではなく、サブスクリプションのReview Informationセクションにアップロードする必要があります。
- サブスクリプショングループのローカライズの欠如:Subscription Group自体にもローカライズされた表示名が必要です。サブスクリプショングループに移動し、App Store Localizationセクションを確認します。
- 価格の欠如:商品に少なくとも1つのSubscription Priceが構成されているか確認します。
解決手順
ステップ1:審査用スクリーンショットを確認
最も見落とされやすいポイントです。スクリーンショットがApp Store Connectに表示されていても、まだ処理中の場合があります。
- App Store Connectでサブスクリプション商品に移動します。
- Review Information → Screenshotまでスクロールします。
- スクリーンショットが表示されている場合は、削除してから再度アップロードします。
- 処理が完了するまで5〜10分待ちます。
- ページを再読み込みし、ステータスが変わるか確認します。
ステップ2:サブスクリプションのローカライズを確認
- App Store Connectでサブスクリプション商品に移動します。
- App Store Localizationをクリックし、少なくとも1つの言語に次があるか確認します。
- Display Name(ユーザーに表示される名前)
- Description(サブスクリプションに含まれる内容)
- Subscription Groupレベルも確認します。グループ名をクリックし、ローカライズされたDisplay Nameと、任意項目のCustom Display Nameがあるか確認します。
ステップ3:すべての必須フィールドを確認
次のチェックリストで漏れている項目がないか確認します。
- ☐ Reference Name:商品の内部用の名前です。
- ☐ Product ID:RevenueCatと一致する識別子です。
- ☐ Subscription Duration:週間、月間、年間などです。
- ☐ Subscription Price:少なくとも1つの価格が構成されている必要があります。
- ☐ App Store Localization:少なくとも1つの言語の表示名と説明です。
- ☐ Subscription Group Localization:グループの表示名です。
- ☐ Review Information:スクリーンショットがアップロードされ、処理が完全に終わっているか確認します(5〜10分待ちます)。
- ☐ Review Notes(任意ですが推奨):Appleの審査担当者向けの簡単な説明です。
よくある問題のクイックリファレンス
| 問題 | 考えられる原因 | 解決方法 |
|---|---|---|
| サブスクリプションに"Missing Metadata"と表示される | 審査用スクリーンショットがまだ処理中です。 | サブスクリプションのReview Informationセクションでスクリーンショットを削除してから再度アップロードします。Appleの処理が完了するまで5〜10分待ち、その後ページを再読み込みします。スクリーンショットがすぐに表示されても、内部ではまだ処理中の場合があります。 |
| サブスクリプションに"Missing Metadata"と表示される | サブスクリプションまたはグループのローカライズが欠けています。 | 商品レベルとグループレベルのローカライズを両方確認します。各サブスクリプションには、App Store Localizationの下にDisplay NameとDescriptionが必要です。サブスクリプショングループにも独自のローカライズされたDisplay Nameが必要です。上記の詳細ガイドを参照してください。 |
| 商品が空で返される | Paid Applications Agreementに署名していません。 | App Store Connect → Business → Agreements, Tax, and Bankingで"Paid Applications"がActive状態か確認します。保留中の場合は、すべての必須フィールドを完了し、Appleの確認を最大48時間待ちます。 |
| 商品が空で返される | 商品をまだ審査に提出していません。 | アプリ内課金の商品は必ずアプリのバイナリと一緒に提出する必要があります。App Store Connectでアプリのバージョンに商品を追加し、審査に提出します。承認されるまでは、ローカルテストにStoreKit Configuration Fileを使用します。 |
| 商品が空で返される | 銀行および税務情報が未完了の状態です。 | App Store Connect → BusinessでBankingセクション(銀行口座情報)とTax Forms(米国はW-9、米国以外の地域はW-8BEN)を完了します。すべてのセクションに緑色のチェックマークが表示される必要があります。 |
| 商品IDの不一致 | RevenueCatのbundle IDがXcodeプロジェクトと一致していません。 | Xcodeでターゲット → General → Bundle Identifierに移動します。この値をそのままコピーし、RevenueCatダッシュボード → Apps & providers → App Storeに入力します。両方の値は一文字も違わず一致している必要があります(大文字と小文字を区別します)。 |
| "Cannot connect to iTunes Store" | サンドボックステスターではなくプロダクションのApple IDを使用しています。 | テストデバイスでSettings → App Store → サインアウトに移動します。購入中にアプリがプロンプトを表示したら、App Store Connect → Users and Access → Sandbox Testersで作成したサンドボックステスターの資格情報でログインします。 |
| "Cannot connect to iTunes Store" | Appleのサンドボックスサーバーが一時的にダウンしています。 | サンドボックスの障害が発生していないか、Apple System Statusページで確認します。Appleのサンドボックスは断続的に不安定になることが知られています。しばらく待ってから再試行するか、オフラインテストにStoreKit Configuration Fileを使用します。 |
| StoreKitの商品が読み込まれない | StoreKit Configuration Fileがスキームで有効になっていません。 | Xcode → Product → Scheme → Edit Scheme → Run → Optionsタブに移動します。StoreKit Configurationの下で.storekitファイルを選択します。"None"に設定されていると、アプリはローカルテストではなくサンドボックスを使用します。 |
| StoreKitの商品が読み込まれない | StoreKitファイルの商品IDがRevenueCatと一致していません。 | .storekitファイルを開き、各商品のProduct IDがRevenueCatダッシュボード → Product Catalog → Productsに構成されているIDと完全に一致しているか確認します。 |
| RevenueCatに購入が記録されない | In-App Purchase Keyが欠けています(StoreKit 2に必要です)。 | RevenueCatダッシュボード → Apps & providers → 対象のiOSアプリで、"In-app purchase key configuration"セクションにSubscriptionKey_*.p8ファイルをアップロードします。このキーはSDK v5.0以降で必須です。 |
| RevenueCatに購入が記録されない | 誤ったIssuer IDが構成されています。 | App Store Connect → Users and Access → Integrations → In-App Purchaseで、ページ上部に表示されているIssuer IDをコピーします。これをRevenueCatダッシュボードにそのまま貼り付けます。 |
| "PURCHASE_NOT_ALLOWED"エラー | デバイスの制限またはペアレンタルコントロールが有効になっています。 | テストデバイスでSettings → Screen Time → Content & Privacy Restrictions → iTunes & App Store Purchases → In-app Purchasesに移動します。Allowに設定されているか確認します。 |
| サンドボックス購入の無限ループ | サンドボックスアカウントが認証ループに陥っています。 | デバイスでサンドボックスからログアウトした後(Settings → App Store)、アプリを削除して再インストールします。App Store Connectで新しいサンドボックステスターを作成し、新しい資格情報で再試行します。 |
| サブスクリプションの自動更新が早すぎる | これは正常なサンドボックスの動作です。 | サンドボックスではサブスクリプション期間が短縮されます。1週間 = 3分、1ヶ月 = 5分、1年 = 1時間です。サブスクリプションは最大6回まで自動更新された後に期限切れになります。これはより高速なテストのためのAppleの設計です。 |
| 資格情報が無効というエラー | 誤った種類のキーをRevenueCatにアップロードしました。 | 正しいキーをアップロードしているか確認します。In-App Purchase KeyはSubscriptionKey_*.p8、App Store Connect APIはAuthKey_*.p8です。この2つを混同しないでください。ファイル名でどの種類のキーかが分かります。 |
| "The receipt is not valid" | レシートに購入した商品が含まれないStoreKitサンドボックスのバグです。 | これは既知のAppleサンドボックスの問題です。App Store Connect → Users and Access → Sandbox Testersで新しいサンドボックステストユーザーを作成します。デバイスでログアウトしてから再度ログインします。購入を再試行します。サンドボックスの障害は一時的なものです。コミュニティのディスカッションを参照してください。 |
| "STORE_PROBLEM: There was a problem with the App Store" | App Storeのサンドボックス環境が不安定な状態に陥っています。 | デバイスでサンドボックスのAppleアカウントからログアウトし、再度ログインします。一時的な状態をクリアするためにデバイスを再起動します。アプリを再インストールします。問題が続く場合は、新しいサンドボックステストユーザーを作成します。コミュニティのディスカッションを参照してください。 |
| "You are not authorised to make purchases in Sandbox" | サンドボックステスターが誤ったApple Developerアカウントで作成されています。 | App Store Connect → Users and Access → Sandbox Testersで、正しいApple Developerアカウント(アプリを所有するアカウント)でサンドボックステストユーザーを作成します。問題が続く場合は、新しいサンドボックスユーザーを作成し、アプリを削除してから再インストールします。コミュニティのディスカッションを参照してください。 |
| App Store審査での却下 | アプリ内課金の商品をアプリのバイナリと一緒に審査に提出していません。 | アプリを提出する際に、アプリ内課金の商品を一緒に含めます。すべての契約に署名した状態で、商品が"Ready to Submit"状態であるか確認します。サンドボックスの不安定さが原因で却下された場合は、再提出します。コミュニティのディスカッションを参照してください。 |
App Store設定クイックチェックリスト
次のチェックリストでApp Storeの構成を点検します。
- ☐ Paid Applications Agreementに署名しました。
- ☐ 銀行情報の入力を完了しました。
- ☐ 税務フォームを提出し、確認を受けました。
- ☐ App Store Connectに商品を作成しました。
- ☐ App Store ConnectとRevenueCatの商品IDが一致しています。
- ☐ 商品を審査に提出しました(またはStoreKit Configurationを使用しています)。
- ☐ "Missing Metadata"ステータスがありません(スクリーンショットの処理、ローカライズ、価格設定を確認します)。
- ☐ XcodeとRevenueCatのbundle IDが一致しています。
- ☐ プロビジョニングプロファイルがbundle IDと一致しています。
- ☐ サンドボックステスターアカウントを作成しました。
- ☐ 正しいサンドボックスの資格情報でテストしています。
- ☐ テストデバイスでプロダクションのApp Storeにログインしていません。