我正在使用C代码记录来自嵌入式应用的HTTP POST请求,并看到实时事件显示在一个GA帐户中,但不会显示在另一个帐户中。
在这两种情况下,事件都会在第二天的应用程序概述中显示为已注册消息,因此发布似乎正在发挥作用。然而,我并未在实时部分看到事件发生。
注意:
任何想法在这里发生了什么?
[顺便说一句(虽然这不会造成任何影响),我在开发者控制台中启用了GA API,并且我在两种情况下都使用相同的DeveloperConsole生成的客户端ID。]
EDITED: 以下是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);
答案 0 :(得分:1)
不是完整的答案我只是想帮助调试:
对于应用帐户,其&amp; t = screenview
not&amp; t = pageview
对于应用帐户,以下是未记录的必填字段
答案 1 :(得分:0)
尝试检查您是否在未显示的GA帐户中使用不同的过滤器。我遇到了同样的问题,结果是由于IP过滤器。
答案 2 :(得分:0)
我遇到了同样的问题:从服务器记录的事件在常规分析中存在,但不是实时存在。 并且使用hit builder发送相同的有效载荷即可。
通过比较点击生成器和我的后端发送的标题,我发现需要添加user-agent
标题才能在实时视图中显示事件:"user-agent": "Mozilla/5.0 (My App Server) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
。