Dados de conversão
Neste guia, você aprenderá como obter dados de conversão usando AppsFlyerConversionListener
, bem como exemplos para usar os dados de conversão.
Saiba mais sobre o que são dados de conversão.
Antes de começar
Os exemplos de código a seguir exigem que você importe AppsFlyerLib
and AppsFlyerConversionListener
:
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;
Configurando AppsFlyerConversionListener no SDK do Android
AppsFlyerConversionListener overview
The AppsFlyerConversionListener
permite ouvir conversões.
Se você implementar e registrar AppsFlyerConversionListener
Ao chamar init
, o callback onConversionDataSuccess
será chamado sempre que:
- Um usuário abre o aplicativo
- Um usuário move o aplicativo para o primeiro plano
Se, por qualquer motivo, o SDK falhar em buscar os dados de conversão, onConversionDataFail
is invoked.
Acessando dados de atribuição
Quando chamado, onConversionDataSuccess
retorna um Map
(chamado conversionDataMap
no exemplo) que contém os dados de conversão dessa instalação. Os dados de conversão são armazenados em cache na primeira vez que onConversionDataSuccess
é chamado e será idêntico em chamadas consecutivas.
Organic vs. Non-organic conversions
Uma conversão pode ser orgânica ou não orgânica:
- Uma conversão orgânica é uma conversão não atribuída que geralmente é o resultado de uma instalação direta de uma loja de aplicativos.
- Uma conversão não orgânica é uma conversão atribuída a uma fonte de mídia.
Você pode obter o tipo de conversão verificando o valor de af_status
no payload de onConversionDataSuccess
. Pode ser um dos seguintes valores:
Organic
Non-organic
Exemplo
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)
}
}
Deferred deep linking (método herdado)
Quando o aplicativo é aberto por meio de deferred deep linking, o payloaad de onConversionDataSuccess
retorna dados de deep linking, bem como dados de atribuição.
- A prática recomendada é implementar deep links com Unified Deep Linking (UDL)
- Para clientes e referências existentes, aqui está nosso guia de deep links legados do Android , usando
AppsFlyerConversionListener
.
Atualizado 4 meses atrás