Données de conversion

Dans ce guide, vous apprendrez comment obtenir des données de conversion avec AppsFlyerConversionListener, et vous pourrez consulter des exemples pour l'utilisation des données de conversion.

En savoir plus sur les données de conversion.

Avant de commencer

Dans les exemples de code suivants, vous devez importer AppsFlyerLib and AppsFlyerConversionListener:

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

Configuration de AppsFlyerConversionListener dans le SDK Android

AppsFlyerConversionListener overview

The AppsFlyerConversionListener vous permet d'écouter les conversions.

Si vous implémentez et enregistrez AppsFlyerConversionListener Lors de l'appel à init, son appel onConversionDataSuccess est invoqué à chaque fois :

  • Un utilisateur a ouvert l'app
  • Un utilisateur fait passer l'app au premier plan

Si, pour une raison x ou y, le SDK ne peut pas récupérer les données de conversion, onConversionDataFail is invoked.

Accès aux données d'attribution

Lorsqu'il est invoqué, onConversionDataSuccess renvoie un Map (appelé conversionDataMap dans cet exemple) qui contient les données de conversion pour cette installation. Les données de conversion sont mises en cache la première fois que onConversionDataSuccess est appelé et sera identique lors des appels suivants.

Organic vs. Non-organic conversions

Une conversion peut être organique ou non organique :

  • Une conversion organique est une conversion non attribuée qui est généralement le résultat d'une installation directe à partir d'un app store.
  • Une conversion non organique est une conversion attribuée à une source média.

Vous pouvez connaître le type de conversion en consultant la valeur de af_status dans la charge utile de onConversionDataSuccess. Cela peut être l'une des valeurs suivantes :

  • Organic
  • Non-organic

Exemple

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

}

Lien github

Deep linking différé (méthode héritée)

Lorsque l'app est ouverte via le deep linking différé, la charge utile de onConversionDataSuccessrenvoie les données du deep linking, accompagnées des données d'attribution.