using System.Collections.Generic;
using ShiroginSDK.Runtime.Core.SDK;
using ShiroginSDK.Runtime.Services.Base;
using ShiroginSDK.Runtime.Services.Interfaces;
using UnityEngine;
#if SHIROGIN_APPSFLYER
using AppsFlyerSDK;
#endif
// artık çakışma yok
namespace ShiroginSDK.Runtime.Services.Implementations.AppsFlyerServiceNS
{
#if SHIROGIN_APPSFLYER
///
/// Handles AppsFlyer initialization and event tracking for analytics and attribution.
///
public class AppsFlyerService : ServiceBase, IAppsFlyerService, IAppsFlyerConversionData
{
private ShiroginConfig _config;
// ----------------------------------------------------
// Conversion & Attribution Callbacks
// ----------------------------------------------------
public void onConversionDataSuccess(string conversionData)
{
Debug.Log($"[AppsFlyerService] 📈 Conversion data received: {conversionData}");
}
public void onConversionDataFail(string error)
{
Debug.LogError($"[AppsFlyerService] ❌ Conversion data failed: {error}");
}
public void onAppOpenAttribution(string attributionData)
{
Debug.Log($"[AppsFlyerService] 🔗 App open attribution: {attributionData}");
}
public void onAppOpenAttributionFailure(string error)
{
Debug.LogError($"[AppsFlyerService] ❌ Attribution failed: {error}");
}
public bool IsInitialized { get; private set; }
// ----------------------------------------------------
// Event Tracking
// ----------------------------------------------------
public void TrackPurchase(string productId, string currency, double price, int quantity = 1)
{
if (_config == null || !_config.enableAppsFlyerAnalytics) return;
if (!IsInitialized)
{
Debug.LogWarning("[AppsFlyerService] ⚠️ TrackPurchase called before initialization.");
return;
}
var eventValues = new Dictionary
{
{ AFInAppEvents.CONTENT_ID, productId },
{ AFInAppEvents.CURRENCY, currency },
{ AFInAppEvents.REVENUE, price.ToString("F2") },
{ AFInAppEvents.QUANTITY, quantity.ToString() }
};
AppsFlyer.sendEvent(AFInAppEvents.PURCHASE, eventValues);
Debug.Log($"[AppsFlyerService] 💰 Purchase tracked: {productId} ({price} {currency})");
}
public void TrackCustomEvent(string eventName, Dictionary eventValues = null)
{
if (_config == null || !_config.enableAppsFlyerAnalytics) return;
if (!IsInitialized)
{
Debug.LogWarning("[AppsFlyerService] ⚠️ TrackCustomEvent called before initialization.");
return;
}
AppsFlyer.sendEvent(eventName, eventValues ?? new Dictionary());
Debug.Log($"[AppsFlyerService] 🧭 Custom event sent: {eventName}");
}
// ----------------------------------------------------
// Initialization
// ----------------------------------------------------
protected override void OnInitialize()
{
_config = ShiroginConfig.Load();
if (!_config.enableAppsFlyerAnalytics)
{
Debug.LogWarning("[AppsFlyerService] 🛑 AppsFlyer DISABLED in Config. Running in Dummy Mode.");
return;
}
if (_config == null)
{
Debug.LogError("[AppsFlyerService] ❌ SDKConfig not found.");
return;
}
if (string.IsNullOrEmpty(_config.appsFlyerDevKey) || string.IsNullOrEmpty(_config.appsFlyerAppId))
{
Debug.LogError("[AppsFlyerService] ❌ AppsFlyer DevKey or AppId missing in SDKConfig.");
return;
}
#if UNITY_IOS
AppsFlyer.initSDK(_config.appsFlyerDevKey, _config.appsFlyerAppId);
#elif UNITY_ANDROID
AppsFlyer.initSDK(_config.appsFlyerDevKey, _config.appsFlyerAppId);
#else
Debug.LogWarning("[AppsFlyerService] ⚠️ Unsupported platform for AppsFlyer.");
return;
#endif
AppsFlyer.startSDK();
IsInitialized = true;
Debug.Log("[AppsFlyerService] ✅ AppsFlyer initialized successfully.");
}
protected override void OnDispose()
{
IsInitialized = false;
}
}
#else
///
/// Handles AppsFlyer initialization and event tracking for analytics and attribution.
///
public class AppsFlyerService : ServiceBase, IAppsFlyerService
{
private ShiroginConfig _config;
// ----------------------------------------------------
// Conversion & Attribution Callbacks
// ----------------------------------------------------
public bool IsInitialized { get; private set; }
// ----------------------------------------------------
// Event Tracking
// ----------------------------------------------------
public void TrackPurchase(string productId, string currency, double price, int quantity = 1)
{
Debug.Log($"[AppsFlyerService] Dummy {productId} ({price} {currency})");
}
public void TrackCustomEvent(string eventName, Dictionary eventValues = null)
{
Debug.Log($"[AppsFlyerService] Dummy Custom event sent: {eventName}");
}
// ----------------------------------------------------
// Initialization
// ----------------------------------------------------
protected override void OnInitialize()
{
_config = ShiroginConfig.Load();
if (_config == null)
{
Debug.LogError("[AppsFlyerService] Dummy ❌ SDKConfig not found.");
return;
}
if (string.IsNullOrEmpty(_config.appsFlyerDevKey) || string.IsNullOrEmpty(_config.appsFlyerAppId))
{
Debug.LogError("[AppsFlyerService] Dummy AppsFlyer DevKey or AppId missing in SDKConfig.");
return;
}
IsInitialized = true;
Debug.Log("[AppsFlyerService] Dummy AppsFlyer initialized successfully.");
}
protected override void OnDispose()
{
IsInitialized = false;
}
}
#endif
}