Playvoi/Assets/ShiroginSDK/Documents/Analytics/AnalyticsService.md

191 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📊 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** SDKları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 SDKlara log iletir (`FirebaseService`, `AppsFlyerService`, `FacebookService`).
3. **Platform Servisleri (Backends)**
→ Her SDKya ö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` eventi 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ı SDKları otomatik bulur.
```csharp
var analytics = ServiceLocator.Get<IAnalyticsService>();
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 SDKnin ana “event bus” yapısıdır.
Tüm servisler (Firebase, Ads, IAP, RemoteConfig) kendi eventlerini 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 SDKlara log gönderimi yapılmaz.
---
## 🧾 6. Örnek Kullanım: Satın Alma Eventi
```csharp
EventService.Invoke(new ShiroginEvents.PurchaseCompletedEvent("com.game.removeads", 4.99f, "USD"));
```
Arka planda:
* `AnalyticsService``Purchase` eventini 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 SDKlar 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
---