Flutter Firebase Analytics Kullanımı
Merhaba değerli okurlar. Bu yazımda sizlere Flutter Firebase Analytics Kullanımı anlatmaya çalışacağım. En temelden zirveye olacak şekilde ve detaylıca aktarmaya çalışacağım. Bu yazımı ilk defa bu işlemi yapacak geliştirici arkadaşlar için olabildiğince detaylı olarak yazmaya gayret gösterim. Umarım faydalı olur..
Bölüm 1: Hazırlık ve Kurulum
NOT: BU BÖLÜMDE FIREBASE PROJESİ OLUŞTURMAYI VE FLUTTER TARAFINA EKLEMEYİ GÖSTERİYOR OLACAĞIM. BU KISMI BU İŞLEMİ BİLEN ARKADAŞLAR ATLAYABİLİR!!
Kullanıcı davranışlarını anlamaya başlamadan önce, Firebase dünyası ile Flutter uygulamanız arasında köprüyü doğru bir şekilde kurmamız gerekiyor. Bu bölümde, belki biraz teknik görünen ama analiz yolculuğumuzun olmazsa olmazı olan ilk adımları atacağız: Firebase projenizi hazırlayacak, Flutter uygulamanızı bu projeye bağlayacak, gerekli dijital ‘malzemeleri’ (paketleri) projenize ekleyecek ve son olarak uygulamanız her açıldığında Firebase’in ‘Merhaba Dünya!’ diyebilmesi için ilk başlatma kodunu yazacağız. Bu temel adımları dikkatlice tamamladığımızda, verileri toplamaya ve anlamlandırmaya hazır olacağız. Hadi başlayalım!
Henüz bir Firebase projeniz yoksa veya mevcut projenizi analiz için nasıl yapılandıracağınızı bilmiyorsanız, endişelenmeyin. Bu ilk adımda, analiz yolculuğumuz için bu merkezi üssü nasıl kuracağınızı veya mevcut bir projeyi nasıl hazırlayacağınızı göreceğiz.
- Adım 1: Firebase Konsolu’na Gidin: Tarayıcınızda Firebase Konsolu adresine gidin ve Google hesabınızla giriş yapın.
- Adım 2: Proje Oluşturun veya Seçin:
- Yeni Proje: “Proje ekle” (Add project) düğmesine tıklayın. Projenize hatırlaması kolay bir ad verin (örneğin, UygulamaAdi-Analytics).
- Mevcut Proje: Eğer uygulamanız için zaten bir Firebase projesi kullanıyorsanız, onu listeden seçebilirsiniz.
- Adım 3: Google Analytics’i Etkinleştirin (Önemli!): Proje oluşturma sihirbazı sırasında size “Bu proje için Google Analytics’i etkinleştir” (Enable Google Analytics for this project) seçeneği sunulacaktır. Bu seçeneğin işaretli olduğundan emin olun. Bu, Firebase Analytics’in tüm gücünden yararlanmanızı sağlar. Zaten etkinse harika! Eğer mevcut bir projede etkin değilse, Proje Ayarları (Project Settings) -> Entegrasyonlar (Integrations) -> Google Analytics bölümünden etkinleştirebilirsiniz. Bir Google Analytics hesabı seçmeniz veya yeni bir tane oluşturmanız istenebilir.
- Adım 4: Projeyi Oluşturun: Sihirbazın adımlarını takip ederek projeyi oluşturun. Bu işlem birkaç saniye sürebilir.
Bu işlemleri başarıyla tamamladıktan sonra sıra, Flutter uygulamamızın Firebase Projemizle entegrasyonuna geliyor. Bu adıma geçmeden önce Firebase Cli adlı yazıma göz atmanız gerekmekte. Firebase Cli kurulumunu yaptıktan sonra bu aşamaya geçmeniz gerekmekte!
Eğer Firebase Cli kurduysanız şimdi aşağıdaki adımları takip edin.
Firebase ekibinin sunduğu FlutterFire komut satırı aracı (CLI), bu bağlantı işlemini büyük ölçüde otomatikleştirir ve hata yapma olasılığını azaltır.
- Kurulum: Eğer yüklü değilse, terminalinizde şu komutu çalıştırın: dart pub global activate flutterfire_cli
- Yapılandırma: Flutter projenizin ana dizinindeyken terminalde şu komutu çalıştırın: flutterfire configure
- Bu komut sizi Firebase hesabınıza giriş yapmaya yönlendirecek, mevcut Firebase projelerinizi listeleyecek ve seçtiğiniz projeye göre Android ve iOS için gerekli yapılandırma dosyalarını (google-services.json ve GoogleService-Info.plist) otomatik olarak oluşturup doğru yerlere koyacak ve hatta main.dart dosyanıza gerekli başlatma kodunu ekleyecektir.
Eğer buraya kadar başarıyla geldiyseniz sıkı tutunun çünkü artık kalkışa başlıyoruz. Bu adımdan sonra ilgili paketleri eklemeyi ve yapılandırmalarını görüp neleri nasıl analiz edebileceğimizi görüyor olacağız. Lütfen kemerlerinizi takınız.
1.2 Flutter Paketlerini Eklemek
Bu işlemleri yapabilmek adına pubspec yaml dosyamıza iki adet firebase paketi eklememiz gerekiyor.
- firebase_core: Bu paket, Flutter uygulamanızın genel olarak Firebase servisleriyle iletişim kurmasını sağlayan temel çekirdektir. Herhangi bir Firebase hizmetini kullanmadan önce bu paketin projenizde olması ve başlatılması gerekir.
- firebase_analytics: Bu paket ise özel olarak Firebase Analytics işlevlerini (olay kaydetme, kullanıcı özellikleri ayarlama vb.) Flutter kodunuzdan çağırmanıza olanak tanır.
İlgili bu paketleri projemize ekledikten sonra main dosyamızda onları nasıl import edip yapılandıracağımıza bakalım.
import ‘package:flutter/material.dart’;
import ‘package:firebase_core/firebase_core.dart’;
// Opsiyonel: FlutterFire CLI veya manuel seçenekler için
import ‘firebase_options.dart’;
import ‘app.dart’; // MaterialApp widget’ınızı içeren dosya (örneğin app.dart)
Future<void> main() async {
// Flutter motorunun hazır olduğundan emin ol
WidgetsFlutterBinding.ensureInitialized();
// Firebase’i başlat
try {
await Firebase.initializeApp(
// FlutterFire CLI tarafından oluşturulan platforma özel seçenekleri kullanın
options: DefaultFirebaseOptions.currentPlatform,
);
print(‘Firebase başarıyla başlatıldı!’); // Başarı mesajı (opsiyonel)
} catch (e) {
// Başlatma sırasında hata olursa yakalayın ve loglayın
print(‘Firebase başlatılamadı: $e’);
// İsteğe bağlı: Hata durumunda kullanıcıya bilgi veren bir ekran gösterilebilir
}
// Uygulamanızı çalıştırın
runApp(MyApp()); // MaterialApp widget’ınızın bulunduğu sınıf
}
Bu kodların ne anlama geldiğinide açıklayalım.
- Adım 1: main() Fonksiyonunu async Yapın: Firebase başlatma işlemi asenkron (zaman alabilen bir işlem) olduğu için main fonksiyonunu async olarak işaretlememiz ve dönüş tipini Future<void> yapmamız gerekir.
- Adım 2: Flutter Binding’i Başlatın: Firebase başlatma kodundan önce WidgetsFlutterBinding.ensureInitialized(); satırını ekleyin. Bu, Flutter framework’ünün platformla iletişim kurmaya hazır olduğundan emin olmamızı sağlar.
- Adım 3: Firebase’i Başlatın: await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); platforma özel ayarları içeren firebase_options.dart dosyasınını çağırmakta.
- Adım 4: Uygulamayı Çalıştırın: Firebase başarıyla başlatıldıktan sonra runApp(MyApp()); ile uygulamanızı çalıştırın
Buraya kadar geldiğinizde yolu yarılamış oluyorsunuz. Bu adımdan sonra artık analiz kısımlarına geçiş yapıyor olacağız
Bölüm 2: Temel Veri Toplama Yöntemleri
Temellerimiz sağlam olduğuna göre, artık işin eğlenceli kısmına geçebiliriz: Kullanıcıların uygulamanızda neler yaptığını gerçekten görmeye başlamak! Bu bölümde, Firebase Analytics’in bize sunduğu üç temel veri toplama aracını öğreneceğiz. Bunlar, kullanıcı davranışını anlamanın yapı taşlarıdır: Hangi ekranlara baktıklarını otomatik olarak nasıl takip edeceğimizi, belirli buton tıklamaları veya özellik kullanımları gibi kritik etkileşimleri nasıl özel olarak kaydedeceğimizi ve son olarak kullanıcıları daha iyi tanımak için onlara nasıl etiketler (özellikler) atayacağımızı keşfedeceğiz. Bu yöntemleri öğrendiğinizde, uygulamanızın nasıl kullanıldığına dair net bir resim çizmeye başlayacaksınız.
2.1 Otomatik Ekran Takibi (Screen Views)
Bir alışveriş merkezinde hangi mağazaların daha popüler olduğunu anlamak için insanların en çok hangi koridorlarda yürüdüğüne bakmak mantıklı olmaz mıydı? İşte otomatik ekran takibi de tam olarak bunu yapar: Kullanıcılarınızın uygulamanızdaki “dijital koridorlarda”, yani farklı ekranlarda ne kadar gezindiğini otomatik olarak kaydeder. Bu, uygulamanızın hangi bölümlerinin en çok ilgi çektiğini veya belki de kullanıcıların hangi ekrandan sonra sıkılıp ayrıldığını anlamanın en temel yoludur. Neyse ki, Firebase ve Flutter bu işi bizim için oldukça kolaylaştırıyor.
- Sihirli Değnek: FirebaseAnalyticsObserver Nedir?
Flutter’da sayfalar arasında gezinmeyi sağlayan bir mekanizma vardır (Navigator). FirebaseAnalyticsObserver, bu mekanizmayı sürekli dinleyen bir “gözlemci”dir. Ne zaman yeni bir sayfa (Route) açılsa veya bir sayfadan geri dönülse, bu gözlemci bunu fark eder ve otomatik olarak Firebase Analytics’e “Kullanıcı şu an şu ekranı görüntüledi” (genellikle ekranın sınıf adı veya route adı ile) bilgisini gönderir. - Nasıl Çalıştırılır? MaterialApp’a Gözlemci Eklemek:
Bu otomatik takip sistemini devreye almak için tek yapmanız gereken, FirebaseAnalyticsObserver’ı uygulamanızın ana widget’ı olan MaterialApp’ın (veya CupertinoApp) navigatorObservers listesine eklemektir. Hatırlarsanız, Bölüm 1'deki MyApp örneğimizde bunu zaten yapmıştık, şimdi nedenini daha iyi anlıyoruz
Ekran takibi olayıyla bu işlemlere güzel bir başlangıç yaptık ancak bu verileri daha anlamlı kılmak için kullanıcıların bu ekranlar üzerinde neler yaptığınıda gözlemlemek gerek.
2.2 Özel Olayları Kaydetme (Custom Events)
Bu adımda kulanıcılar açılan ekranlarda nereye bastı varsa eğer arama çubuğuna ne yazdı gibi olayları kaydetmeye çalışacağız. Bu gibi özel olayları kaydetmek için Custom Events kullanıyoruz.
- logEvent
Firebase Analytics’e özel bir olay göndermek için logEvent fonksiyonunu kullanırız. Bu fonksiyon en azından bir name (olayın adı) parametresi alır. İsteğe bağlı olarak, olaya daha fazla bağlam katmak için parameters (parametreler) de ekleyebilirsiniz. - İsimlendirme
- Google’ın Önerileri: Google, birçok yaygın senaryo için standart olay adları tanımlamıştır (örn: login, sign_up, purchase, select_content, share, search, add_to_cart). Mümkün olduğunca bu standart adları kullanın. Çünkü Firebase ve Google Analytics bu isimleri tanır ve size özel, önceden yapılandırılmış raporlar sunabilir. Google’ın Önerilen Olaylar Listesi’ne göz atabilirsiniz.
- Kendi Olaylarınız: Eğer standart isimler tam olarak uymuyorsa, kendi özel olay adlarınızı oluşturabilirsiniz. Burada en iyi pratik, snake_case (küçük harf ve kelimeler arası alt çizgi) kullanmaktır (örn: filter_applied, profile_picture_updated, level_completed).
- Tutarlılık: Olay adlarınızın uygulamanız boyunca tutarlı ve anlamlı olduğundan emin olun. button_click gibi çok genel bir isim yerine subscribe_button_click veya add_to_wishlist_click gibi daha spesifik isimler tercih edin. - Parametreler
Olayın sadece ne olduğunu değil, neyle ilgili olduğunu da bilmek önemlidir. Parametreler tam olarak bunu yapar. Örneğin, bir select_content (içerik seçme) olayına, seçilen içeriğin ID’sini ve türünü parametre olarak ekleyebilirsiniz.
Yapı: Parametreler, Map<String, Object> tipinde bir harita olarak gönderilir. Anahtarlar (parametre adları) String, değerler ise String veya num (int, double) olmalıdır. - İsimlendirme: Parametre adlarında da snake_case kullanmak iyi bir pratiktir (örn: item_id, item_category, screen_name, button_location). Google’ın standart parametre adları da vardır (örn: FirebaseAnalytics.Param.ITEM_ID, FirebaseAnalytics.Param.CONTENT_TYPE).
- Limitler: Tek bir olaya ekleyebileceğiniz parametre sayısı (genellikle 25) ve parametre adı/değeri uzunlukları için limitler vardır. Dokümantasyonu kontrol edin.
- ⚠️ Çok Önemli Uyarı: Asla Hassas Veri Göndermeyin! Parametreler aracılığıyla kullanıcıların şifreleri, tam adları, adresleri, telefon numaraları, kredi kartı bilgileri gibi kişisel ve hassas bilgilerini (Personally Identifiable Information — PII) kesinlikle göndermeyin! Bu hem gizlilik politikalarına aykırıdır hem de Firebase kullanım şartlarını ihlal edebilir.
Şimdi bir kaç örnek kod satırı paylaşıyorum.
- Kullanıcının başarılı şekilde giriş yaptığını yakalamak için;
void handleLoginSuccess(String userId, String loginMethod) { // örn: loginMethod = “email” veya “google”
// … giriş sonrası işlemler …
print(‘Kullanıcı $userId, $loginMethod ile giriş yaptı.’);
FirebaseAnalytics.instance.logLogin(loginMethod: loginMethod); // Standart login olayı
// İsterseniz ek bilgi için özel olay da gönderebilirsiniz:
// FirebaseAnalytics.instance.logEvent(
// name: ‘user_login_success’,
// parameters: { ‘login_method’: loginMethod }
// );
}
- Sepete eklenen ürün/ürünleri yakalamak için;
void addToCart(Product product, int quantity) {
// ... sepete ekleme logic'i ...
print('${product.name} (${product.id}) sepete eklendi.');
FirebaseAnalytics.instance.logAddToCart(
currency: 'TRY', // Para birimi
value: product.price * quantity, // Eklenen ürünlerin toplam değeri
items: [
AnalyticsEventItem( // Standart e-ticaret parametreleri
itemId: product.id,
itemName: product.name,
itemCategory: product.category,
price: product.price,
quantity: quantity,
),
],
);
// Alternatif olarak sadece basit bir olay:
// FirebaseAnalytics.instance.logEvent(
// name: 'add_to_cart_click',
// parameters: {
// 'product_id': product.id,
// 'product_name': product.name,
// 'quantity': quantity,
// 'screen_name': 'product_detail_screen' // Hangi ekrandan eklendi?
// }
// );
}
Paylaşılan içerikleri yakalama;
void shareContent(String contentId, String contentType, String shareMethod) { // örn: shareMethod = “whatsapp”
// … paylaşım logic’i …
print(‘$contentType ($contentId) $shareMethod ile paylaşıldı.’);
FirebaseAnalytics.instance.logShare(
contentType: contentType, // örn: ‘article’, ‘video’
itemId: contentId,
method: shareMethod, // Paylaşım yöntemi
);
}
2.3 Kullanıcı Özellikleri (User Properties)
Artık kullanıcıların nerelerde gezindiğini (ekranlar) ve orada neler yaptığını (olaylar) biliyoruz. Peki ya bu eylemleri yapan kullanıcıların kendileri hakkında biraz daha bilgi sahibi olmak istemez miydiniz? Örneğin, “Premium” aboneleriniz mi daha çok etkileşimde bulunuyor, yoksa “Ücretsiz” kullanıcılar mı? Uygulamanızı “İngilizce” kullananlar mı daha çok satın alma yapıyor, yoksa “Türkçe” kullananlar mı? İşte Kullanıcı Özellikleri (User Properties) tam da bu işe yarar: Kullanıcıları belirli özelliklere göre gruplandırmanızı ve analizlerinizi bu gruplara göre filtrelemenizi sağlar. Bu, kullanıcı davranışlarındaki farklılıkları anlamak ve daha hedefli iyileştirmeler yapmak için inanılmaz derecede güçlüdür.
- setUserId: Kullanıcıyı Tanımlamak
- Neden Gerekli? Bir kullanıcı farklı cihazlardan giriş yapabilir veya uygulamanızı silip tekrar yükleyebilir. Eğer her seferinde farklı bir anonim kullanıcı olarak görünürlerse, onların uzun vadeli davranışlarını takip edemezsiniz. setUserId, Firebase’e “Hey, bu olayları ve ekran görüntülemelerini şu belirli kullanıcıya bağla” demenin yoludur.
- Ne Zaman Kullanılır? Kullanıcı başarıyla giriş yaptığında veya kimliğini doğruladığınızda çağrılmalıdır.
- Ne Gönderilir? Kullanıcının sizin sisteminizdeki benzersiz ve anonimleştirilmiş kimliğini (örneğin, veritabanınızdaki rastgele oluşturulmuş bir kullanıcı ID’si) göndermelisiniz. Asla kullanıcının e-postasını, telefon numarasını veya adını doğrudan setUserId olarak göndermeyin!
- Çıkışta Temizleme: Kullanıcı çıkış yaptığında, setUserId(id: null) çağırarak bu kimliği temizlemelisiniz. Böylece sonraki anonim oturumlar yanlışlıkla önceki kullanıcıya bağlanmaz.
- setUserProperty: Kullanıcıyı Nitelemek
- Amacı: Kullanıcıyla ilgili, analizleri filtrelemek için kullanmak isteyeceğiniz özellikleri (segmentasyon bilgileri) ayarlamaktır. Bunlar zamanla değişebilir (örn: abonelik durumu) veya daha kalıcı olabilir (örn: ilk kayıt tarihi).
- Nasıl Çalışır? setUserProperty fonksiyonu iki ana parametre alır: name (özelliğin adı, snake_case önerilir) ve value (özelliğin değeri, String olmalıdır veya null olabilir).
- Örnekler: subscription_tier (“free”, “premium”, “pro”), app_language (“tr”, “en”), first_open_date (“2024–05–15”), push_notification_enabled (“true”, “false”), user_segment (“new_user”, “active_buyer”, “churn_risk”).
- Firebase Konsolu Tanımlaması: Bu özellikleri Firebase Konsolu’ndaki raporlarda filtre olarak kullanabilmek için, önce onları konsolda tanımlamanız gerekir: Analytics -> Custom Definitions -> User Properties -> “Create user property”. Burada özelliğe verdiğiniz isim (name), kodda setUserProperty ile gönderdiğiniz isimle tam olarak aynı olmalıdır.
- Limitler: Proje başına tanımlayabileceğiniz kullanıcı özelliği sayısı sınırlıdır (genellikle 25). Bu yüzden gerçekten anlamlı ve analiz için kullanacağınız özellikleri seçin.
- Değeri Temizleme: Bir kullanıcı özelliğini kaldırmak isterseniz, değerini null olarak ayarlayabilirsiniz: setUserProperty(name: ‘some_property’, value: null).
- Gizlilik Her Şeyden Önce!
- setUserId ve bazı kullanıcı özellikleri kişisel veri olarak kabul edilebilir. Bu verileri toplamadan ve kullanmadan önce mutlaka uygulamanızın Gizlilik Politikası’nda bunu açıkça belirtin ve (eğer GDPR, KVKK gibi yönetmelikler kapsamında iseniz) kullanıcıdan gerekli izinleri aldığınızdan emin olun.
Şimdi örnek bir senaryo ile kod üzerinden anlatalım;
Artık verilerimizi topladık. Sıra geldi bu verileri anlamlandırmaya.
Bölüm 3: Test Etme ve Veri Görüntüleme
Artık Flutter uygulamamız, kullanıcıların dijital adımlarını Firebase’e fısıldıyor: Hangi ekranlara baktıklarını, hangi butonlara tıkladıklarını ve kim olduklarına dair ipuçlarını (kullanıcı özellikleri) iletiyor. Peki, bu fısıltıların doğru bir şekilde hedefe ulaştığından emin miyiz? Ya da gönderdiğimiz mesajın tam olarak istediğimiz gibi olup olmadığını nasıl kontrol edeceğiz? Ve en önemlisi, tüm bu bilgiler toplandığında, bu veri yığınından anlamlı bir harita çıkarıp yolumuzu nasıl bulacağız?
İşte bu bölümde, analiz pusulamızı ayarlayacağız ve haritamızı okumayı öğreneceğiz. İki temel aracımız var: Birincisi, geliştirme aşamasında olayların doğru bir şekilde gönderilip gönderilmediğini anlık olarak kontrol etmemizi sağlayan DebugView. İkincisi ise, tüm kullanıcılardan gelen verilerin birleşip anlamlı raporlara dönüştüğü Firebase Konsolu’ndaki ana Analiz paneli. Bu iki aracı kullanarak hem verilerimizin doğruluğundan emin olacak hem de kullanıcı davranışının büyük resmini görmeye başlayacağız.
- Neden Kritik?
- Anında Geri Bildirim: Kodunuzu yazdıktan hemen sonra, olayın Firebase’e ulaşıp ulaşmadığını ve doğru görünüp görünmediğini kontrol edebilirsiniz. Saatlerce beklemenize gerek kalmaz.
- Hata Ayıklama: Yanlış olay adı, eksik veya hatalı parametre gibi sorunları anında tespit edip düzeltebilirsiniz.
- Doğrulama: Özellikle karmaşık olay akışlarında veya koşullu olaylarda, her şeyin planlandığı gibi çalıştığını teyit etmek için harikadır.
- Debug Modunu Nasıl Açarsınız?
- DebugView’ın çalışması için, test yaptığınız cihazda veya emülatör/simülatörde Firebase Analytics için debug modunu etkinleştirmeniz gerekir:
Android Cihaz/Emülatör:
Cihazınızın bilgisayarınıza bağlı ve adb (Android Debug Bridge) aracının çalışır durumda olduğundan emin olun.
Terminal veya komut istemcisini açın.
Şu komutu çalıştırın ( <paket_adınız> kısmını kendi uygulamanızın paket adıyla değiştirin — android/app/build.gradle dosyasındaki applicationId):
adb shell setprop debug.firebase.analytics.app <paket_adınız>adb shell setprop debug.firebase.analytics.app <paket_adınız>
Örnek: adb shell setprop debug.firebase.analytics.app com.sirketim.uygulamaadi
Uygulamanızı cihazda veya emülatörde çalıştırın (veya zaten çalışıyorsa yeniden başlatın).
Durdurmak için: Debug modunu kapatmak isterseniz şu komutu kullanın:
adb shell setprop debug.firebase.analytics.app .none.
iOS Simülatör/Cihaz (Xcode ile):
Flutter projenizi Xcode’da açın (ios klasöründeki Runner.xcworkspace dosyası).
Üst menüden Product -> Scheme -> Edit Scheme… seçeneğine gidin.
Sol taraftan Run seçeneğini seçin ve sağdaki Arguments sekmesine tıklayın.
Arguments Passed On Launch bölümündeki “+” ikonuna tıklayın ve şunu ekleyin:
-FIRAnalyticsDebugEnabled
Pencereyi kapatın.
Uygulamanızı Xcode üzerinden simülatöre veya bağlı iOS cihazına kurup çalıştırın.
Durdurmak için: Aynı yerden eklediğiniz -FIRAnalyticsDebugEnabled argümanını silebilirsiniz.
DebugView Arayüzünü Kullanmak:
Firebase Konsolu’na Gidin: Firebase projenizi açın.
Sol menüden Analytics -> DebugView seçeneğine tıklayın.
Eğer debug modu doğru şekilde etkinleştirilmişse ve uygulamanız çalışıyorsa, cihazınızın (veya simülatör/emülatörün) birkaç dakika içinde listede görünmesi gerekir. Bazen birden fazla cihaz olabilir, doğru olanı seçtiğinizden emin olun.
Artık uygulamanızla etkileşime geçmeye başlayabilirsiniz! Yaptığınız her eylem (ekran değiştirme, butona tıklama, olay tetikleme) neredeyse anlık olarak DebugView’daki zaman çizelgesinde (orta sütun) mavi (olaylar) veya yeşil (dönüşümler — conversions) kutucuklar olarak görünecektir.
- Zaman Çizelgesi (Ortadaki Sütun): Olayların gerçekleşme sırasını gösterir. En son olaylar en üstte görünür.
- Saniye Akışı (Soldaki Sütun): Olayların tam olarak hangi saniyede geldiğini gösterir.
- En Popüler Olaylar & Kullanıcı Özellikleri (Sağdaki Sütun): Mevcut oturumdaki en sık tetiklenen olayları ve en son ayarlanan kullanıcı özelliklerinin güncel değerlerini gösterir.
- Detaylar İçin Tıklayın: Ortadaki zaman çizelgesinde bir olaya tıkladığınızda, sağ sütunda o olayla birlikte gönderilen parametreleri ve değerlerini detaylı olarak görebilirsiniz. Bu, parametrelerin doğru gönderilip gönderilmediğini kontrol etmek için kritiktir. Aynı şekilde, bir kullanıcı özelliği ayarlandığında (user_property olayı) tıklayarak hangi özelliğin hangi değere ayarlandığını görebilirsiniz.
3.2 Firebase Konsolu
DebugView ile tek bir cihazdan gelen anlık verilere baktık. Peki ya tüm kullanıcılarınızdan gelen veriler ne olacak? İşte burada Firebase Konsolu’ndaki ana Analytics paneli devreye giriyor. Burası, uygulamanızı kullanan tüm kullanıcılardan (debug modunda olmayanlar dahil) toplanan verilerin işlenip, birleştirilip anlamlı raporlar ve grafikler halinde sunulduğu yerdir. DebugView’ın aksine, buradaki veriler gerçek zamanlı değildir; Firebase’in verileri işlemesi ve raporları güncellemesi genellikle birkaç saat sürer (bazen 24 saate kadar çıkabilir). Bu yüzden yeni bir olay ekledikten sonra hemen burada görünmesini beklemeyin.
Bu panel, uygulamanızın genel sağlığını, kullanıcı trendlerini, popüler özellikleri ve daha fazlasını anlamak için başvuracağınız ana merkezdir.
- Konsolda Nereye Bakmalı? (Temel Raporlar):
- Dashboard (Gösterge Paneli): Burası genel bir özettir. İlk bakışta uygulamanızın nabzını tutmanızı sağlar:
- Aktif Kullanıcılar: Son 30 dakika, 1 gün, 7 gün, 30 gün içinde uygulamanızı açan kullanıcı sayısı.
- Kullanıcı Etkileşimi (Engagement): Ortalama oturum süresi, etkileşimli oturum sayısı gibi metrikler.
- Elde Tutma (Retention): Kullanıcıların zaman içinde uygulamaya geri dönme oranları.
- Olay Sayıları: En sık gerçekleşen olaylar.
- Kitlelere Genel Bakış: Tanımladığınız önemli kullanıcı gruplarının büyüklükleri.
- Events (Olaylar): Burası, kaydettiğiniz tüm olayların (hem otomatik hem özel) detaylı listesini bulacağınız yerdir.
- Her olayın toplam kaç kez gerçekleştiğini (Count) ve kaç farklı kullanıcı tarafından tetiklendiğini (Users) görebilirsiniz.
- Bir olayın üzerine tıklayarak daha fazla detaya inebilir, zaman içindeki trendini görebilir ve parametreleri hakkında bilgi alabilirsiniz.
- Önemli: Özel olaylarınıza eklediğiniz özel parametrelerin (Google’ın standart parametreleri dışında kalanlar) raporlarda detaylı olarak (örneğin, hangi ‘button_name’ değerlerinin tıklandığı gibi) görünmesi için, onları Analytics -> Custom Definitions -> Custom Metrics/Dimensions bölümünde kaydetmeniz (register) gerekir. Aksi takdirde sadece olayın toplam sayısını görürsünüz.
- Audiences (Kitleler): Analizin en güçlü yanlarından biri kullanıcıları segmentlere ayırmaktır. Kitleler bölümünde, belirli davranışları sergileyen veya belirli özelliklere sahip kullanıcı grupları oluşturabilirsiniz.
- Örnek Kitleler: “Son 7 günde alışveriş yapanlar”, “Kaydolmuş ama profilini tamamlamamışlar”, “Premium aboneler”, “Belirli bir seviyeyi geçemeyen oyuncular”.
- Bu kitleleri sadece analiz için değil, aynı zamanda Firebase’in diğer hizmetleriyle (Remote Config, Cloud Messaging, In-App Messaging) hedefleme yapmak için de kullanabilirsiniz. Örneğin, “Sepete ürün ekleyip satın almayanlar” kitlesine özel bir indirim bildirimi gönderebilirsiniz.
- Funnels (Dönüşüm Hunileri): Kullanıcıların uygulamanızdaki belirli bir hedefi (örneğin, kayıt olma, satın alma, onboarding sürecini tamamlama) tamamlarken izlediği adımları görselleştirmenin harika bir yoludur.
- Bir huni tanımlayarak (örn: Adım 1: view_product, Adım 2: add_to_cart, Adım 3: begin_checkout, Adım 4: purchase), her adım arasında ne kadar kullanıcının ilerlediğini ve ne kadarının “döküldüğünü” (ayrıldığını) görebilirsiniz. Bu, kullanıcı akışınızdaki darboğazları tespit etmek için kritiktir.
- Retention (Elde Tutma): Kullanıcılarınızın uygulamanıza ne kadar sadık olduğunu gösterir. Genellikle bir kohort analizi olarak sunulur. Yani, belirli bir tarihte (örneğin, geçen hafta) uygulamanızı ilk kez kullanan kullanıcıların, sonraki günlerde/haftalarda yüzde kaçının uygulamaya geri döndüğünü gösterir. Düşük elde tutma oranları, uygulamanızda kullanıcıları geri getirecek bir değer veya etkileşim eksikliği olduğunu gösterebilir.
- User Properties (Kullanıcı Özellikleri): setUserProperty ile ayarladığınız özelliklerin dağılımını burada görebilirsiniz.
- Örneğin, “subscription_status” özelliğini tanımladıysanız, kullanıcılarınızın yüzde kaçının “free”, yüzde kaçının “premium” olduğunu gösteren kartlar görürsünüz.
- Unutmayın, bu özelliklerin burada görünmesi ve filtrelenebilir olması için önce Analytics -> Custom Definitions -> User Properties altında tanımlanmaları gerekir.
- Veri Gecikmesi (Data Latency)
Tekrar hatırlatalım: Firebase Konsolu’ndaki ana raporlar anlık değildir. Verilerin işlenip gösterilmesi zaman alır. Bir değişiklik yaptıktan veya uygulamanızı yayınladıktan sonra verilerin yansıması için lütfen birkaç saat (hatta bazen bir gün) bekleyin. DebugView ise bu bekleme süresini atlayıp anlık kontrol yapmanızı sağlar.
Artık hem anlık testler için DebugView’ı nasıl kullanacağınızı hem de tüm kullanıcılarınızdan gelen verileri Firebase Konsolu’nda nasıl okuyup yorumlayacağımızı öğrendik. DebugView ile verilerinizin doğruluğunu sağlayıp, Konsol ile büyük resmi görerek uygulamanız hakkında çeşitli kararlar alabiliriz.
Bu uzun serüvende detaylı olarak ve en temelden alarak Flutter Firebase Analytics Kullanımı anlatmaya çalıştım. Umarım ilgilisi için faydalı bir yazı olur. Uzun bir yazı olduğu için eksik ya da hatalı kısımlar varsa belirtmekten lütfen çekinmeyin.. Sonraki yazılarda görüşmek üzere..
Ek Kaynaklar
- Firebase Analytics Resmi Dokümantasyonu
- FlutterFire Analytics Paketi Dokümantasyonu
- Google Analytics Yardım Merkezi (Önerilen Olaylar vb.)
Github: www.github.com/abdullah017
Linkedin: www.linkedin.com/in/abdullahtas
Stackoverflow: https://stackoverflow.com/users/13807726/abdullah-t