谷歌分析发送事件回调函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谷歌分析发送事件回调函数相关的知识,希望对你有一定的参考价值。
我正在尝试在用户注册之后和重定向之前发送事件go google analytics。我正在使用Google跟踪代码管理器和univerasl js。
首先,我试图使用dataLayer对象,如下所述:developers.google
这就是我的功能:
//Registering new user via ajax
$.ajax('/register/', {
success: function() {
//Pushing event to dataLayer
dataLayer.push({
'Category': 'Registration Process',
'event': 'Registration Submit Btn'
});
//Logging in new user and redirecting the page with a timeout
setTimeout(function(){
loginAction();
}, 500)
}
})
问题是我收到了大约25%的所有事件,其他所有事件都丢失了。我不知道在将对象添加到dataLayer之后是否以及何时将事件发送给Google,我认为75%的事件根本没有发送。
现在我正在尝试实现另一种方法:
//Registering new user via ajax
$.ajax('/register/', {
success: function() {
//Sending event through ga('send')
parent.ga('send', 'event', 'Registration Process', 'Registration Submit Btn');
//Logging in new user and redirecting the page with a timeout
setTimeout(function(){
loginAction();
}, 500)
}
})
但ga('send')再没有任何回调函数!
如何使用dataLayer或ga('send')确保事件实际发送到谷歌?
终于明白了。它非常复杂,在文档中没有描述。在我的情况下,我使用Google跟踪代码管理器,因此我需要做一些变通方法才能成功触发事件并获得回调。
首先,我们必须获得ClientId,这是发送到Google服务器的任何事件所必需的。实际上它保存在cookie中,但谷歌不建议直接从那里拿它。
以下是Google建议您使用此功能的方法,但如果您使用的是Google跟踪代码管理器,则无法使用此功能。
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
相反,您必须从getAll方法获取ClientId。
var clientId = ga.getAll()[0].get('clientId');
之后,您必须创建新的跟踪器
ga('create', 'UA-XXX-YYY', {
'clientId': clientId
});
之后我们可以发送一个事件:
ga('send', 'event', {
'eventCategory': 'YOUR Category Name', //required
'eventAction': 'YOUR Action name', //required
'eventLabel': 'YOUR Label',
'eventValue': 1,
'hitCallback': function() {
console.log('Sent!!');
//callback function
},
'hitCallbackFail' : function () {
console.log("Unable to send Google Analytics data");
//callback function
}
});
来自Google Analytic doc https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallbackNews
// Alerts the user when a hit is sent.
ga('send', 'pageview', {
'hitCallback': function() {
alert('hit sent');
}
});
您可以为您编辑hitCallback
功能。
要么
// Use a timeout to ensure the execution of critical application code.
ga('send', 'pageview', {'hitCallback': criticalCode});
setTimeout(criticalCode, 2000);
// Only run the critical code once.
var alreadyCalled = false;
function criticalCode() {
if (alreadyCalled) return;
alreadyCalled = true;
// Run critical code here...
}
在这里,您可以在上面的示例中定义您的函数(criticalCode
),该函数可以确保将数据发送到Google Analytic,然后使用您的代码。
非常了解分析的api,fyr:https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference
来自文档:https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback
ga('send', 'pageview', {
'page': '/my-new-page',
'hitCallback': function() {
alert('analytics.js done sending data');
}
});
在此示例中,字段名称对象配置页面参数,以及设置hitCallback。跟踪器完成发送数据后,将向用户显示一个警告框。
您可以将hitCallback用于事件,页面浏览等。
以上是关于谷歌分析发送事件回调函数的主要内容,如果未能解决你的问题,请参考以下文章
向 JSF a4j:jsFunction oncomplete 事件发送回调
Java设计模式补充:回调模式事件监听器模式观察者模式(转)
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段