컨버전 데이터
이 가이드에서는 AppsFlyerConversionListener
를 사용하여 변환 데이터를 가져오는 방법과 변환 데이터를 사용하는 예를 배우게 됩니다.
전환 데이터란에 대해 더 알아봅니다.
시작하기 전에
다음 코드 예시는 사용자가 다음 메서드를 가져올 것을 요구합니다: AppsFlyerLib
and AppsFlyerConversionListener
:
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;
안드로이드 SDK에서 AppsFlerConversionListener 설정하기
AppsFlyerConversionListener overview
The AppsFlyerConversionListener
인터페이스를 사용하면 전환을 수신 대기할 수 있습니다.
사용자가 AppsFlyerConversionListener
호출할 때 init
를 구현하고 등록하면 onConversionDataSuccess
콜백은 다음과 같은 경우마다 호출됩니다.
- 사용자가 앱을 여는 경우
- 사용자가 앱을 휴대폰 화면(foreground)으로 이동하는 경우
어떤 이유로 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
의 페이로드는 딥링킹 데이터와 함께 어트리뷰션 데이터를 반환합니다.
- 권장되는 모범 활용 사례는 통합된 딥링킹(UDL)으로 딥링크를 구현하는 것입니다.
- 기존 고객 및 참조 문서인 경우, 다음을 사용하는 레거시 안드로이드 딥링킹 안내서를 참조하세요:
AppsFlyerConversionListener
.
최신 데이터 4개월 전