using UnityEngine; using System.Collections.Generic; using UnityEngine.Analytics; using IVDataFormat; #if APPSFLYER_ANALYTICS using AppsFlyerSDK; #endif public class AnalyticsMgr { #if UNITY_ANDROID private const string D_PLATFORM = "Android"; #elif UNITY_IOS private const string D_PLATFORM = "iOS"; #else private const string D_PLATFORM = "-"; #endif private static Dictionary dicEventDevice = null; private static bool FirebaseInit = false; public static void Init() { if (dicEventDevice == null) { dicEventDevice = new Dictionary { { "platform", D_PLATFORM }, { "game_ver", FormatString.AppVersion() }, { "os_ver", SystemInfo.operatingSystem }, { "device_type", SystemInfo.deviceModel } }; } } public static void OnFirebaseInitialized() { FirebaseInit = true; } public static void EventOpenAppFirst() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventOpenAppFirst", dicEventDevice); #if APPSFLYER_ANALYTICS Dictionary datas = new Dictionary(); AppsFlyer.sendEvent("af_first_open", datas); #endif #endif } public static void EventOpenApp() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventOpenApp", dicEventDevice); #endif } public static void EventCheckGameVer() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventCheckGameVer", dicEventDevice); #endif } public static void EventTryLoginGuest() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventTryLoginGuest", dicEventDevice); #endif } public static void EventFinishLoginGuest() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventFinishLoginGuest", dicEventDevice); #endif } public static void EventTryLoginApple() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventTryLoginApple", dicEventDevice); #endif } public static void EventFinishLoginApple() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventFinishLoginApple", dicEventDevice); #endif } public static void EventTryLoginGoogle() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventTryLoginGoogle", dicEventDevice); #endif } public static void EventFinishLoginGoogle() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("EventFinishLoginGoogle", dicEventDevice); #endif } public static void EventCheckUserID(string userid) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.Parameter param_uid = new Firebase.Analytics.Parameter("uid", userid); Firebase.Analytics.FirebaseAnalytics.LogEvent("CheckUserId", param_uid); } #endif #if APPSFLYER_ANALYTICS //Dictionary playerid = new Dictionary(); //playerid.Add("userid", userid); //AppsFlyer.sendEvent("CheckUserId", playerid); AppsFlyer.setCustomerUserId(userid); #endif #endif } public static void EventAttend(int iclearcount, int iday) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) if (iclearcount > 0 || iday > 10) return; string eventname = string.Format("checkin_d{0}", iday); Analytics.CustomEvent(eventname); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname); } #endif #if APPSFLYER_ANALYTICS Dictionary datas = new Dictionary(); AppsFlyer.sendEvent(eventname, datas); #endif #endif } public static void EventFirstClearStage(int iarea, int istage) { //#if UNITY_EDITOR || VER_DEV || VER_TEST // return; //#endif // if (istage != 10 && istage != 20) // return; // string eventname = string.Format("FirstClearStage{0}-{1}", iarea, istage); // string eventname2 = null; // //int[] areainfo = DataHandler.GetThemeArea(iarea); // //switch (areainfo[0]) // //{ // // case 1: // // eventname2 = string.Format("stage{0:00}_{1:00}", areainfo[1], istage); // // break; // // case 2: // // eventname2 = string.Format("hell{0:00}_{1:00}", areainfo[1], istage); // // break; // // case 3: // // eventname2 = string.Format("purgatory{0:00}_{1:00}", areainfo[1], istage); // // break; // // default: // // eventname2 = string.Format("theme{2:00}_{0:00}_{1:00}", areainfo[1], istage, areainfo[0]); // // break; // //} // //Analytics.CustomEvent(eventname); //#if FIREBASE_ANALYTICS // if (FirebaseInit) // { // Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname, "peerage", DataHandler.PlayData.peerage); // Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname2, "peerage", DataHandler.PlayData.peerage); // } //#endif //#if APPSFLYER_ANALYTICS // Dictionary datas = new Dictionary() { { "area", iarea.ToString() }, { "stage", istage.ToString() } }; // AppsFlyer.sendEvent(eventname, datas); // AppsFlyer.sendEvent(eventname2, datas); //#endif } public static void EventClearStage(int iarea, int istage) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) if (istage != 10 && istage != 20) return; string eventname = string.Format("ClearStage{0}-{1}", iarea, istage); Analytics.CustomEvent(eventname); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname, "peerage", DataHandler.PlayData.peerage); } #endif #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(eventname, new Dictionary() { { "area", iarea.ToString() }, { "stage", istage.ToString() } }); #endif #endif } public static void EventPeerage(int ipeeragelevel) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) string eventname = string.Format("Peerage{0}", ipeeragelevel); Analytics.CustomEvent(eventname); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname, "playtime", DataHandler.PlayRecordTotal.playTime); } #endif #if APPSFLYER_ANALYTICS Dictionary levelachieve = new Dictionary(); levelachieve.Add("af_level", ipeeragelevel.ToString()); levelachieve.Add("playtime", DataHandler.PlayRecordTotal.playTime.ToString()); AppsFlyer.sendEvent("af_level_achieved", levelachieve); #endif #endif } public static void EventSkillUp(int skillid, int iprevlevel, int ilevel) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) string eventname = null; //switch (skillid) //{ // case IdPreset.Skill_CharAtk: // eventname = "atk_pow_{0}"; // break; // case IdPreset.Skill_CharSpd: // eventname = "atk_spd_{0}"; // break; // case IdPreset.Skill_Skill1Rate: // eventname = "dragonpunch_rate_{0}"; // break; // case IdPreset.Skill_Skill1Atk: // eventname = "dragonpunch_pwr_{0}"; // break; // case IdPreset.Skill_Skill2Rate: // eventname = "lightningball_rate_{0}"; // break; // case IdPreset.Skill_Skill2Atk: // eventname = "lightningball_pwr_{0}"; // break; // case IdPreset.Skill_Skill3Rate: // eventname = "wagon_atk_rate_{0}"; // break; // case IdPreset.Skill_Skill3Atk: // eventname = "wagon_atk_pwr_{0}"; // break; // case IdPreset.Skill_Skill4Rate: // eventname = "ganadarapa_rate_{0}"; // break; // case IdPreset.Skill_Skill4Atk: // eventname = "ganadarapa_pwr_{0}"; // break; // case IdPreset.Skill_Skill5Rate: // eventname = "gofinger_rate_{0}"; // break; // case IdPreset.Skill_Skill5Atk: // eventname = "gofinger_pwr_{0}"; // break; // default: // return; //} //Dictionary datas = new Dictionary(); //datas.Add("playtime", DataHandler.PlayRecordTotal.playTime.ToString()); if (iprevlevel < 100 && ilevel >= 100) { Analytics.CustomEvent(string.Format(eventname, 100)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 100), datas); #endif } if (iprevlevel < 200 && ilevel >= 200) { Analytics.CustomEvent(string.Format(eventname, 200)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 200), datas); #endif } if (iprevlevel < 300 && ilevel >= 300) { Analytics.CustomEvent(string.Format(eventname, 300)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 300), datas); #endif } if (iprevlevel < 400 && ilevel >= 400) { Analytics.CustomEvent(string.Format(eventname, 400)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 400), datas); #endif } if (iprevlevel < 500 && ilevel >= 500) { Analytics.CustomEvent(string.Format(eventname, 500)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 500), datas); #endif } if (iprevlevel < 600 && ilevel >= 600) { Analytics.CustomEvent(string.Format(eventname, 600)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 600), datas); #endif } if (iprevlevel < 700 && ilevel >= 700) { Analytics.CustomEvent(string.Format(eventname, 700)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 700), datas); #endif } if (iprevlevel < 800 && ilevel >= 800) { Analytics.CustomEvent(string.Format(eventname, 800)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 800), datas); #endif } if (iprevlevel < 900 && ilevel >= 900) { Analytics.CustomEvent(string.Format(eventname, 900)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 900), datas); #endif } if (iprevlevel < 1000 && ilevel >= 1000) { Analytics.CustomEvent(string.Format(eventname, 1000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 1000), datas); #endif } if (iprevlevel < 1500 && ilevel >= 1500) { Analytics.CustomEvent(string.Format(eventname, 1500)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 1500), datas); #endif } if (iprevlevel < 2000 && ilevel >= 2000) { Analytics.CustomEvent(string.Format(eventname, 2000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 2000), datas); #endif } if (iprevlevel < 2500 && ilevel >= 2500) { Analytics.CustomEvent(string.Format(eventname, 2500)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 2500), datas); #endif } if (iprevlevel < 3000 && ilevel >= 3000) { Analytics.CustomEvent(string.Format(eventname, 3000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 3000), datas); #endif } if (iprevlevel < 3500 && ilevel >= 3500) { Analytics.CustomEvent(string.Format(eventname, 3500)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 3500), datas); #endif } if (iprevlevel < 4000 && ilevel >= 4000) { Analytics.CustomEvent(string.Format(eventname, 4000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 4000), datas); #endif } if (iprevlevel < 4500 && ilevel >= 4500) { Analytics.CustomEvent(string.Format(eventname, 4500)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 4500), datas); #endif } if (iprevlevel < 5000 && ilevel >= 5000) { Analytics.CustomEvent(string.Format(eventname, 5000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 5000), datas); #endif } if (iprevlevel < 6000 && ilevel >= 6000) { Analytics.CustomEvent(string.Format(eventname, 6000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 6000), datas); #endif } if (iprevlevel < 7000 && ilevel >= 7000) { Analytics.CustomEvent(string.Format(eventname, 7000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 7000), datas); #endif } if (iprevlevel < 8000 && ilevel >= 8000) { Analytics.CustomEvent(string.Format(eventname, 8000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 8000), datas); #endif } if (iprevlevel < 9000 && ilevel >= 9000) { Analytics.CustomEvent(string.Format(eventname, 9000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 9000), datas); #endif } if (iprevlevel < 10000 && ilevel >= 10000) { Analytics.CustomEvent(string.Format(eventname, 10000)); #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(string.Format(eventname, 10000), datas); #endif } #endif } public static void EventCompAds() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_view"); } #endif #if APPSFLYER_ANALYTICS Dictionary datas = new Dictionary() { { "af_adrev_ad_type", "Reward" } }; AppsFlyer.sendEvent("af_ads", datas); AppsFlyer.sendEvent("ad_view", datas); AppsFlyer.sendEvent("ad_reward", datas); #endif #endif } public static void EventCompAdsCount(int icount) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) string eventname = null; switch (icount) { case 5: case 10: case 15: case 20: case 30: case 50: eventname = string.Format("ad_reward{0:00}", icount); break; default: return; } #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname); } #endif #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent(eventname, new Dictionary()); #endif #endif } public static void EventClickAds() { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_click"); } #endif #if APPSFLYER_ANALYTICS Dictionary datas = new Dictionary() { { "af_adrev_ad_type", "Reward" } }; AppsFlyer.sendEvent("ad_click", datas); #endif #endif } public static void EventBuyShop(int shopid) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Analytics.CustomEvent("BuyShop", new Dictionary { { "use_name", shopid } }); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.Parameter param_name = new Firebase.Analytics.Parameter("use_name", shopid); Firebase.Analytics.FirebaseAnalytics.LogEvent("BuyShop", param_name); } #endif #if APPSFLYER_ANALYTICS AppsFlyer.sendEvent("buy_shop", new Dictionary() { { "shop_id", shopid.ToString() } }); #endif #endif } public static void EventUseCash(string productId, string strprice, string currency, string signature = null, string purchaseData = null, string transactionId = null) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE || VER_ONESTORE) if (string.IsNullOrEmpty(productId)) return; Analytics.CustomEvent("UseCash", new Dictionary { { "use_name", productId } }); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent("UseCash_" + productId); } #endif #if APPSFLYER_ANALYTICS #if UNITY_ANDROID AppsFlyerAndroid.validateAndSendInAppPurchase(Global.GooglePublicKey, signature, purchaseData, strprice, currency, null, SingleManager.Instance); #elif UNITY_IOS //AppsFlyeriOS.validateAndSendInAppPurchase(productId, strprice, currency, transactionId, null, SingleManager.Instance); Dictionary purchaseEvent = new Dictionary(); purchaseEvent.Add(AFInAppEvents.CURRENCY, currency); purchaseEvent.Add(AFInAppEvents.REVENUE, strprice); purchaseEvent.Add(AFInAppEvents.QUANTITY, "1"); purchaseEvent.Add(AFInAppEvents.CONTENT_ID, productId); purchaseEvent.Add(AFInAppEvents.ORDER_ID, transactionId); AppsFlyer.sendEvent(AFInAppEvents.PURCHASE, purchaseEvent); #endif // 환불. //AppsFlyer.sendEvent("cancel_purchase", purchaseEvent); #endif #endif } public static void EventUseCashOneStore(string productId, string strprice, string currency, string signature = null, string purchaseData = null) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE || !VER_ONESTORE) if (string.IsNullOrEmpty(productId)) return; Analytics.CustomEvent("UseCash", new Dictionary { { "use_name", productId } }); Analytics.CustomEvent("OneStoreIAP", new Dictionary { { "use_name", productId } }); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent("UseCash_" + productId); } #endif #if APPSFLYER_ANALYTICS Dictionary purchaseEvent = new Dictionary(); purchaseEvent.Add(AFInAppEvents.CURRENCY, currency); purchaseEvent.Add(AFInAppEvents.REVENUE, strprice); purchaseEvent.Add(AFInAppEvents.QUANTITY, "1"); //purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a"); purchaseEvent.Add(AFInAppEvents.CONTENT_ID, productId); AppsFlyer.sendEvent(AFInAppEvents.PURCHASE, purchaseEvent); #endif #endif } public static void EventBuyProduct(string productid) { #if !(UNITY_EDITOR || VER_DEV || VER_TEST || VER_ZOMBIE) Logger.LogWarning("Analytics - EventBuyProduct : " + productid); string eventname = null; switch (productid) { case "rf_110002": eventname = "shop_dia_11"; break; case "rf_110003": eventname = "shop_dia_27"; break; case "rf_110004": eventname = "shop_dia_100"; break; case "rf_110005": eventname = "shop_dia_170x2"; break; case "rf_110006": eventname = "shop_dia_350x2"; break; case "rf_110012": eventname = "pack_ad_free"; break; case "rf_110013": eventname = "pack_ beginner"; break; case "rf_110014": eventname = "pack_master"; break; case "rf_110015": eventname = "pack_grand_master"; break; case "rf_110016": eventname = "pack_enhancement_a"; break; case "rf_110017": eventname = "pack_enhancement_b"; break; case "rf_130001": eventname = "pass_monster"; break; case "rf_130002": eventname = "pass_dungeon"; break; case "rf_130003": eventname = "pass_gold"; break; case "rf_130004": eventname = "pass_raid"; break; case "rf_130005": eventname = "pass_fighter"; break; default: Logger.LogWarning("Analytics - EventBuyProduct RETURN"); #if APPSFLYER_ANALYTICS //if (PreorderMgr.SkuPreRegistration.Equals(productid)) // AppsFlyer.sendEvent("pre_registration_" + Global.Platform, new Dictionary() { { "use_name", productid } }); //else // AppsFlyer.sendEvent("cash_rf_" + productid, new Dictionary() { { "use_name", productid } }); #endif return; } Logger.LogWarning("Analytics - EventBuyProduct NEXT : " + eventname); #if FIREBASE_ANALYTICS if (FirebaseInit) { Firebase.Analytics.FirebaseAnalytics.LogEvent(eventname); } #endif #if APPSFLYER_ANALYTICS Dictionary datas = new Dictionary(); datas.Add("product_id", productid); AppsFlyer.sendEvent(eventname, datas); #endif #endif } }