using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; #if OVR_SAMPLES_ENABLE_FIREBASE using Firebase.Analytics; #endif public class AnalyticsUI : MonoBehaviour { #if OVR_SAMPLES_ENABLE_FIREBASE const int target = DebugUIBuilder.DEBUG_PANE_LEFT; bool analyticsCollectionEnabled = true; RectTransform textFieldSessionTimeoutDuration; RectTransform textFieldUserId; RectTransform textFieldName; RectTransform textFieldProperty; RectTransform textFieldEventName; List<(RectTransform, RectTransform)> intParams = new List<(RectTransform, RectTransform)>();//, FltParms, StrParams; List<(RectTransform, RectTransform)> fltParams = new List<(RectTransform, RectTransform)>();//, FltParms, StrParams; List<(RectTransform, RectTransform)> strParams = new List<(RectTransform, RectTransform)>();//, FltParms, StrParams; // Start is called before the first frame update void Start() { DebugUIBuilder ui = DebugUIBuilder.instance; ui.AddButton("ResetAnalyticsData", ResetAnalyticsData, target); ui.AddButton("SetAnalyticsCollectionEnabled", SetAnalyticsCollectionEnabled, target); ui.AddToggle("CollectionEnabled", delegate (Toggle t) { analyticsCollectionEnabled = t.enabled; }, analyticsCollectionEnabled, target); //ui.AddButton("SetDefaultEventParameters", SetDefaultEventParameters, target); ui.AddButton("SetSessionTimeoutDuration", SetSessionTimeoutDuration, target); textFieldSessionTimeoutDuration = ui.AddTextField("500000", target); ui.AddButton("SetUserId", SetUserId, target); textFieldUserId = ui.AddTextField("UserId", target); ui.AddButton("SetUserProperty", SetUserProperty, target); textFieldName = ui.AddTextField("Name", target); textFieldProperty = ui.AddTextField("Nroperty", target); // log event UI ui.AddButton("LogEvent", LogEvent, 3); textFieldEventName = ui.AddTextField("EventName", 3); ui.AddButton("AddInt", AddInt, 3); ui.AddButton("AddFlt", AddFlt, 3); ui.AddButton("AddStr", AddStr, 3); ui.AddButton("Clear", Clear, 3); ui.Show(); } void Clear() { DebugUIBuilder ui = DebugUIBuilder.instance; var field = typeof(DebugUIBuilder).GetField("insertedElements", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); var relayout = typeof(DebugUIBuilder).GetMethod("Relayout", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); List elements = ((List[])field.GetValue(ui))[3]; foreach ((RectTransform a, RectTransform b) in intParams) { elements.Remove(a); elements.Remove(b); a.SetParent(null); b.SetParent(null); } foreach ((RectTransform a, RectTransform b) in fltParams) { elements.Remove(a); elements.Remove(b); a.SetParent(null); b.SetParent(null); } foreach ((RectTransform a, RectTransform b) in strParams) { elements.Remove(a); elements.Remove(b); a.SetParent(null); b.SetParent(null); } relayout.Invoke(ui, new object[] { }); } void AddInt() { DebugUIBuilder ui = DebugUIBuilder.instance; var name = ui.AddTextField("INT_PARAM", 3); var value = ui.AddTextField("0", 3); intParams.Add((name, value)); } void AddFlt() { DebugUIBuilder ui = DebugUIBuilder.instance; var name = ui.AddTextField("FLT_PARAM", 3); var value = ui.AddTextField("0.0", 3); intParams.Add((name, value)); } void AddStr() { DebugUIBuilder ui = DebugUIBuilder.instance; var name = ui.AddTextField("STR_PARAM", 3); var value = ui.AddTextField("None", 3); intParams.Add((name, value)); } private List GetParameterList() { List parameters = new List(); foreach ((RectTransform a, RectTransform b) in intParams) { string name = a.GetComponentInChildren().text; int value; if(int.TryParse(b.GetComponentInChildren().text, out value)) { parameters.Add(new Parameter(name, value)); } } foreach ((RectTransform a, RectTransform b) in fltParams) { string name = a.GetComponentInChildren().text; float value; if (float.TryParse(b.GetComponentInChildren().text, out value)) { parameters.Add(new Parameter(name, value)); } } foreach ((RectTransform a, RectTransform b) in fltParams) { string name = a.GetComponentInChildren().text; string value = b.GetComponentInChildren().text; parameters.Add(new Parameter(name, value)); } return parameters; } void LogEvent() { Debug.Log("LogEvent"); List parameters = GetParameterList(); string eventName = textFieldEventName.GetComponentInChildren().text; FirebaseAnalytics.LogEvent(eventName, parameters.ToArray()); } void ResetAnalyticsData() { Debug.Log("ResetAnalyticsData"); FirebaseAnalytics.ResetAnalyticsData(); } void SetAnalyticsCollectionEnabled() { Debug.Log(string.Format("SetAnalyticsCollectionEnabled({0})", analyticsCollectionEnabled)); FirebaseAnalytics.SetAnalyticsCollectionEnabled(analyticsCollectionEnabled); } void SetSessionTimeoutDuration() { long ms; if( long.TryParse(textFieldSessionTimeoutDuration.GetComponentInChildren().text, out ms) ) { Debug.Log(string.Format("SetSessionTimeoutDuration({0})", ms)); FirebaseAnalytics.SetSessionTimeoutDuration(System.TimeSpan.FromMilliseconds(ms)); } } void SetUserId() { string userId = textFieldUserId.GetComponentInChildren().text; Debug.Log(string.Format("SetUserId({0})", userId)); FirebaseAnalytics.SetUserId(userId); } void SetUserProperty() { string name = textFieldName.GetComponentInChildren().text; string property = textFieldProperty.GetComponentInChildren().text; FirebaseAnalytics.SetUserProperty(name, property); } #endif }