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が有料コンテンツへのアクセスを付与します。ストアには同等の機能がありません。
プロモーションオファーおよびウィンバックオファーのIDAdaptyは購入に署名するために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 によってリストが絞り込まれます。LifetimeNon-SubscriptionsConsumables は買い切り型プロダクトを、それ以外の値はサブスクリプションを表示します。Subscription duration をストア上のプロダクトの種類に合わせて設定してください。プロダクトを作成したばかりの場合は、しばらく待ってから再試行してください。それ以外の場合はストアの認証情報を確認してください。
初回オファーが Adapty に表示されないAdapty が初回オファーを作成するのは、新しいプロダクトをストアにプッシュするときのみです。また、Adapty が作成したオファーのみがリストに表示されます。ストアのコンソールで直接設定したオファーは Edit product ウィンドウに表示されません。対処不要です。初回オファーはお客様が条件を満たすと自動的に適用されるため、Adapty に追加する必要はありません。
割引が購入時に適用されなかったお客様が条件を満たしていない可能性があります。判断はストア側で行われ、Adapty は関与しません。また、App Store のプロモーションオファーが、アプリ内購入キーで署名できなかったために適用されなかった可能性もあります。キーがアップロードされており有効であることを確認したうえで、ストアでオファーの条件を見直してください。
価格変更後に Stripe のトランザクションが表示されなくなったStripe で価格を変更すると新しい price_id が作成されます。Adapty は product_idprice_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で新しい認証情報をアップロードしてください。