Mobil Analitik: Firebase Analytics ve Kullanıcı Davranışı
Firebase Analytics Nedir ve Neden Kullanmalıyız?
Mobil uygulama geliştirme sürecinde kullanıcıların uygulamanızla nasıl etkileşim kurduğunu anlamak, başarılı bir ürün ortaya koymanın temel taşlarından biridir. Firebase Analytics (güncel adıyla Google Analytics for Firebase), Google'ın sunduğu ücretsiz ve sınırsız bir analitik çözümüdür. Kullanıcı davranışlarını izlemek, dönüşüm hunilerini analiz etmek ve uygulama performansını ölçmek için güçlü bir altyapı sağlar.
Firebase Analytics'in öne çıkan avantajları şunlardır:
- Ücretsiz ve sınırsız: Olay (event) sayısı ve kullanıcı özelliği (user property) konusunda cömert kotalar sunar.
- Otomatik olay toplama: Uygulama açılması, ilk açılış, uygulama güncellemesi gibi olayları herhangi bir kod yazmadan otomatik olarak toplar.
- BigQuery entegrasyonu: Ham verileri BigQuery'ye aktararak SQL ile derinlemesine analiz yapmanızı sağlar.
- Diğer Firebase servisleriyle entegrasyon: Remote Config, A/B Testing, Cloud Messaging gibi servislerle sorunsuz çalışır.
- Çapraz platform desteği: Android, iOS ve web uygulamalarını tek bir panelden izleyebilirsiniz.
Firebase Analytics Kurulumu
Android Projesi İçin Kurulum
Firebase Analytics'i Android projenize eklemek için öncelikle Firebase konsolundan projenizi oluşturmanız ve google-services.json dosyasını indirmeniz gerekir. Ardından aşağıdaki bağımlılıkları ekleyin:
Proje düzeyindeki build.gradle dosyasına:
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.4.0'
}
}
Uygulama düzeyindeki build.gradle dosyasına:
plugins {
id 'com.google.gms.google-services'
}
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-analytics'
}
iOS Projesi İçin Kurulum (Swift)
iOS tarafında Swift Package Manager veya CocoaPods kullanabilirsiniz. CocoaPods ile kurulum:
pod 'FirebaseAnalytics'
Ardından AppDelegate dosyanızda Firebase'i başlatın:
import FirebaseCore
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
return true
}
}
Özel Olaylar (Custom Events) ile Kullanıcı Davranışını İzleme
Firebase Analytics'in otomatik olarak topladığı olaylar temel bilgileri sağlasa da, uygulamanıza özgü kullanıcı davranışlarını izlemek için özel olaylar tanımlamanız gerekir. Özel olaylar, kullanıcıların uygulamanızda gerçekleştirdiği spesifik aksiyonları takip etmenize olanak tanır.
Android'de Özel Olay Loglama (Kotlin)
val firebaseAnalytics = Firebase.analytics
// Ürün görüntüleme olayı
fun logProductView(productId: String, productName: String, category: String, price: Double) {
firebaseAnalytics.logEvent("view_product") {
param("product_id", productId)
param("product_name", productName)
param("category", category)
param("price", price)
}
}
// Sepete ekleme olayı
fun logAddToCart(productId: String, quantity: Long, price: Double) {
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.ADD_TO_CART) {
param(FirebaseAnalytics.Param.ITEM_ID, productId)
param(FirebaseAnalytics.Param.QUANTITY, quantity)
param(FirebaseAnalytics.Param.PRICE, price)
param(FirebaseAnalytics.Param.CURRENCY, "TRY")
}
}
// Arama olayı
fun logSearch(searchTerm: String, resultsCount: Long) {
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SEARCH) {
param(FirebaseAnalytics.Param.SEARCH_TERM, searchTerm)
param("results_count", resultsCount)
}
}
iOS'te Özel Olay Loglama (Swift)
import FirebaseAnalytics
// Ürün görüntüleme olayı
func logProductView(productId: String, productName: String, category: String, price: Double) {
Analytics.logEvent("view_product", parameters: [
"product_id": productId,
"product_name": productName,
"category": category,
"price": price
])
}
// Satın alma tamamlama olayı
func logPurchaseComplete(orderId: String, totalAmount: Double, itemCount: Int) {
Analytics.logEvent(AnalyticsEventPurchase, parameters: [
AnalyticsParameterTransactionID: orderId,
AnalyticsParameterValue: totalAmount,
AnalyticsParameterCurrency: "TRY",
"item_count": itemCount
])
}
Kullanıcı Özellikleri (User Properties)
Kullanıcı özellikleri, kullanıcı segmentasyonu yapmanızı ve farklı kullanıcı gruplarının davranışlarını karşılaştırmanızı sağlar. Örneğin, premium ve ücretsiz kullanıcıların uygulama içi davranışlarını ayrı ayrı analiz edebilirsiniz.
// Android (Kotlin)
firebaseAnalytics.setUserProperty("subscription_type", "premium")
firebaseAnalytics.setUserProperty("preferred_language", "tr")
firebaseAnalytics.setUserProperty("user_level", "advanced")
// iOS (Swift)
Analytics.setUserProperty("premium", forName: "subscription_type")
Analytics.setUserProperty("tr", forName: "preferred_language")
Analytics.setUserProperty("advanced", forName: "user_level")
Kullanıcı özellikleri tanımlarken dikkat etmeniz gereken noktalar:
- Uygulama başına en fazla 25 adet özel kullanıcı özelliği tanımlayabilirsiniz.
- Özellik adları en fazla 24 karakter, değerleri en fazla 36 karakter olabilir.
- Kişisel verileri (e-posta, telefon numarası, TC kimlik numarası gibi) kullanıcı özelliği olarak asla kaydetmeyin.
Dönüşüm Hunileri ve Funnel Analizi
Kullanıcıların uygulamanızda belirli bir hedefe ulaşana kadar geçtiği adımları analiz etmek, kayıp noktalarını tespit etmek açısından kritik öneme sahiptir. Firebase Analytics'te dönüşüm hunisi oluşturmak için öncelikle ilgili olayları doğru bir şekilde loglamanız gerekir.
Bir e-ticaret uygulaması için tipik bir dönüşüm hunisi şöyle olabilir:
- view_product — Kullanıcı ürün detay sayfasını görüntüler
- add_to_cart — Kullanıcı ürünü sepete ekler
- begin_checkout — Kullanıcı ödeme sürecini başlatır
- add_payment_info — Kullanıcı ödeme bilgilerini girer
- purchase — Kullanıcı satın almayı tamamlar
Firebase konsolunda Funnel raporu oluşturarak her adım arasındaki dönüşüm oranlarını ve kayıp noktalarını görselleştirebilirsiniz. Bu veriler, UX iyileştirmeleri için somut yol haritaları oluşturmanıza yardımcı olur.
BigQuery ile Derinlemesine Analiz
Firebase Analytics verilerini BigQuery'ye aktararak SQL sorguları ile gelişmiş analizler yapabilirsiniz. Bu entegrasyon Blaze planı ile ücretsiz olarak kullanılabilir (BigQuery'nin kendi ücretsiz kotaları dahilinde).
-- Son 30 günde en çok görüntülenen ürünler
SELECT
event_params.value.string_value AS product_name,
COUNT(*) AS view_count,
COUNT(DISTINCT user_pseudo_id) AS unique_users
FROM
`project_id.analytics_123456789.events_*`,
UNNEST(event_params) AS event_params
WHERE
event_name = 'view_product'
AND event_params.key = 'product_name'
AND _TABLE_SUFFIX BETWEEN
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
GROUP BY product_name
ORDER BY view_count DESC
LIMIT 20;
-- Kullanıcı retention analizi (gün bazında)
SELECT
event_date AS cohort_date,
COUNT(DISTINCT user_pseudo_id) AS total_users,
COUNT(DISTINCT CASE
WHEN days_since_first_visit = 1 THEN user_pseudo_id END) AS day_1_retained,
COUNT(DISTINCT CASE
WHEN days_since_first_visit = 7 THEN user_pseudo_id END) AS day_7_retained
FROM (
SELECT
user_pseudo_id,
event_date,
DATE_DIFF(
PARSE_DATE('%Y%m%d', event_date),
PARSE_DATE('%Y%m%d', first_visit_date),
DAY
) AS days_since_first_visit
FROM (
SELECT
user_pseudo_id,
event_date,
MIN(event_date) OVER (PARTITION BY user_pseudo_id) AS first_visit_date
FROM `project_id.analytics_123456789.events_*`
)
)
GROUP BY cohort_date
ORDER BY cohort_date DESC;
DebugView ile Gerçek Zamanlı Test
Olaylarınızın doğru şekilde loglandığını doğrulamak için Firebase'in DebugView özelliğini kullanabilirsiniz. Bu özellik, olayları neredeyse gerçek zamanlı olarak Firebase konsolunda görmenizi sağlar.
Android'de DebugView'ı etkinleştirmek için terminal üzerinden şu komutu çalıştırın:
adb shell setprop debug.firebase.analytics.app com.example.myapp
iOS'te ise Xcode'da şu launch argument'ı ekleyin:
-FIRDebugEnabled
Debug modunu devre dışı bırakmayı unutmayın; aksi takdirde test verileri üretim raporlarınızı kirletebilir.
En İyi Uygulamalar ve Öneriler
- Olay isimlendirme konvansiyonu belirleyin: Tutarlı bir isimlendirme (snake_case) kullanın. Örneğin
view_product,add_to_cart,complete_registrationgibi. - Önceden tanımlı olayları tercih edin: Firebase'in önerdiği standart olayları (
FirebaseAnalytics.Event) mümkün olduğunca kullanın. Bu olaylar Google Ads ve diğer Google servisleriyle daha iyi entegre çalışır. - Parametre sayısını sınırlandırın: Her olaya en fazla 25 parametre ekleyebilirsiniz. Gerçekten analiz edeceğiniz parametreleri seçin.
- Kişisel veri loglamayın: KVKK ve GDPR uyumluluğu için kullanıcı kimliğini doğrudan tanımlayabilecek verileri olay parametrelerine eklemeyin.
- Consent (onay) yönetimi uygulayın: Kullanıcılardan veri toplama onayı alın ve onay durumuna göre analitik toplamayı kontrol edin:
// Android - Consent yönetimi
firebaseAnalytics.setConsent {
analyticsStorage(if (userConsented) ConsentStatus.GRANTED else ConsentStatus.DENIED)
adStorage(if (userConsented) ConsentStatus.GRANTED else ConsentStatus.DENIED)
}
- Audience (kitle) segmentleri oluşturun: Firebase konsolunda farklı kullanıcı kitleleri tanımlayarak hedefli bildirimler gönderebilir ve A/B testleri gerçekleştirebilirsiniz.
- Dashboard'ları düzenli inceleyin: Haftalık veya aylık olarak analitik verilerinizi gözden geçirin. Anormal değişimleri erken tespit etmek, kullanıcı kaybını önlemek için kritik önem taşır.
Sonuç
Firebase Analytics, mobil uygulama geliştiricileri için vazgeçilmez bir araçtır. Doğru olay yapısı, anlamlı kullanıcı özellikleri ve düzenli analiz ile kullanıcı davranışlarını derinlemesine anlayabilir, ürününüzü veri odaklı kararlarla geliştirebilirsiniz. Özellikle BigQuery entegrasyonu sayesinde ham verileriniz üzerinde sınırsız analiz yapabilir, kullanıcı segmentasyonu ve retention analizleri ile uygulamanızın büyüme stratejisini şekillendirebilirsiniz. Unutmayın: ölçemediğiniz şeyi iyileştiremezsiniz.