Adapty がストアとデータを同期する仕組み
Adapty はプロダクトデータを App Store および Google Play と交換しますが、この交換は常時行われるわけでも、完全なものでもありません。ほとんどの値は、ストアにプロダクトを送信したり、新しい価格をアップロードしたりするなど、何らかのアクションを実行したときにのみ更新されます。まったく更新されない値も存在するため、同じプロダクトに対して Adapty とストアで異なる価格が表示される場合があります。
Adapty がストアから読み取る情報
Adapty はプロダクトリスト、ベースプラン、価格、トランザクションをストアから読み取ります。プロダクトや価格を変更する場合は、ストアのコンソールで行ってください。国別の価格を確認するには、プロダクトを編集から価格CSVをダウンロードしてください。
| Adaptyが読み取る情報 | 取得方法(App Store) | 取得方法(Google Play) |
|---|---|---|
| プロダクトリストとレビューステータス | App Store Connect APIキー経由 | サービスアカウント経由 |
| ベースプラン | 対象外 | サブスクリプションプロダクトの一部 |
| 国別価格 | ストアプロダクトをリンクまたは編集したとき | ストアプロダクトをリンクまたは編集したとき |
| トランザクション、更新、返金 | App Storeサーバー通知経由 | リアルタイムデベロッパー通知経由 |
| 顧客が支払った価格 | 各トランザクションと共に | 各トランザクションと共に |
Adaptyがストアに書き込む内容
プロダクト、価格、初回トライアルはAdaptyで設定してから、スケジュールではなくアクションをとったタイミングでストアに反映されます。
| Adaptyが書き込む内容 | App Storeへの反映タイミング | Google Playへの反映タイミング |
|---|---|---|
| 新規プロダクト | プロダクトをストアにプッシュしたとき | プロダクトをストアにプッシュしたとき |
| 国別価格 | 価格CSVをアップロードしたとき | 価格CSVをアップロードしたとき |
| 初回オファー(無料トライアル) | 新規プロダクトをプッシュしたとき | 反映されません — 代わりにGoogle Play Consoleで作成してください |
Adapty はアップロードされた CSV とストアの現在の価格を比較し、差異のある価格のみを更新するため、ファイル全体を安全にアップロードできます。既存のサブスクライバーは、Apply to existing subscribers を選択しない限り、加入時の価格が維持されます。
Adaptyのみで設定する内容
ストアはこれらの設定を変更しません。
| 項目 | Adaptyに留まる理由 |
|---|---|
| 接続したストアプロダクトの価格 | 作成時に固定されるプレースホルダーです。プロダクトを区別するために役立ちますが、ストアには反映されません。アナリティクス、インテグレーション、SDKはすべてストアの実際の価格を使用します。 |
| アクセスレベル | Adaptyが有料コンテンツへのアクセスを付与します。ストアには同等の機能がありません。 |
| プロモーションオファーおよびウィンバックオファーのID | Adaptyは購入に署名するためにIDが必要です。オファー自体はストアのコンソールで作成します。 |
デバイス上での動作
ペイウォールを開いたときに表示される価格は、Adapty ではなく StoreKit または Google Play Billing から取得されます。ストアのコンソールで価格を変更すると、ストアが公開した時点でユーザーに反映されます。アプリをリリースし直す必要はなく、Adapty 側での変更も不要です。
逆方向では、Adapty SDK が各購入を価格・通貨・国情報とともに Adapty に送信します。Adapty はこれらの値を使用して、ユーザー自身の通貨で収益を記録します。
Stripe、Paddle、カスタムストア
StripeとPaddleの連携はトランザクションを処理するものであり、プロダクトカタログを同期するものではありません。購入はプロバイダーのWebhook経由でAdaptyに届きます。カスタムストアの場合は、独自のバックエンドから送信します。プロダクトとPrice IDはすべて手動で追加する必要があります。AdaptyにないIDは何にも紐付かないため、そのトランザクションと収益はいっさい表示されません。StripeとPaddleでは、プロダクトが存在していてもSubscription durationが設定されていない場合も同様です。どちらのケースも警告は表示されないため、販売するすべてのプロダクトにIDとdurationを必ず設定してください。
プロダクトと価格の不一致
Adapty とストアコンソールの間にある差異の中には、仕様どおりのもので顧客の支払い金額に影響しないものもあります。一方で、収益が記録されない原因となるものもあります。
| 表示される内容 | 考えられる原因 | 対処方法 |
|---|---|---|
| Adapty の価格がストアと異なる | Products 画面に表示されるのは、プロダクト作成時に入力した価格です。プロダクトをストアにプッシュした場合、Adapty はその価格を初期価格として設定します。その後は変更できないため、ストアが価格を管理するようになると両者の間にズレが生じます。現在お客様が支払う価格は国別価格です。 | 対処不要です。お客様にはストアの価格が請求され、収益レポートには実際に支払われた金額が使用されます。支払い金額を変更するには、各ストアのコンソールで価格を編集するか、価格 CSV をアップロードして両ストアを一度に変更してください。 |
| プロダクトがドロップダウンに表示されない | 考えられる原因が 3 つあります。ストアの認証情報が無効になっているとリストが空になります。直近 10 分以内に作成したプロダクトは、Adapty の App Store リストのキャッシュにまだ反映されていない場合があります。選択した Subscription duration によってリストが絞り込まれます。Lifetime・Non-Subscriptions・Consumables は買い切り型プロダクトを、それ以外の値はサブスクリプションを表示します。 | Subscription duration をストア上のプロダクトの種類に合わせて設定してください。プロダクトを作成したばかりの場合は、しばらく待ってから再試行してください。それ以外の場合はストアの認証情報を確認してください。 |
| 初回オファーが Adapty に表示されない | Adapty が初回オファーを作成するのは、新しいプロダクトをストアにプッシュするときのみです。また、Adapty が作成したオファーのみがリストに表示されます。ストアのコンソールで直接設定したオファーは Edit product ウィンドウに表示されません。 | 対処不要です。初回オファーはお客様が条件を満たすと自動的に適用されるため、Adapty に追加する必要はありません。 |
| 割引が購入時に適用されなかった | お客様が条件を満たしていない可能性があります。判断はストア側で行われ、Adapty は関与しません。また、App Store のプロモーションオファーが、アプリ内購入キーで署名できなかったために適用されなかった可能性もあります。 | キーがアップロードされており有効であることを確認したうえで、ストアでオファーの条件を見直してください。 |
| 価格変更後に Stripe のトランザクションが表示されなくなった | Stripe で価格を変更すると新しい price_id が作成されます。Adapty は product_id と price_id の完全一致でイベントを照合するため、新しい価格のイベントはどのプロダクトにも一致しません。一方、Stripe はウェブフックを正常に配信済みとして報告します。 | Adapty のプロダクトに新しい price_id を追加してください。追加するまで収益が記録されません。Stripe を参照してください。 |
| お客様が購入したのにアクセスレベルが付与されない | 購入したストアのプロダクト ID が Adapty のプロダクトに紐づいていません。Adapty は自動作成したプロダクト行に対して購入を記録しますが、その行にはアクセスレベルが設定されていません。 | 正確なストアのプロダクト ID を使って Adapty にプロダクトを作成し、アクセスレベルを割り当ててください。 |
| 更新が届かなくなった | いずれかのストア認証情報が無効になっています。それぞれの認証情報が連携の異なる部分を担っています。 | 停止している部分を特定して、その認証情報のみを置き換えてください。更新が届かなくなった場合を参照してください。 |
アップデートが届かなくなった場合
Adapty は機能しなくなったクレデンシャルにフラグを立てません。各クレデンシャルはやり取りの一部を担うため、症状を見ればどれを更新すべきかがわかります。
| 停止した機能 | 置き換えるクレデンシャル |
|---|---|
| プロダクト一覧、レビューステータス、またはプロダクトと価格のストアへのプッシュ | App Store: App Store Connect APIキー。Google Play: サービスアカウントキーファイル。 |
| 新規トランザクション、更新、および返金 | App Store: サーバー通知。Google Play: リアルタイムデベロッパー通知。 |
| 購入時のプロモーションオファー | App Store: アプリ内購入キー。 |
| すべてのユーザーの購入検証 | App Store: 共有シークレット。Google Play: サービスアカウントキーファイル。 |
ストアコンソールで認証情報を置き換えても、Adaptyには反映されません。App settingsで新しい認証情報をアップロードしてください。