我正在尝试在我的工作 Angular 5 项目中使用 Google Analytics 的测量协议(protocol)。我将 Google Analytics 通用代码放入 index.html我正在像这样对服务进行http调用
index.html
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-Y', {
'cookieDomain': 'none'
});
// console.log(window.dataLayer);
</script>
服务发起 http 调用
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';
import { DataService } from './Data.service';
@Injectable()
export class AnalyticsService {
private anUID = 'UA-XXXXXXXX-Y';
private analyticsURL = 'https://www.google-analytics.com/collect?';
constructor(private http: HttpClient, private datos: DataService) { }
public pageViewLista(): void {
this.http.get(
this.setScreenViewUrl(
encodeURI('Lista de empresas'))).subscribe((data) => {
console.log('Received data from GAnalytics: ' + JSON.stringify(data));
}
);
}
protected setScreenViewUrl (pantalla: string): string {
const constructUrl = `${this.analyticsURL}v=1&t=screenview&tid=${this.anUID}&cid=${this.datos.id}&an=${this.datos.app}&dt=${pantalla}&cd=${pantalla}`;
return constructUrl;
}
}
问题是谷歌返回一个奇怪的错误,我不知道这意味着什么,也不知道这个错误的原因。我做的不好吗?
来自谷歌的错误:
ERROR
HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "https://www.google-analytics.com/collect?v=1&t=...", ok: false, …}
error : {error: SyntaxError: Unexpected token G in JSON at position 0 at JSON.parse () at XMLHttp…, text: "GIF89a�����,D;"}
似乎服务器正在尝试 JSON 解析 GIF 图像。在文档中找不到任何内容,Google 没有显示任何信息。
非常感谢你的帮助。
请您参考如下方法:
用于数据收集的 Google Analytics(分析)端点返回一个透明的 gif 文件(它会为除服务器错误之外的所有内容返回 200 状态,因此您无法使用它来查看您的数据是否被实际跟踪)。无法将 gif 解码为 JSON。
如果你想要一个 JSON 响应,你需要使用 endpoint for the GA debugger (google-analytics.com/debug/collect)。如果您的有效负载有效,那将提供信息,但不会跟踪调用。


