GoogleAnalyticsTracker создает уникальный сеанс для приложения winforms - PullRequest
0 голосов
/ 19 марта 2019

Я использую GoogleAnalyticsTracker , который прекрасно работает, и я получаю аналитические отчеты для использования в моем приложении WinForms.

Однако каждый удар создает новый уникальный пользовательский сеанс в Google Analytics, и я хотел бы показать уникальным пользователям, чтобы дать представление о том, сколько пользователей используют мое приложение.

Я прочитал раздел в инструкции, но я не уверен, как реализовать интерфейс - я понимаю основы использования интерфейса, но это то, что я хотел бы узнать больше здесь.

С официального сайта сессии документируются следующим образом:

Сессии также не отслеживаются: каждое отслеживаемое событие считается как новый уникальный посетитель Google Analytics. Если вам нужно отслеживать пользовательские сеансы, реализуйте пользовательский IAnalyticsSession и передайте его конструктору Tracker объект.

Я хотел бы знать, как я могу реализовать пользовательский IAnalyticsSession и передать его конструктору объекта Tracker в мой код ниже:

public class CommonTracking : IAnalyticsSession
{
    static string googleID = "UA-######-##";

    public string GenerateCacheBuster()
    {
        throw new NotImplementedException();
    }

    public string GenerateSessionId()
    {
        throw new NotImplementedException();
    }

    public static void TrackFeature()
    {
        // Get calling method name
        StackTrace stackTrace = new StackTrace();
        MethodBase methodBase = stackTrace.GetFrame(1).GetMethod();
        TrackFeature(methodBase.Name);
    }

    public static async void TrackFeature(string FeatureCustom)
    {

        SimpleTrackerEnvironment trackerEnvironment = new SimpleTrackerEnvironment(Environment.OSVersion.Platform.ToString(),
                                                                    Environment.OSVersion.Version.ToString(),
                                                                    Environment.OSVersion.VersionString);

        // Overwrite platform details
        KeyValuePair<string, string> kvpOSSpecs = GetOperatingSystemProductName();
        trackerEnvironment.OsPlatform = kvpOSSpecs.Key;
        trackerEnvironment.OsVersion = kvpOSSpecs.Value;

        SimpleTracker tracker = new SimpleTracker(googleID, trackerEnvironment);

        await tracker.TrackPageViewAsync(System.AppDomain.CurrentDomain.FriendlyName, FeatureCustom, null);

    }



    static KeyValuePair<string, string> GetOperatingSystemProductName()
    {
        KeyValuePair<string, string> OperatingSystemSpec = new KeyValuePair<string, string>();
        ManagementObjectSearcher wmiOsInfo = new ManagementObjectSearcher("SELECT Caption, Version FROM Win32_OperatingSystem");
        try
        {

            foreach (var os in wmiOsInfo.Get())
            {
                var version = os["Version"].ToString();
                var productName = os["Caption"].ToString();
                OperatingSystemSpec = new KeyValuePair<string, string>(productName, version);
            }
        }
        catch { }

        return OperatingSystemSpec;
    }
}

1 Ответ

0 голосов
/ 19 марта 2019

Проблема решена ...

public class GoogleTracking : IAnalyticsSession
    {
        static string _GoogleAnayticsPropertyID = string.Empty;
        static AnalyticsSession _Session = new AnalyticsSession();
        static Dictionary<int, string> _CustomDimensions = new Dictionary<int, string>();
        static int iVal = 0;

        public GoogleTracking(string googleID)
        {
            _GoogleAnayticsPropertyID = googleID;
        }
        public string GenerateCacheBuster()
        {
            return _Session.GenerateCacheBuster();
        }

        public string GenerateSessionId()
        {
            return _Session.GenerateSessionId();
        }

        public void UserDefined(string strUserVal)
        {
            _CustomDimensions.Add(iVal++, strUserVal);
        }


        public static void TrackFeature()
        {
            StackTrace stackTrace = new StackTrace();
            MethodBase methodBase = stackTrace.GetFrame(1).GetMethod();
            TrackFeature(methodBase.Name);
        }

        public static async void TrackFeature(string FeatureCustom)
        {
            if (!string.IsNullOrEmpty(_GoogleAnayticsPropertyID))
            {
                SimpleTrackerEnvironment trackerEnvironment = new SimpleTrackerEnvironment(Environment.OSVersion.Platform.ToString(),
                                                                            Environment.OSVersion.Version.ToString(),
                                                                            Environment.OSVersion.VersionString);

                // Overwrite platform details
                KeyValuePair<string, string> kvpOSSpecs = GetOperatingSystemProductName();
                trackerEnvironment.OsPlatform = kvpOSSpecs.Key;
                trackerEnvironment.OsVersion = kvpOSSpecs.Value;

                SimpleTracker tracker = new SimpleTracker(_GoogleAnayticsPropertyID, _Session, trackerEnvironment);

                await tracker.TrackPageViewAsync(System.AppDomain.CurrentDomain.FriendlyName, FeatureCustom, _CustomDimensions);
            }
        }



        static KeyValuePair<string, string> GetOperatingSystemProductName()
        {
            KeyValuePair<string, string> OperatingSystemSpec = new KeyValuePair<string, string>();
            ManagementObjectSearcher wmiOsInfo = new ManagementObjectSearcher("SELECT Caption, Version FROM Win32_OperatingSystem");
            try
            {

                foreach (var os in wmiOsInfo.Get())
                {
                    var version = os["Version"].ToString();
                    var productName = os["Caption"].ToString();
                    OperatingSystemSpec = new KeyValuePair<string, string>(productName, version);
                }
            }
            catch (Exception ex)
            { 
                  Messagebox.Show(ex);
            }

            return OperatingSystemSpec;
        }
    }
...