Android Referrer'ı doğru şekilde almak ve atıfı korumak
Kısa cevap: Resmi Google Play Install Referrer kütüphanesini (com.android.installreferrer) kullanın, referrer dizesini hemen ayrıştırıp URL decode edin, UTM parametrelerini analitik araçlarına ve/veya sunucu tarafı Conversion API'sine gönderin — bu, kurulum gecikmeleri ve deep linking sırasında atıf kaybını en aza indirir.
Android Referrer nedir ve neden gereklidir?
Android Referrer, Google Play'in uygulama ilk kurulduğunda uygulamaya ilettiği bir dizedir. Genellikle UTM etiketleri (utm_source, utm_medium, utm_campaign vb.) bu dize üzerinden iletilir. Bu parametreler doğru şekilde alınıp kaydedilmezse, kurulumlar "doğrudan" olarak sayılır; bu da kampanyaları ve ROI analizini bozar.
Install Referrer'ı doğru şekilde yapılandırma (adım adım)
- build.gradle (app) dosyasına bağımlılığı ekleyin:
implementation 'com.android.installreferrer:installreferrer:2.2'
- Kotlin'de referrer'ı başlatma ve okuma (uygulamanın ilk çalıştırılmasında gerçekleştirin):
val client = InstallReferrerClient.newBuilder(context).build()
client.startConnection(object : InstallReferrerStateListener {
override fun onInstallReferrerSetupFinished(responseCode: Int) {
if (responseCode == InstallReferrerClient.InstallReferrerResponse.OK) {
val details = client.installReferrer
val raw = details.installReferrer // URL‑encoded dize
val clickTs = details.googlePlayInstantReferrerClickTimestampSeconds
val installTs = details.installBeginTimestampSeconds
val decoded = URLDecoder.decode(raw, "UTF-8")
// decoded'u key=value çiftlerine ayırın ve analitiğe/sunucuya gönderin
sendToAnalytics(decoded, clickTs, installTs)
} else {
// FEATURE_NOT_SUPPORTED, SERVICE_UNAVAILABLE vb. — yedek çözüm uygulayın
}
}
override fun onInstallReferrerServiceDisconnected() { /* yeniden dene */ }
})
// onDestroy içinde:
client.endConnection()
- Kodlama hatalarından kaçınmak için parametreleri basit split yerine hazır bir query string ayrıştırıcısı ile işleyin.
- Verileri ilk çalıştırmada hemen gönderin — bu, uzun kurulum gecikmelerinde veri kaybı riskini azaltır.
Activity yeniden oluşturulurken sızıntıları ve hataları önlemek için her zaman client.endConnection() çağrısını yapın (örneğin, onDestroy() içinde).
Hatalar, test etme ve en iyi uygulamalar
- Decode işlemi: Dize URL-encoded olarak gelir — URLDecoder.decode(..., "UTF-8") veya güvenilir ayrıştırıcılar kullanın.
- Yeniden deneme ve yedek çözüm: responseCode != OK ise, denemeleri kaydedin ve yedek çözüm uygulayın (örneğin, Play Campaign API veya analitik SDK).
- Atıf SDK'sı: AppsFlyer/Adjust referrer'ı kendi başına isteyebilir; olayların çoğaltılmaması için doğru entegrasyon yapın.
- Sunucu tarafı: Referrer-UTM verilerini sunucuya (Conversion API) gönderin, kurulum olayını LTV ve yeniden hedefleme için sunucu analitiği ile ilişkilendirin.
- Kullanıcı onayı: Consent Mode'u (EEA) dikkate alın ve gerekli onay olmadan kişisel verileri göndermeyin.
Test etme:
- adb aracılığıyla test kurulumu oluşturun: adb shell am start -a android.intent.action.VIEW -d "http://play.google.com/store/apps/details?id=your.app&referrer=utm_source%3Dtest"
- Günlükleri izleyin: adb logcat | grep InstallReferrer
Yalnızca referrer'a güvenmeyin: Özellikle karmaşık deeplink/SDK zincirlerinde, verileri sunucu atıfı, SDK izleyicileri ve tıklama metrikleriyle birleştirin.
Sık yapılan hatalar
- Yanlış decode işlemi: = yerine %3D görünmesine neden olur — çözüm: URLDecoder.decode.
- installReferrer'ı birden fazla yerde çağırmak: Olayların çoğaltılmasına yol açar — okuma ve göndermeyi merkezileştirin.
- clickTimestamp kaydedilmemesi: LTV kohort analizi kaybedilir.
- 7 günden fazla beklemek: Referrer 7 güne kadar saklanır, ancak değerleri hemen göndermek daha iyidir.
SSS
- Eski Broadcast Receiver'ları desteklemem gerekiyor mu?
Hayır: Google, Install Referrer API'sini önermektedir; eski CampaignTrackingReceiver kullanımdan kaldırılmıştır. - Referrer Play'de ne kadar süre saklanır?
7 güne kadar, ancak değerleri ilk çalıştırmada göndermek daha iyidir. - InstallReferrer FEATURE_NOT_SUPPORTED döndürürse ne yapmalıyım?
Yedek çözüm uygulayın: Yeniden bağlanmayı deneyin, ardından analitik SDK veya sunucudaki Play Console verilerini (TrafficSourceParams) kullanın.
Bu yapılandırmayla atıf kaybını en aza indirirsiniz: Doğru ayrıştırma, anında gönderim ve sunucu tarafı eşleştirme çoğu reklam senaryosuyla uyumlu olacaktır.