AppsFlyer

AppsFlyer は、モバイルアトリビューションとマーケティング分析のリーディングプラットフォームです。マーケティングキャンペーンのデータを収集・整理するサードパーティサービスであり、企業がキャンペーンのパフォーマンスを一か所で確認できるようにします。

Adaptyは、各ストアからのサブスクリプションイベントを一か所で追跡できる完全なデータセットを提供しています。Adaptyを使えば、サブスクライバーの行動を簡単に把握し、好みを理解して、ターゲットを絞った効果的なコミュニケーションに活用できます。この連携により、AppsFlyerでサブスクリプションイベントを追跡し、キャンペーンが生み出す収益を正確に分析できます。

AdaptyとAppsFlyerの連携は、主に2つの方向で機能します。

  1. AppsFlyerからアトリビューションデータを受信する
    アプリのコードでAppsFlyerアトリビューションをAdaptyに送信する設定を完了すると、AdaptyはAppsFlyerからアトリビューションデータを受信し始めます。このデータはユーザーのプロファイルページで確認できます。
c2991f6-CleanShot_2023-08-04_at_16.29.202x.webp
  1. AppsFlyerにサブスクリプションイベントを送信する
    Adaptyは、連携で設定されたすべてのサブスクリプションイベントをAppsFlyerに送信できます。これにより、AppsFlyerのダッシュボード内でこれらのイベントを追跡できるようになります。この連携は、広告キャンペーンの効果を評価するのに役立ちます。

設定のセットアップ

AdaptyをAppsFlyerに接続する

AppsFlyerとの連携をセットアップするには:

  1. Adapty ダッシュボードで Integrations -> AppsFlyer を開きます。

  2. トグルをオンにして連携を有効にします。

  3. 次のステップは認証情報の設定です。
    iOSの場合、App Store Connectで Apple ID を確認します(App Store Connect でアプリページを開き、General セクションの App Information ページに移動して、画面左下の Apple ID を確認してください)。

43a5cc6-apple_id.webp

3.2. コピーした Apple ID を、Adapty ダッシュボードの iOS App ID フィールドに貼り付けます。

61bff5a-appsflyer_iOS_app_id.webp

AppsFlyer API 2を使用している場合は、AppsFlyerが旧バージョンを間もなく廃止するため、API 3に切り替える必要があります。切り替えるには、AppsFlyer S2S API リストで API 3 を選択してください。

  1. iOSとAndroidの両方について、AppsFlyerサイトを開いてログインします。

  2. ダッシュボード右上の Your account name -> Security Center をクリックします。

1c18c50-appsflyer_security_center.webp
  1. Manage your account security ウィンドウで、Manage your AppsFlyer API and S2S tokens ボタンをクリックします。

  2. S2Sトークンがある場合はステップ12に進んでください。ない場合は、New token ボタンをクリックします。

7934920-appsflyer_new_token.webp
  1. New token ウィンドウで、トークンの名前を入力します。この名前は自分の参照用のみです。

  2. Choose type リストで S2S を選択します。

  3. Create new token ボタンをクリックして新しいトークンを保存します。

  4. Tokens ウィンドウで、S2Sトークンをコピーします。

  5. Adapty ダッシュボードで、コピーしたS2Sキーを Dev key for iOSDev key for Android フィールドに貼り付けます。

a7d1c31-appsflyer_dev_keys.webp
  1. Save ボタンをクリックして変更を保存します。

    AppsFlyerにはサーバー間連携用のサンドボックスモードがありません。そのため、サンドボックスの Dev Key にはAppsFlyer内で別のアプリ/アカウントが必要です。サンドボックスイベントを同じアプリに送信したい場合は、本番環境とサンドボックスで同じキーを使用してください。

Adaptyはデフォルトで一部のイベントをAppsFlyerの標準イベントにマッピングします。この設定により、AppsFlyerは追加設定なしで使用している各広告ネットワークにイベントを転送できます。

もう一つ重要な点として、AppsFlyerは26時間以上古いイベントをサポートしていません。そのため、26時間以上前のイベントはAdaptyからAppsFlyerに送信されますが、イベントの日時は現在のタイムスタンプに置き換えられます。

イベントとタグの設定

認証情報の下には、AdaptyからAppsFlyerに送信できる3つのイベントグループがあります。必要なものをオンにするだけです。Adaptyが提供するイベントの完全なリストはこちらで確認できます。

1b0c777-CleanShot_2023-08-11_at_14.56.362x.webp

