App Store インテグレーションのトラブルシューティング
この記事では、App Store インテグレーションに関する一般的な問題を説明します。各セクションでは、症状・根本原因・解決方法を紹介します。
認証情報を保存する際の「The provided field values are incorrect」エラー
アプリ内課金の認証情報を保存すると、Adaptyは In-app purchase Issuer ID、In-app purchase Key ID、および .p8 ファイルから認証トークンを生成し、Appleに対して検証を行います。このエラーは、Appleがそのトークンを拒否したことを意味します。以下の順序で各値を確認してください:
- キーの種類。 キーは、App Store Connect の Users and Access → Integrations → In-App Purchase で取得した In-App Purchase キーである必要があります。Team keys タブのキー(App Store Connect API キー)には固有の Issuer ID と Key ID がありますが、Apple はここではそのキーを拒否します。そのキーは設定のステップ 6で使用します。
- 同じアカウントとチーム。 Issuer ID、Key ID、.p8 ファイルは、アプリと同じ App Store Connect チームのものを使用してください。代理店アカウントなど別のチームで生成されたキーは検証に失敗します。
- .p8 ファイル本体。 App Store Connect からダウンロードしたファイルをそのままアップロードしてください。キーの内容をペーストして再作成したファイルは失敗することがよくあります。App Store Connect ではキーのダウンロードは 1 回のみ可能なので、元のファイルを紛失した場合は新しいキーを生成してください。
- Bundle ID。 Bundle ID は App Store Connect に登録されているアプリの Bundle ID と完全に一致する必要があります。スペースなしのリバース DNS 形式(例:
com.company.app)で指定してください。 - 隠れた文字。 各 ID は App Store Connect から直接コピーしてください。余分な空白や似た文字(例:数字の
1の代わりに小文字のl)があると検証が失敗します。
この検証では、アプリ内課金キーの3つのフィールドとバンドルIDのみを使用します。App-Specific Shared SecretおよびApp Store Connect APIキー(App Store Connect API key)はこの検証に関与しないため、どちらを再入力しても結果は変わりません。
プロダクトが表示されない
以下の 2 つの症状は、同じ根本原因を示しています。
- App Store Connect の API キーは正しく設定されているのに、Adapty がプロダクトをまったく取得できない。
- App Store Connect にプロダクトが存在するのに Adapty に表示されない、または期待より少ない数しか表示されない。購入を試みると SDK が「Product Id not found」と報告する。
最も一般的な根本原因は Apple の契約が未署名 であることです — 有料契約・税務フォーム・銀行口座情報が保留中または未署名の状態になっています。契約が保留中の場合、App Store Connect API はプロダクト関連のエンドポイントに対してサイレントに 403 を返します。Adapty には明確なエラーが表示されず、プロダクトはサイレントに除外されます。
App Store Connect → Agreements, Tax, and Banking にアクセスして、保留中の契約にすべて署名してください。その後、Adapty の App settings → iOS SDK で再同期を行ってください。
App Store Server Notifications が「Delayed」と表示される
App Store Connect で、App Store Server Notifications のステータスが Delayed と表示されることがあります。これは、Apple がサブスクリプションイベントの通知(更新・キャンセル・請求エラーなど)の送信を遅延させており、キューに入れられた通知が遅れて届くことを意味します。
インストール統計には影響しません。Adapty はインストールをサーバー側の通知からではなく、アプリの初回起動時にカウントします。
更新やキャンセルのデータが遅れている場合、Delayed ステータスが最も可能性の高い原因です。Apple がバックログを処理するにつれて、通常は自動的に解消されます。
購入は成功したのにユーザーがアクセスを失う
ユーザーが支払いを完了し、一時的にアクセスできる状態になりますが、アプリが Adapty からプロファイルを再取得した次のタイミングでアクセスを失ってしまいます。Apple は決済を受け取っていますが、トランザクションが Adapty に届いていないため、プロファイルにはアクセスレベルが付与されておらず、売上もレポートに反映されません。
原因はたいてい次のどれかです:
- 認証情報が機能しなくなった場合: AdaptyがAppleとのトランザクション検証に失敗しました。アップデートが届かなくなった場合の手順に従って認証情報を確認し、購入検証に使用しているものを差し替えてください。
- プロダクトがAdaptyに紐付けられていない場合: 購入されたストアのプロダクトIDがAdaptyのプロダクトに紐付けられていないため、付与すべきアクセスレベルが存在しません。正確なApp Store Product IDでプロダクトが登録されており、アクセスレベルが割り当てられていることを確認してください。
Adapty SDK はトランザクションの再試行を続けるため、記録できた時点でアクセスが回復します。
Adapty の価格が App Store と一致しない
Adapty のプロダクト編集ページの price フィールドは、プロダクトの追加方法によって動作が異なります。
Adapty でプロダクトを作成してダッシュボードからストアにプッシュする場合、この価格が初期ストア価格として使用されます。
すでにストアに存在するプロダクトを追加する場合、この価格はプレースホルダーです。Adapty のアナリティクス・インテグレーション・SDK は、App Store から取得した実際の価格を使用します。App Store の価格変更はプレースホルダーに同期されません。また、現時点ではダッシュボードからプレースホルダーを編集することもできません。
CSV の価格エクスポートが空になる
CSV の価格エクスポートに列ヘッダーしか含まれていない場合、App Store Connect の API キーが完全に設定されていません。ステップ 6 — App Store Connect API キーを追加する を参照してください。
新しいプロダクトを App Store にプッシュできない
Adapty はダッシュボードでプロダクトを作成したときに、App Store Connect にプッシュできます。App Store インテグレーションが完全に設定されていない場合、プッシュオプションはブロックされます。以下の 2 つの設定が必要です。
- Apple app ID: ステップ 1 — Bundle ID と Apple app ID を入力する で設定してください。
- App Store Connect API key: ステップ 6 — App Store Connect API キーを追加する で設定してください。