コンバージョンデータ
このガイドでは、AppsFlyerConversionListener
を使ってコンバージョンデータを取得する方法と、コンバージョンデータを使用する例を紹介します。
コンバージョンデータとは何かを参照してください。
始める前に
次のコードの例では、AppsFlyerLib
と AppsFlyerConversionListener
をインポートする必要があります。
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;
Android SDKでのAppsFlyerConversionListenerの設定
AppsFlyerConversionListener overview
AppsFlyerConversionListener
インターフェイスでは、コンバージョンを聞くことができます。
init
を呼び出した際に、AppsFlyerConversionListener
を実装し登録する場合は、そのonConversionDataSuccess
コールバックが次の場合に常に呼び出されます。
- ユーザーがアプリを起動
- ユーザーがアプリをフォアグラウンドに移動
何らかの理由でSDKがコンバージョンデータの取得に失敗した場合、onConversionDataFail
が呼び出されます。
計測データへのアクセス
呼び出されると、onConversionDataSuccess
は、そのインストールのコンバージョンデータを含む Map
(例では conversionDataMap
)を返します。コンバージョンデータは、onConversionDataSuccess
が初めて呼び出されたときにキャッシュされ次の呼び出しでも同一になります。
Organic vs. Non-organic conversions
コンバージョンはオーガニックまたは非オーガニックに分かれます。
- オーガニックコンバージョンとは、通常、アプリストアから直接インストールされた結果、成果がどの媒体にも紐づかないコンバージョンのことです。
- 非オーガニックコンバージョンとは、インストール成果がメディアソースに紐づくコンバージョンのことです。
コンバージョンタイプは、onConversionDataSuccess
のペイロードの af_status
の値を確認することで取得できます。値は次のいずれかになります。
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) で実装することです。
- 既存のお客様の参考までに、
AppsFlyerConversionListener
を使用している当社の従来のAndroidディープリンクガイドを記載します。
更新済 9か月前