Proje: Okul B2B App · Hub: Okul B2B App — Architecture
Analytics Mimarisi
Katmanlar
AnalyticsEvents.ts ← Tip-güvenli event fonksiyonları (domain API)
↓
AnalyticsService.ts ← Firebase GA4 wrapper (lazy-init)
↓
@react-native-firebase/analytics ← Native module (lazy require)
↓
Firebase GA4
CustomerIOService.ts ← Customer.io user tracking
↓
customerio-reactnative ← SDK (lazy require)
↓
Customer.io EU region
Firebase Analytics Lazy Init Kritik Detayı
// Top-level analytics() çağrısı Android'de crash yapıyor → JS try-catch yakalamıyor!
let analyticsInstance: any = null;
function getAnalyticsInstance(): any {
if (analyticsInitAttempted) return analyticsInstance;
analyticsInitAttempted = true;
try {
analyticsInstance = require('@react-native-firebase/analytics').default();
} catch { analyticsInstance = null; }
return analyticsInstance;
}Bu pattern firebase-analytics-ios-crash incident’in Android versiyonunu da önler.
AnalyticsEvents.ts Kullanım Kuralı
// Doğru: domain-specific track fonksiyonları
import { trackLeadEvent } from '@/services/AnalyticsEvents';
await trackLeadEvent('view', { lead_id: id });
// Yanlış: AnalyticsService'i direkt kullanma
AnalyticsService.getInstance().logEvent(...)Privacy Gate
Her event gönderiminden önce:
const enabled = await privacyManager.isAnalyticsEnabled();
if (!enabled) return; // Event gönderilmezB2B app’te varsayılan olarak aktif (c26a3cf commit).
AnalyticsHelper (Phase 3)
utils/AnalyticsHelper.ts — Gelecekte eklenecek Google Analytics 4 direkt entegrasyonu için placeholder. Şu an kullanılmıyor.
Related
- analytics-event-sistemi — event tipleri ve fonksiyonlar
- firebase-native-module-kurali — lazy load kuralları
- kullanim-sartlari-kvkk — privacy consent