当我们通过视频播放器加载iframe时,我们遇到了一些问题,该视频播放器将播放事件发送到加载在iframe(在另一个域中)内的Google Universal Analytics(analytics.js)。 GA跟踪器未在iOS设备上加载,因此,没有向GA发送事件跟踪。
在Android和包括桌面在内的其他设备上,它运行得很好,但在iOS上却没有,除非我更改了iOS Safari默认的第三方Cookie设置。
我使用无Cookie方法对Google Analytics(https://github.com/Foture/cookieless-google-analytics)进行了测试,iOS设备能够正确地向GA发送跟踪事件。但是,我想在常规GA方法不起作用时仅使用该方法作为后备,因为通过指纹方法创建的UserId在移动设备上并不是非常独特。
所以我需要一种方法来检测常规GA方法何时能够跟踪事件以及是否因为未加载跟踪器或禁用cookie而无法跟踪事件,然后使用无cookie方法加载GA并跟踪事件。
谢谢!
答案 0 :(得分:0)
您可以尝试在ga
对象上使用(看似)未记录的属性:ga.loaded
。
我在官方文档中可以找到的对此属性的唯一引用是在描述use of hitCallback
for E-Commerce tracking的示例中:
// Called when a link to a product is clicked.
function onProductClick() {
// Truncated Google Analytics example for brevity.
// [...]
}
<a href="/next-page.html" onclick="onProductClick(); return !ga.loaded;">Android Warhol T-Shirt</a>
你可以尝试类似的东西:
if (typeof ga !== 'undefined' && ga.hasOwnProperty('loaded') && ga.loaded === true) {
// ga successfully loaded. Custom Events available
// ...
} else {
// ga not loaded, fallback to another tracking implementation.
// ...
}
答案 1 :(得分:0)
在使用ga()方法跟踪事件之前,您应该使用检查JavaScript window.ga && ga.loaded
变量:
if(window.ga && ga.loaded) { {
// if yes, rely on GA to follow link
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){document.location = url;}
});
} else {
// if not, follow link ourselves
document.location = url;
}
在https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/
上查看更多内容