Playvoi/Playvoi.Client/Assets/ShiroginSDK/Runtime/Modules/Analytics/Scripts/AnalyticsEventMapper.cs

154 lines
No EOL
7.6 KiB
C#

using ShiroginSDK.Runtime.Modules.Analytics.Enums;
#if SHIROGIN_ANALYTICS || SHIROGIN_FIREBASE_ANALYTICS
using Firebase.Analytics;
#endif
namespace ShiroginSDK.Runtime.Modules.Analytics.Scripts
{
/// <summary>
/// Maps unified AnalyticsEventType values to their respective names
/// in Firebase, AppsFlyer, and Facebook SDKs.
/// </summary>
public static class AnalyticsEventMapper
{
// ---------------- FIREBASE ----------------
#if SHIROGIN_ANALYTICS || SHIROGIN_FIREBASE_ANALYTICS
public static string GetFirebaseName(AnalyticsEventType type)
{
return type switch
{
// Core events
AnalyticsEventType.Purchase => FirebaseAnalytics.EventPurchase,
AnalyticsEventType.AchievementUnlocked => FirebaseAnalytics.EventUnlockAchievement,
AnalyticsEventType.TutorialBegin => FirebaseAnalytics.EventTutorialBegin,
AnalyticsEventType.TutorialComplete => FirebaseAnalytics.EventTutorialComplete,
AnalyticsEventType.AdView => "ad_view",
AnalyticsEventType.AdImpression => FirebaseAnalytics.EventAdImpression,
AnalyticsEventType.AdClick => "ad_click",
AnalyticsEventType.SessionStart => "session_start",
AnalyticsEventType.SessionEnd => "session_end",
AnalyticsEventType.SignUp => FirebaseAnalytics.EventSignUp,
AnalyticsEventType.Login => FirebaseAnalytics.EventLogin,
AnalyticsEventType.AppOpen => FirebaseAnalytics.EventAppOpen,
// Parameters (Firebase naming from SDK)
AnalyticsEventType.ItemId => FirebaseAnalytics.ParameterItemID,
AnalyticsEventType.ItemName => FirebaseAnalytics.ParameterItemName,
AnalyticsEventType.ItemCategory => FirebaseAnalytics.ParameterItemCategory,
AnalyticsEventType.AdFormat => FirebaseAnalytics.ParameterAdFormat,
AnalyticsEventType.AdPlatform => FirebaseAnalytics.ParameterAdPlatform,
AnalyticsEventType.AdSource => FirebaseAnalytics.ParameterAdSource,
AnalyticsEventType.Currency => FirebaseAnalytics.ParameterCurrency,
AnalyticsEventType.Level => FirebaseAnalytics.ParameterLevel,
AnalyticsEventType.Location => FirebaseAnalytics.ParameterLocation,
AnalyticsEventType.PaymentType => FirebaseAnalytics.ParameterPaymentType,
AnalyticsEventType.Price => FirebaseAnalytics.ParameterPrice,
AnalyticsEventType.Quantity => FirebaseAnalytics.ParameterQuantity,
AnalyticsEventType.Score => FirebaseAnalytics.ParameterScore,
AnalyticsEventType.Success => FirebaseAnalytics.ParameterSuccess,
AnalyticsEventType.Value => FirebaseAnalytics.ParameterValue,
_ => "undefined"
};
}
#else
public static string GetFirebaseName(AnalyticsEventType type)
{
return null;
}
#endif
// ---------------- APPSFLYER ----------------
#if SHIROGIN_ANALYTICS || SHIROGIN_APPSFLYER
public static string GetAppsFlyerName(AnalyticsEventType type)
{
return type switch
{
// Core events
AnalyticsEventType.Purchase => AFInAppEvents.PURCHASE,
AnalyticsEventType.AchievementUnlocked => AFInAppEvents.ACHIEVEMENT_UNLOCKED,
AnalyticsEventType.TutorialBegin => "af_tutorial_begin",
AnalyticsEventType.TutorialComplete => AFInAppEvents.TUTORIAL_COMPLETION,
AnalyticsEventType.AdView => "af_ad_view",
AnalyticsEventType.AdImpression => "af_ad_impression",
AnalyticsEventType.AdClick => "af_ad_click",
AnalyticsEventType.SessionStart => "af_session_start",
AnalyticsEventType.SessionEnd => "af_session_end",
AnalyticsEventType.SignUp => AFInAppEvents.COMPLETE_REGISTRATION,
AnalyticsEventType.Login => AFInAppEvents.LOGIN,
AnalyticsEventType.AppOpen => AFInAppEvents.RE_ENGAGE,
// Parameters (AppsFlyer naming from SDK)
AnalyticsEventType.ItemId => AFInAppEvents.CONTENT_ID,
AnalyticsEventType.ItemName => "af_item_name",
AnalyticsEventType.ItemCategory => AFInAppEvents.CONTENT_TYPE,
AnalyticsEventType.AdFormat => "af_ad_format",
AnalyticsEventType.AdPlatform => "af_ad_platform",
AnalyticsEventType.AdSource => "af_ad_source",
AnalyticsEventType.Currency => AFInAppEvents.CURRENCY,
AnalyticsEventType.Level => AFInAppEvents.LEVEL,
AnalyticsEventType.Location => AFInAppEvents.LOCATION_COORDINATES,
AnalyticsEventType.PaymentType => "af_payment_type",
AnalyticsEventType.Price => AFInAppEvents.PRICE,
AnalyticsEventType.Quantity => AFInAppEvents.QUANTITY,
AnalyticsEventType.Score => AFInAppEvents.SCORE,
AnalyticsEventType.Success => AFInAppEvents.SUCCESS,
AnalyticsEventType.Value => AFInAppEvents.REVENUE,
_ => "undefined"
};
}
#else
public static string GetAppsFlyerName(AnalyticsEventType type)
{
return null;
}
#endif
// ---------------- FACEBOOK ----------------
#if SHIROGIN_ANALYTICS || SHIROGIN_FACEBOOK
public static string GetFacebookName(AnalyticsEventType type)
{
return type switch
{
// Core events
AnalyticsEventType.Purchase => "fb_mobile_purchase",
AnalyticsEventType.AchievementUnlocked => "fb_mobile_achievement_unlocked",
AnalyticsEventType.TutorialBegin => "fb_tutorial_begin",
AnalyticsEventType.TutorialComplete => "fb_tutorial_complete",
AnalyticsEventType.AdView => "ad_view",
AnalyticsEventType.AdImpression => "ad_impression",
AnalyticsEventType.AdClick => "ad_click",
AnalyticsEventType.SessionStart => "fb_mobile_session_start",
AnalyticsEventType.SessionEnd => "fb_mobile_session_end",
AnalyticsEventType.SignUp => "fb_mobile_complete_registration",
AnalyticsEventType.Login => "fb_mobile_login",
AnalyticsEventType.AppOpen => "fb_mobile_activate_app",
// Parameters (Facebook naming convention)
AnalyticsEventType.ItemId => "fb_content_id",
AnalyticsEventType.ItemName => "fb_content_title",
AnalyticsEventType.ItemCategory => "fb_content_type",
AnalyticsEventType.AdFormat => "ad_format",
AnalyticsEventType.AdPlatform => "ad_platform",
AnalyticsEventType.AdSource => "ad_source",
AnalyticsEventType.Currency => "fb_currency",
AnalyticsEventType.Level => "fb_level",
AnalyticsEventType.Location => "fb_location",
AnalyticsEventType.PaymentType => "payment_type",
AnalyticsEventType.Price => "fb_price",
AnalyticsEventType.Quantity => "num_items",
AnalyticsEventType.Score => "fb_score",
AnalyticsEventType.Success => "fb_success",
AnalyticsEventType.Value => "fb_value",
_ => "undefined"
};
}
#else
public static string GetFacebookName(AnalyticsEventType type)
{
return null;
}
#endif
}
}