gpt4 book ai didi

c# - 导致来自非网络应用程序的 Google Analytics 日志(例如,通过 WebClient)

转载 作者:可可西里 更新时间:2023-11-01 09:13:22 25 4
gpt4 key购买 nike

我想收集一些关于我的应用程序使用情况的统计数据,并且由于我已经在 Google Analytics 中拥有网络统计数据,我认为如果我可以从应用程序发送一个导致命中的请求会很酷分析,例如。

/app/v1.0/调试

这可以让我看到我的应用程序启动的频率(或其他)。

我在网上看了看,发现了一些人在做类似事情的例子(有些人是为了解决 Javascript 被禁用的问题,而其他人做的和我一样),但在 C# 中没有。我尽可能地翻译了代码,但几天前我已经调用了几次,但日志中没有显示任何内容:(

// Send a hit to Google Analytics so we can track which versions are being used
Random rnd = new Random();
int cookie = rnd.Next(10000000, 99999999);
string statsRequest = "http://www.google-analytics.com/__utm.gif" +
"?utmwv=4.3" +
"&utmn=" + rnd.Next(10000) + // Used only to stop browser caching
"&utmhn=myhost.com" + // Hostname
//"&utmhid=<random#>" +
"&utmr=-" + // Referer
"&utmp=/app/v0.4/DEBUG/Test" + // Requested page
"&utmac=UA-123456-7" + // Google Analytics ID
"&utmcc=__utma%3D" + cookie + "3B%2B__utmz%3D" + cookie + "%3B";

using (var client = new WebClient())
{
client.DownloadData(statsRequest);
}

有谁知道该怎么做才能使这项工作成功?如果我能以某种方式存储 cookie 就更好了,这样人们在多次运行该应用程序时就被视为“回头客”,但这不太重要。

最佳答案

我费了好大劲才在广告中发挥作用 :)

如果您删除导致分析在测试时不记录您自己的请求(通过 IP)的过滤器,IT 也会有所帮助 ;)

Random rnd = new Random();

long timestampFirstRun, timestampLastRun, timestampCurrentRun, numberOfRuns;

// Get the first run time
timestampFirstRun = Settings.Default.FirstRun;
timestampLastRun = Settings.Default.LastRun;
timestampCurrentRun = GetEpochTime();
numberOfRuns = Settings.Default.NumberOfRuns + 1;

// If we've never run before, we need to set the same values
if (numberOfRuns == 1)
{
timestampFirstRun = timestampCurrentRun;
timestampLastRun = timestampCurrentRun;
}

// Some values we need
string domainHash = "123456789"; // This can be calcualted for your domain online
int uniqueVisitorId = rnd.Next(100000000, 999999999); // Random
string source = "source";
string medium = "medium";
string sessionNumber = "1";
string campaignNumber = "1";
string culture = Thread.CurrentThread.CurrentCulture.Name;
string screenRes = Screen.PrimaryScreen.Bounds.Width + "x" + Screen.PrimaryScreen.Bounds.Height;

#if DEBUG
string requestPath = "%2FAppStartup%2FDEBUG%2F" + SettingsWrapper.CurrentVersion.ToString(2);
string requestName = "AppStartup%20(Debug)%20v" + SettingsWrapper.CurrentVersion.ToString(2);
#else
string requestPath = "%2FAppStartup%2FRELEASE%2F" + SettingsWrapper.CurrentVersion.ToString(2);
string requestName = "AppStartup%20v" + SettingsWrapper.CurrentVersion.ToString(2);
#endif

string statsRequest = "http://www.google-analytics.com/__utm.gif" +
"?utmwv=4.6.5" +
"&utmn=" + rnd.Next(100000000, 999999999) +
"&utmhn=hostname.mydomain.com" +
"&utmcs=-" +
"&utmsr=" + screenRes +
"&utmsc=-" +
"&utmul=" + culture +
"&utmje=-" +
"&utmfl=-" +
"&utmdt=" + requestName +
"&utmhid=1943799692" +
"&utmr=0" +
"&utmp=" + requestPath +
"&utmac=UA-123656-7" + // Account number
"&utmcc=" +
"__utma%3D" + domainHash + "." + uniqueVisitorId + "." + timestampFirstRun + "." + timestampLastRun + "." + timestampCurrentRun + "." + numberOfRuns +
"%3B%2B__utmz%3D" + domainHash + "." + timestampCurrentRun + "." + sessionNumber + "." + campaignNumber + ".utmcsr%3D" + source + "%7Cutmccn%3D(" + medium + ")%7Cutmcmd%3D" + medium + "%7Cutmcct%3D%2Fd31AaOM%3B";

using (var client = new WaveWebClient())
{
client.DownloadData(statsRequest);
}

// Now save some of the values
Settings.Default.NumberOfRuns = numberOfRuns;
Settings.Default.FirstRun = timestampFirstRun;
Settings.Default.LastRun = timestampCurrentRun;
Settings.Default.Save();

关于c# - 导致来自非网络应用程序的 Google Analytics 日志(例如,通过 WebClient),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1846460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com