我想使用测量协议从服务器发送Google Analytics分析事件。
文档说明cid是必需的,应该是UUID(https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid)。
但是,我想使用与_ga cookie中存储的内容相同的客户端ID。但根据this,我不应该直接解析cookie中的id,因为它可能会在没有警告的情况下发生变化。
此外,浏览器中tracker.get(' clientId')返回的字符串不是标准的UUID字符串,所以即使我在浏览器中检索了该值并将其发送到服务器,仍然没有文档所说的格式。
那么,我需要做什么才能以前向兼容的方式从cookie中获取客户端ID?
答案 0 :(得分:9)
使用ga.getAll()[0].get('clientId');
获取clientId。
关于他们的文档,谷歌不希望你直接抓取cookie并解析它,因为cookie将来可能会改变。
他们概述的方法是获取clientId的首选方法。
关于clientId和使用UUID,您几乎可以传递任何匿名识别某人的值(包括使用GA的clientId)。
我们所做的是使用ga.getAll()[0].get('clientId');
抓取客户端并将其发送到服务器,我们可以将clientId放入测量协议的require参数,并发送回服务器端测量协议请求GA与交易数据,如销售成本等,使用clientId允许您将交易连接到源/媒体等。
答案 1 :(得分:0)
获取 ClientID 的正确方法是通过传递回叫来询问跟踪器。
必须在ga("create",...)
之后调用,请求为:
ga(function(tracker) {
// very similar to internal method like ga.getAll()[0].get('clientId');
var clientId = tracker.get('clientId');
// now you can pass client id to your internal system
myInternalMeasurementProtocolSetter(clientId);
});
在此之后,您必须致电ga("send"...)
以运行以前的一批设置。
如果要将其调出初始设置队列,则必须验证GoogleAnalytics是否已初始化。
如果有任何跟踪器,您可以询问ga.getAll();
。如果是,那么你可以传递回调。
如果您将使用任何其他方式,您可以提前或延迟陷入困境。