我在想,如果我可以给谷歌Analytics跟踪数据通过发送自定义URL请求发送到Google。 我以为我可以建立自己的网址,并触发一个请求来获取事件追踪是这样的: http://google.com/analytics-endpoint?id=UA-34900236-1&event=some_event
,我还没有发现任何有关文档这虽然并想知道这是否可能? 如果是这样,可能有人点我到正确的文件?
对于任何背景是谁感兴趣的是:我正在试图谷歌分析支持加入到一个单声道的Android应用程序。 我不能得到任何的C#谷歌分析库编译的,因为所需的.NET库从单丢失的Android。
作为除了@ PT的答案,我想指出,谷歌发布了一个官方的API将数据发送,现在谷歌分析。 这是谷歌分析测量协议 。 这可能是最安全的解决方案,因为它是一个“官方”和记录的API。
灵感来自@ i.amniels答案 ,我写了周围的小包装谷歌Analytics(分析)衡量协议来跟踪我们的Web应用程序的服务器端事件。
这里有一个要点你可以开始授课。 它只是封装发送POST请求发送到谷歌分析测量协议端点的锅炉板代码。
使用的包装,你就可以这样写:
GoogleAnalyticsApi.TrackEvent("Video", "Play", "Vacation 2014")
是的,你可以做HTTP请求直接向谷歌Analytics(分析)跟踪任意应用程序。 这是现有的GA库Android为例如(它会发出HTTP_GET具有非常特定的一组网址参数的要求)。
若您使用的底层HTTP API作为客户端没有正式的文件,但你可以依靠它给古老的JavaScript代码片段躺在附近在网络上的数量,以及被编译成现有的Android应用程序的固定库的代码是相当稳定。 该GIF参数故障排除文档解释了分析数据的编码方式。
这是现有的项目,提供了一个客户端库纯Java应用程序: http://code.google.com/p/jgoogleanalytics/
如果你想在C#中重新实现这一点,魔术似乎都在这里: http://code.google.com/p/jgoogleanalytics/source/browse/trunk/src/main/java/com/boxysystems/ jgoogleanalytics / GoogleAnalytics_v1_URLBuildingStrategy.java
通过@Oliver回答启发,我已经更新了C#代码更及时了解发送POST数据:
namespace Helpers
{
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
// More information about API - see https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide
public class GoogleAnalyticsHelper
{
private readonly string endpoint = "https://www.google-analytics.com/collect";
private readonly string googleVersion = "1";
private readonly string googleTrackingId; // UA-XXXXXXXXX-XX
private readonly string googleClientId; // 555 - any user identifier
public GoogleAnalyticsHelper(string trackingId, string clientId)
{
this.googleTrackingId = trackingId;
this.googleClientId = clientId;
}
public async Task<HttpResponseMessage> TrackEvent(string category, string action, string label, int? value = null)
{
if (string.IsNullOrEmpty(category))
throw new ArgumentNullException(nameof(category));
if (string.IsNullOrEmpty(action))
throw new ArgumentNullException(nameof(action));
using (var httpClient = new HttpClient())
{
var postData = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("v", googleVersion),
new KeyValuePair<string, string>("tid", googleTrackingId),
new KeyValuePair<string, string>("cid", googleClientId),
new KeyValuePair<string, string>("t", "event"),
new KeyValuePair<string, string>("ec", category),
new KeyValuePair<string, string>("ea", action)
};
if (label != null)
{
postData.Add(new KeyValuePair<string, string>("el", label));
}
if (value != null)
{
postData.Add(new KeyValuePair<string, string>("ev", value.ToString()));
}
return await httpClient.PostAsync(endpoint, new FormUrlEncodedContent(postData)).ConfigureAwait(false);
}
}
}
}
可以上找到GitHub的要点
用法:
var helper = new GoogleAnalyticsHelper("UA-XXXXXXXXX-XX", "555");
var result = helper.TrackEvent("Orders", "Order Checkout", "OrderId #31337").Result;
if (!result.IsSuccessStatusCode)
{
new Exception("something went wrong");
}
是的,这是可能的。 由于谷歌Analytics(分析)将存储每个URL页面请求它是。 这些都是在左侧菜单中的内容选项卡下可见,然后找到URL或页面内容。 你可以看到列出的每个页面请求。 所以,如果你解雇这一关由于像一个链接<a href="more.php?id=8&event=sales">LINK</a>
Analytics(分析)将保存完整的URL。
然而,没有直接的途径获得通过分析您所提供希望得到类似的答案的网址帐户:这是你能做的最好的,我想。
你可以做,从字面上有每一页上跟踪代码的页面。 这样一来,谷歌Analytics(分析)将捕获所有的东西怎么回事。 然后,您可以将您的“事件”添加到页面上的每一个环节的结束,这样,当用户点击一个链接,它会重定向到您的网站相应的页面,但它也将记录(从网址在谷歌Analytics(分析)的链接)的HREF,因为GA看到的一切事情的页面里面,包括一个链接的href值的完整URL。 所以,如果你的链接看起来是这样,谷歌Analytics(分析)将记录整个URL,您可以在以后检索:
<a href="page2.php?id=4492&event=clickedCatalog&preference=yellow">Link!</a>
...会记录完整的URL( page2.php?id=4492&event=clickedCatalog&preference=yellow
)的GA,您可以在URL列表中看到访问您的网站,直接点击呼吁左侧上下文菜单的谷歌Analytics(分析)主页。
除了@帕维尔 - morshenyuk的答案,如果你想将事件谁在它付诸行动用户相关,下面的代码将请求映射到谷歌的客户端ID。
string clientId = Guid.NewGuid().ToString();
if (Request != null && Request.Cookies != null && Request.Cookies.Get("_ga") != null && Request.Cookies.Get("_ga").Value != null)
{
clientId = Request.Cookies.Get("_ga").Value;
clientId = clientId.Replace("GA1.2.", "");
clientId = clientId.Replace("GA1.1.", "");
}
注意在某些时候,这可能需要进行调整,如果GA改变其内部的cookie跟踪。