# 📊 ShiroginSDK Analytics System (v1.0.0 Updated) **Firebase • AppsFlyer • Facebook** Tam Otomatik Event Forwarding + Çok Katmanlı Servis Mimarisi Bu doküman, **ShiroginSDK v1.0.0** sürümüyle birlikte gelen yeni analiz servis mimarisini açıklar. Yeni sistem, `ShiroginServiceRegistry` üzerinden otomatik başlatılır ve **Firebase**, **AppsFlyer** ve **Facebook** SDK’larına merkezi olarak bağlanır. Tüm loglama işlemleri event tabanlıdır — geliştirici sadece `EventService.Invoke()` çağrısı yapar. --- ## 🚀 1. Genel Bakış Yeni analiz sistemi üç ana katmandan oluşur: 1. **EventService (Core)** → Oyun içi tüm `ShiroginEvents`’leri yönetir. → `AnalyticsService`, `FirebaseService`, `AppsFlyerService` gibi servislerle otomatik iletişim kurar. 2. **AnalyticsService (Coordinator)** → Eventleri dinler, `AnalyticsEventMapper` üzerinden uygun SDK formatına dönüştürür. → Aktif SDK’lara log iletir (`FirebaseService`, `AppsFlyerService`, `FacebookService`). 3. **Platform Servisleri (Backends)** → Her SDK’ya özel bağlantı, initialization ve log gönderim süreçlerini yönetir. > Tüm servisler `ShiroginServiceRegistry.InitializeAll()` çağrısı ile otomatik olarak başlatılır. --- ## 🧩 2. Yeni Servis Mimarisi ### 🔹 Başlatma (Yeni Sistem) ```csharp ShiroginServiceRegistry.InitializeAll(); ``` Bu çağrı aşağıdaki servisleri sırayla oluşturur: * **EventService** → Event iletişimi * **DataService** → Kalıcı veri yönetimi * **FirebaseService** → Firebase Analytics + RemoteConfig * **AppsFlyerService** → AppsFlyer SDK * **FacebookService** → Meta SDK * **AnalyticsService** → Otomatik event yönlendirme --- ### 🔹 Örnek Event Akışı ```csharp EventService.Invoke(new ShiroginEvents.PurchaseCompletedEvent(product)); ``` Bu çağrıdan sonra sistem sırasıyla: 1. `EventService` event’i yakalar. 2. `AnalyticsService` event tipini analiz eder. 3. `AnalyticsEventMapper` parametreleri uygun SDK formatına çevirir. 4. `FirebaseService`, `AppsFlyerService` ve `FacebookService` log gönderir. Tam akış: ``` [Game Event] ↓ EventService ↓ AnalyticsService ↓ Firebase / AppsFlyer / Facebook ``` --- ## 🔥 3. Servis Güncellemeleri ### 🔸 AnalyticsService Artık doğrudan `ServiceBase`’den türetilir ve `ServiceLocator` üzerinden erişilir. Kendi `Initialize()` metodunda bağlı SDK’ları otomatik bulur. ```csharp var analytics = ServiceLocator.Get(); analytics.LogEvent(AnalyticsEventType.Purchase, parameters); ``` ### 🔸 FirebaseService Yeni sistemde hem **RemoteConfig** hem **Analytics** aynı instance üzerinden yönetilir. Başarılı başlatma sonrası artık `FirebaseReadyEvent` yayınlanır. ```csharp _eventService.Invoke(new ShiroginEvents.FirebaseReadyEvent()); ``` ### 🔸 AppsFlyerService Tamamen `ServiceBase` yapısına geçti. Başlatma işlemi otomatik olarak `ShiroginServiceRegistry` içinde gerçekleşir. ### 🔸 EventService Artık SDK’nin ana “event bus” yapısıdır. Tüm servisler (Firebase, Ads, IAP, RemoteConfig) kendi event’lerini bu sistem üzerinden yayınlar. Oyun içi tüm veri akışı **tek bir hat üzerinden** ilerler. --- ## 🧠 4. Otomatik Event Forwarding (Yeni) Yeni versiyonda, `AnalyticsEventListener` artık doğrudan kullanılmaz. Onun yerine `AnalyticsService` kendisi `EventService`’e subscribe olur ve dinleme işlemini merkezi hale getirir. Örnek: ```csharp EventService.Invoke(new ShiroginEvents.AdWatchedEvent("rewarded", true)); ``` → Otomatik olarak üç platforma log gönderilir. --- ## 🧰 5. SDKConfig Entegrasyonu Yeni `SDKConfig` sınıfı üzerinden tüm analitik modüller yönetilir: ```csharp public bool enableFirebaseAnalytics = true; public bool enableAppsFlyerAnalytics = true; public bool enableFacebookAnalytics = true; ``` Bu alanlar `AnalyticsService.Initialize()` aşamasında kontrol edilir, aktif olmayan SDK’lara log gönderimi yapılmaz. --- ## 🧾 6. Örnek Kullanım: Satın Alma Event’i ```csharp EventService.Invoke(new ShiroginEvents.PurchaseCompletedEvent("com.game.removeads", 4.99f, "USD")); ``` Arka planda: * `AnalyticsService` → `Purchase` event’ini tanır. * `AnalyticsEventMapper` → Parametreleri dönüştürür. * `FirebaseService`, `AppsFlyerService`, `FacebookService` → Aynı anda log gönderir. * `FirebaseReadyEvent` ve `PurchaseLoggedEvent` tetiklenir. --- ## ⚙️ 7. Güncellenen Özellikler ✅ Yeni Service Registry sistemi (otomatik init & dispose) ✅ EventService tabanlı otomatik log forwarding ✅ Firebase + AppsFlyer + Facebook tam entegrasyon ✅ Async initialization + error fallback ✅ Tek config kaynağı (`SDKConfig`) ✅ Event bazlı hata loglama (örneğin `NoConnectionEvent`, `RewardedAdUnavailableEvent`) --- ## 📘 8. Uyumlu Modüller Yeni sistem doğrudan şu modüllerle entegre çalışır: * `IAPService` → Satın alma logları * `AdsService` → Ad impression + revenue logları * `PopupService` → UI etkileşimleri * `RemoteConfigService` → Firebase senkronizasyon eventleri --- ## 🧠 9. Özet ShiroginSDK Analytics System v1.0.0 artık tamamen **service-driven ve event-driven** mimari üzerinde çalışır. Tüm SDK’lar ortak bir event hattını kullanır, initialization sırası `ShiroginServiceRegistry` tarafından yönetilir. Bu yapı hem oyun entegrasyonunu sadeleştirir hem de log takibini merkezi hale getirir. --- **Prepared by:** Emir Han MAMAK **Version:** 1.1.0 (2025.12) **Module:** ShiroginSDK.Runtime.Services.Implementations.Analytics ---