[英]Google Analytics measurement protocol not in report only in real-time
[英]Google Analytics Measurement Protocol / real time events not showing
我正在使用 C 代码记录来自嵌入式应用程序的 HTTP POST 请求,并看到实时事件显示在一个 GA 帐户上,但没有显示在另一个帐户上。
在这两种情况下,事件都会在第二天作为注册消息出现在应用程序概览中,因此发布似乎有效。 然而,我没有看到事件出现在实时部分。
笔记:
任何想法这里发生了什么?
[顺便说一句(尽管这不会造成任何区别),我已经在开发人员控制台中启用了 GA API,并且在这两种情况下我都使用相同的 DeveloperConsole 生成的客户端 ID。]
编辑:这是 HTTP 帖子的一个代表性片段:-
static BYTE ServerName[] = "www.google-analytics.com";
static WORD ServerPort = 80;
static BYTE GAClientID[] = "35009a79-1a05-49d7-b876-2b884d0f825b";
static BYTE GATrackingCode[] = "UA-XXXXXXX-Y";
static ROM BYTE ContentLength[4];
strcpy(pPayloadBuffer, (ROM BYTE*)"v=1");
strcat(pPayloadBuffer, (ROM BYTE*)"&tid=");
strcat(pPayloadBuffer, (ROM BYTE*)GATrackingCode);
strcat(pPayloadBuffer, (ROM BYTE*)"&cid=");
strcat(pPayloadBuffer, (ROM BYTE*)GAClientID);
strcat(pPayloadBuffer, (ROM BYTE*)"&an=MyApp2&t=pageview&dp=Test");
strcat(pPayloadBuffer, (ROM BYTE*)"&t=event&ev=55&el=label&cd2=");
// get SNTP time and convert to struct tm
dwSNTPseconds = SNTPGetUTCSeconds();
timeNow = gmtime((const time_t*)&dwSNTPseconds);
// inspect values in tm struct
sec = timeNow->tm_sec;
min = timeNow->tm_min;
hour = timeNow->tm_hour;
day = timeNow->tm_mday;
month = timeNow->tm_mon;
year = timeNow->tm_year + 1900;
// years
uitoa(year, sBuffer);
strcat(pPayloadBuffer, sBuffer);
// months
if (month<10) {
strcat(pPayloadBuffer, "0");
}
uitoa(month, sBuffer);
strcat(pPayloadBuffer, sBuffer);
// days
if (day<10) {
strcat(pPayloadBuffer, "0");
}
uitoa(day, sBuffer);
strcat(pPayloadBuffer, sBuffer);
// hours
if (hour<10) {
strcat(pPayloadBuffer, "0");
}
uitoa(hour, sBuffer);
strcat(pPayloadBuffer, sBuffer);
// minutes
if (min<10) {
strcat(pPayloadBuffer, "0");
}
uitoa(min, sBuffer);
strcat(pPayloadBuffer, sBuffer);
// seconds
if (sec<10) {
strcat(pPayloadBuffer, "0");
}
uitoa(sec, sBuffer);
strcat(pPayloadBuffer, sBuffer);
// Temperature
strcat(pPayloadBuffer, (ROM BYTE*)"&cm1=");
uitoa(gTemperature, tmpString);
strcat(pPayloadBuffer, tmpString);
lenPayload = strlen(pPayloadBuffer);
// Place the application protocol data into the transmit buffer
TCPPutROMString(MySocket, (ROM BYTE*)"POST /collect HTTP/1.1\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Host: ");
TCPPutString(MySocket, ServerName);
TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Content-Type: text/xml; charset=utf-8\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Content-Length: ");
uitoa(lenPayload, (BYTE*)ContentLength);
TCPPutString(MySocket, (BYTE*)ContentLength);
TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Accept-Language: en-us \r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Accept-Encoding: gzip, deflate \r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"Connection: Keep-Alive \r\n\r\n");
TCPPutString(MySocket, pPayloadBuffer);
// end of line
TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
TCPPutROMString(MySocket, (ROM BYTE*)"\r\n");
// Send the packet
TCPFlush(MySocket);
不是一个完整的答案我只是想帮助调试:
对于应用帐户,它的 &t= screenview
不是 &t=pageview
对于应用程序帐户,以下是未记录的必填字段
尝试检查您的 GA 帐户上是否有不同的过滤器,它没有显示出来。我遇到了同样的问题,结果是 IP 过滤器。
我有同样的问题:从服务器记录的事件存在于常规分析中,但不是实时的。 并使用命中构建器发送相同的有效负载。
比较hit builder和我的后端发送的headers,发现需要添加user-agent
header来获取实时视图中显示的事件: "user-agent": "Mozilla/5.0 (My App Server) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.