Данные о конверсиях
В этом руководстве вы узнаете, как получить данные о конверсиях с помощью 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)
}
}
Отложенный диплинкинг (устаревший метод)
Когда приложение открывается с помощью отложенного диплинкинга, полезная нагрузка onConversionDataSuccess
возвращает данные диплинкинга, а также данные атрибуции.
- Рекомендуется реализовать диплинкинг с помощью технологии унифицированного диплинкинга (Unified Deep Linking, UDL)
- Для справки приводим устаревшее руководство по диплинкингу для Android, в котором используется
AppsFlyerConversionListener
.
Изменения сохранены 3 месяца назад