Data konversi
Dalam panduan ini, Anda akan pelajari cara mendapatkan data konversi menggunakan AppsFlyerConversionListener
, serta contoh untuk menggunakan data konversi.
Pelajari lebih lanjut tentang apa itu data konversi.
Sebelum Anda memulai:
Contoh kode berikut mengharuskan Anda mengimpor AppsFlyerLib
and AppsFlyerConversionListener
:
import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;
Mengatur AppsFlyerConversionListener di SDK Android
AppsFlyerConversionListener overview
The AppsFlyerConversionListener
antarmuka memungkinkan Anda mendengarkan konversi.
Jika Anda menerapkan dan mendaftar AppsFlyerConversionListener
Saat memanggil init
, nya onConversionDataSuccess
callback dipanggil setiap kali:
- Seorang pengguna membuka aplikasi
- Seorang pengguna memindahkan aplikasi ke latar depan
Jika karena alasan apa pun SDK gagal mengambil data konversi, onConversionDataFail
is invoked.
Mengakses data atribusi
Saat dipanggil, onConversionDataSuccess
mengembalikan Map
(yang dipanggil conversionDataMap
dalam contoh) yang berisi data konversi untuk penginstalan tersebut. Data konversi di-cache pertama kali onConversionDataSuccess
dipanggil dan akan identik pada panggilan berturut-turut.
Organic vs. Non-organic conversions
Konversi dapat berupa Organik atau Non-organik:
- Konversi Organik adalah konversi yang tidak diatribusikan, yang biasanya merupakan hasil penginstalan langsung dari app store.
- Konversi Non-organik adalah konversi yang diatribusikan ke sumber media.
Anda bisa mendapatkan jenis konversi dengan memeriksa nilai af_status
pada onConversionDataSuccess
payload-nya. Hal ini dapat berupa salah satu dari nilai berikut:
Organic
Non-organic
Contoh
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)
}
}
Tautan langsung tertunda/deferred deep linking (Metode lama)
Saat aplikasi dibuka melalui deferred deep linking (penautan langsung tertunda), onConversionDataSuccess
payload mengembalikan data deep linking, serta data atribusi.
- Praktik terbaik yang disarankan adalah menerapkan deep linking dengan Tautan Langsung Terpadu/Unified Deep Linking (UDL)
- Untuk referensi dan klien yang sudah ada, berikut adalah panduan deep linking Android lawas kami, menggunakan
AppsFlyerConversionListener
.
Diperbarui 3 bulan yang lalu