191 lines
5.5 KiB
Markdown
191 lines
5.5 KiB
Markdown
# 📊 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<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 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
|
||
|
||
---
|