Adaptyが提供するデフォルトのイベント名を使用することを推奨します。ただし、必要に応じてイベント名を変更することも可能です。

Adaptyはサーバー間連携を使用してサブスクリプションイベントをAppsFlyerに送信します。これにより、AppsFlyerのダッシュボードですべてのサブスクリプションイベントを確認し、獲得キャンペーンと紐付けることができます。

アプリをAppsFlyerに接続する

上記の手順を完了したら、updateAttribution メソッドを呼び出してアトリビューションデータを保存し、Adapty.setIntegrationIdentifier() を使用して連携識別子を設定します。

AppsFlyerのSDKを初期化し、AdaptyでユーザーのIDを設定する前にUIDコールバックを待ってください。そうしないと、appsflyer_id がSDKのアクティベーション時に一時的に作成される匿名のAdaptyプロファイルに紐付けられてしまい、識別済みのプロファイルに常には引き継がれません。この状態になると、AppsFlyerへの収益の転送がサイレントに失敗します。

イベント構造

AdaptyはPOSTリクエストのJSONボディを使用して、選択されたイベントをAppsFlyerに送信します。送信先は以下のとおりです:

  • API v2: https://api2.appsflyer.com/inappevent/{app_id}
  • API v3: https://api3.appsflyer.com/inappevent/{app_id}(推奨)

各イベントの構造は次のとおりです:

{
  "appsflyer_id": "1699887556000-6192770",
  "eventName": "subscription_renewed",
  "eventTime": "2024-03-01 12:00:00",
  "eventValue": "{\"af_content_id\":\"yearly.premium.6999\",\"af_order_id\":\"GPA.3383-4699-1373-07113\",\"store_country\":\"US\",\"profile_country\":\"US\",\"af_content_type\":\"in_app\",\"af_revenue\":\"9.9900\",\"af_currency\":\"USD\",\"af_quantity\":\"1\"}",
  "os": "17.0.1",
  "bundleIdentifier": "com.example.app",
  "customer_user_id": "user_12345",
  "eventCurrency": "USD",
  "ip": "192.168.100.1",
  "advertising_id": "00000000-0000-0000-0000-000000000000",
  "idfa": "00000000-0000-0000-0000-000000000000",
  "idfv": "00000000-0000-0000-0000-000000000000",
  "att": "3"
}

各パラメータの説明:

パラメータ説明
appsflyer_idStringAppsFlyerのID(SDK経由で収集)。
eventNameStringAppsFlyerのイベント名(Adaptyイベントからマッピング)。
eventTimeStringイベントの日時(UTC、YYYY-MM-DD HH:MM:SS 形式)。
eventValueStringイベント詳細を含むJSON文字列(下記参照)。
osStringOSバージョン。
bundleIdentifierStringアプリのバンドルID / パッケージ名。
customer_user_idStringユーザーのCustomer User ID。
eventCurrencyString通貨コード(例:“USD”)。
ipStringユーザーのIPアドレス。
advertising_idStringAndroidのみ。Google Advertising ID。
idfaStringiOSのみ。ID for Advertisers。
idfvStringiOSのみ。ID for Vendors。
attStringiOSのみ。App Tracking Transparencyのステータス(例:“3” は authorized)。

eventValue パラメータは、以下のフィールドを含むJSONエンコードされた文字列です:

パラメータ説明
af_content_idStringストアのプロダクトID。
af_order_idString元のトランザクションID。
store_countryStringストアユーザーの国コード。
profile_countryStringユーザーのIPに基づく国コード。
af_content_typeString収益がある場合は常に in_app
af_revenueString小数点以下4桁にフォーマットされた収益金額。
af_currencyString通貨コード。
af_quantityString収益がある場合は常に 1

トラブルシューティング

収益の不一致

AdaptyとAppsFlyerの間で収益に差異がある場合、Adapty SDKが組み込まれたアプリバージョンを使用していないユーザーが存在することが原因の可能性があります。データの整合性を確保するために、ユーザーにAdapty SDKが組み込まれたバージョンへのアップデートを強制することができます。

連携データの欠落

イベントの送信が失敗する場合、通常は連携データの欠落が原因です。この問題を解決するには、以下を確認してください:

  • アプリにAppsFlyer SDKがインストールされていること。
  • getAppsFlyerUID メソッドを呼び出していること。

認証エラー

コンソールで Failed to authenticate エラーが発生している場合、AppsFlyerのバージョンと認証情報のバージョンが一致していないことが原因の可能性があります。

移行ガイドを参照するか、こちらから有効な認証情報に差し替えてください。