Данные о конверсиях

В этом руководстве вы узнаете, как получить данные о конверсиях с помощью AppsFlyerConversionListener, а также примеры использования данных о конверсиях.

Подробнее о данных о конверсиях.

Прежде чем начать

Для следующих примеров кода требуется импортировать AppsFlyerLib and AppsFlyerConversionListener:

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

Настройка AppsFlyerConversionListener в SDK для Android

AppsFlyerConversionListener overview

The AppsFlyerConversionListener позволяет прослушивать данные о конверсиях.

Если вы внедрите и зарегистрируете AppsFlyerConversionListener При вызове init, его обратный вызов onConversionDataSuccess вызывается, если

  • Пользователь открыл приложение.
  • Пользователь перевел приложение в фоновый режим.

Если по какой-либо причине SDK не может получить данные о конверсиях, вызывается onConversionDataFail is invoked.

Доступ к данным атрибуции

При вызове onConversionDataSuccess возвращает Map (называется conversionDataMap в данном примере), который содержит данные о конверсии для этой установки. Данные о конверсиях кешируются при первом вызове onConversionDataSuccess и будут идентичны при последующих вызовах.

Organic vs. Non-organic conversions

Конверсия может быть органической или неорганической:

  • Органическая конверсия — это неатрибутированная конверсия, которая обычно является результатом прямой установки из магазина приложений.
  • Неорганическая конверсия — это конверсия, атрибутированная какому-либо медиа-источнику.

Тип конверсии можно узнать, проверив значение af_status в полезной нагрузке onConversionDataSuccess. Значение может быть таким:

  • 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)
    }

}

Ссылка на Github

Отложенный диплинкинг (устаревший метод)

Когда приложение открывается с помощью отложенного диплинкинга, полезная нагрузка onConversionDataSuccessвозвращает данные диплинкинга, а также данные атрибуции.