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); }
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); }
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?!? }