Ejemplo n.º 1
0
        internal static void DoTrack(string eventName, Value properties)
        {
            if (!IsTracking)
            {
                return;
            }
            if (AutoTrackProperties == null)
            {
                AutoTrackProperties = CollectAutoTrackProperties();
            }
            properties.Merge(AutoTrackProperties);
            // These auto properties can change in runtime so we don't bake them into AutoProperties
            properties["$screen_width"]  = Screen.width;
            properties["$screen_height"] = Screen.height;
            properties.Merge(OnceProperties);
            OnceProperties = new Value();
            properties.Merge(SuperProperties);
            if (TimedEvents.TryGetValue(eventName, out Value startTime))
            {
                properties["$duration"] = CurrentTime() - (double)startTime;
                TimedEvents.Remove(eventName);
            }
            properties["token"]       = MixpanelSettings.Instance.Token;
            properties["distinct_id"] = DistinctId;
            properties["time"]        = CurrentTime();
            Value data = new Value {
                { "event", eventName }, { "properties", properties }
            };

            Enqueue(MixpanelTrackUrl, data);
        }
Ejemplo n.º 2
0
        private static void DoTrack(string eventName, Value properties)
        {
            if (!IsTracking)
            {
                return;
            }
            if (properties == null)
            {
                properties = ObjectPool.Get();
            }
            if (_autoTrackProperties == null)
            {
                _autoTrackProperties = CollectAutoTrackProperties();
            }
            properties.Merge(_autoTrackProperties);
            // These auto properties can change in runtime so we don't bake them into AutoProperties
            properties["$screen_width"]  = Screen.width;
            properties["$screen_height"] = Screen.height;
            properties.Merge(OnceProperties);
            ResetOnceProperties();
            properties.Merge(SuperProperties);
            if (TimedEvents.TryGetValue(eventName, out Value startTime))
            {
                properties["$duration"] = CurrentTime() - (double)startTime;
                TimedEvents.Remove(eventName);
            }
            properties["token"]       = MixpanelSettings.Instance.Token;
            properties["distinct_id"] = DistinctId;
            properties["time"]        = CurrentTime();
            Value data = ObjectPool.Get();

            data["event"]      = eventName;
            data["properties"] = properties;
            MixpanelManager.EnqueueTrack(data);
        }
Ejemplo n.º 3
0
        internal static void track(string eventName, Value properties)
        {
            if (!IsTracking)
            {
                return;
            }
            if (AutoProperties == null)
            {
                AutoProperties = collectAutoProperties();
            }
            foreach (var item in AutoProperties)
            {
                properties[item.Key] = item.Value;
            }
            // These auto properties can change in runtime so don't bake them
            properties["$screen_width"]  = Screen.width;
            properties["$screen_height"] = Screen.height;
            foreach (var item in OnceProperties)
            {
                properties[item.Key] = item.Value;
            }
            OnceProperties = new Value();
            foreach (var item in SuperProperties)
            {
                properties[item.Key] = item.Value;
            }
            object startTime;

            if (TimedEvents.TryGetValue(eventName, out startTime))
            {
                properties["$duration"] = CurrentTime() - (double)startTime;
                var events = TimedEvents;
                events.Remove(eventName);
                TimedEvents = events;
            }
            properties["token"]       = MixpanelSettings.Instance.Token;
            properties["distinct_id"] = DistinctID;
            properties["time"]        = CurrentTime();
            var data = new Value()
            {
                { "event", eventName }, { "properties", properties }
            };

            DoRequest("https://api.mixpanel.com/track", data);
            // "https://api.mixpanel.com/import" if time is long?!?
        }