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önderilmez

B2B 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.