我正在使用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;
}
}
问题解决了...
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;
}
}