コンバージョンデータ

このガイドでは、AppsFlyerConversionListener を使ってコンバージョンデータを取得する方法と、コンバージョンデータを使用するを紹介します。

コンバージョンデータとは何かを参照してください。

始める前に

次のコードの例では、AppsFlyerLibAppsFlyerConversionListener をインポートする必要があります。

import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;

Android SDKでのAppsFlyerConversionListenerの設定

AppsFlyerConversionListener overview

AppsFlyerConversionListenerインターフェイスでは、コンバージョンを聞くことができます。

init を呼び出した際に、AppsFlyerConversionListener を実装し登録する場合は、そのonConversionDataSuccess コールバックが次の場合に常に呼び出されます。

  • ユーザーがアプリを起動
  • ユーザーがアプリをフォアグラウンドに移動

何らかの理由でSDKがコンバージョンデータの取得に失敗した場合、onConversionDataFail が呼び出されます。

計測データへのアクセス

呼び出されると、onConversionDataSuccessは、そのインストールのコンバージョンデータを含む Map(例では conversionDataMap)を返します。コンバージョンデータは、onConversionDataSuccess が初めて呼び出されたときにキャッシュされ次の呼び出しでも同一になります。

Organic vs. Non-organic conversions

コンバージョンはオーガニックまたは非オーガニックに分かれます。

  • オーガニックコンバージョンとは、通常、アプリストアから直接インストールされた結果、成果がどの媒体にも紐づかないコンバージョンのことです。
  • 非オーガニックコンバージョンとは、インストール成果がメディアソースに紐づくコンバージョンのことです。

コンバージョンタイプは、onConversionDataSuccess のペイロードの af_status の値を確認することで取得できます。値は次のいずれかになります。

  • Organic
  • Non-organic

import com.appsflyer.AppsFlyerConversionListener;
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerLibCore.LOG_TAG;

AppsFlyerConversionListener conversionListener =  new AppsFlyerConversionListener() {
    @Override
    public void onConversionDataSuccess(Map<String, Object> conversionDataMap) {
        for (String attrName : conversionDataMap.keySet())
            Log.d(LOG_TAG, "Conversion attribute: " + attrName + " = " + conversionDataMap.get(attrName));
        String status = Objects.requireNonNull(conversionDataMap.get("af_status")).toString();
        if(status.equals("Organic")){
            // Business logic for Organic conversion goes here.
        }
        else {
            // Business logic for Non-organic conversion goes here.
        }
    }

    @Override
    public void onConversionDataFail(String errorMessage) {
      Log.d(LOG_TAG, "error getting conversion data: " + errorMessage);
    }

    @Override
    public void onAppOpenAttribution(Map<String, String> attributionData) {
      // Must be overriden to satisfy the AppsFlyerConversionListener interface.
      // Business logic goes here when UDL is not implemented.
    }

    @Override
    public void onAttributionFailure(String errorMessage) {
      // Must be overriden to satisfy the AppsFlyerConversionListener interface.
      // Business logic goes here when UDL is not implemented.
      Log.d(LOG_TAG, "error onAttributionFailure : " + errorMessage);
    }

};
import com.appsflyer.AppsFlyerConversionListener
import com.appsflyer.AppsFlyerLib
import com.appsflyer.AppsFlyerLibCore.LOG_TAG
  
class AFApplication : Application() {
    // ...
    override fun onCreate() {
        super.onCreate()
        val conversionDataListener  = object : AppsFlyerConversionListener{
            override fun onConversionDataSuccess(data: MutableMap<String, Any>?) {
                // ...
            }
            override fun onConversionDataFail(error: String?) {
                Log.e(LOG_TAG, "error onAttributionFailure :  $error")
            }
            override fun onAppOpenAttribution(data: MutableMap<String, String>?) {
                // Must be overriden to satisfy the AppsFlyerConversionListener interface.
                // Business logic goes here when UDL is not implemented.
                data?.map {
                    Log.d(LOG_TAG, "onAppOpen_attribute: ${it.key} = ${it.value}")
                }
            }
            override fun onAttributionFailure(error: String?) {
                // Must be overriden to satisfy the AppsFlyerConversionListener interface.
                // Business logic goes here when UDL is not implemented.
                Log.e(LOG_TAG, "error onAttributionFailure :  $error")
            }
        }
        AppsFlyerLib.getInstance().init(devKey, conversionDataListener, applicationContext)
        AppsFlyerLib.getInstance().start(this)
    }

}

ディファードディープリンク(従来の方法)

アプリがディファードディープリンクで起動された場合、onConversionDataSuccess のペイロードはディープリンクデータと計測データを返します。


このページは役に立ちましたか?