GoogleAnalyticsTracker为winforms应用程序创建唯一会话

问题描述 投票:0回答:1

我正在使用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;
    }
}
c# winforms google-analytics measurement-protocol
1个回答
-1
投票

问题解决了...

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;
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.