4

У нас возникли некоторые проблемы при загрузке iframe с помощью видеопроигрывателя, который отправляет в Google Analytics (Analytics.js) события «События» в Google Universal Analytics (analytics.js) iframe (в другом домене). Трекер GA не загружается на устройства iOS, и из-за этого отслеживание событий не отправляется в GA.Как определить, загружена ли Google Analytics и отслеживается пользовательские события

На Android и других устройствах, в том числе на рабочем столе, он работает нормально, но не на iOS, если я не изменил сторонние настройки cookie, установленные по умолчанию на iOS Safari.

Я сделал тест с использованием метода cookie-less для Google Analytics (https://github.com/Foture/cookieless-google-analytics), и таким образом устройства iOS смогли правильно отправить дорожку событий в GA. Тем не менее, я хочу использовать этот метод только как резерв, когда обычный метод GA не работает, потому что UserId, созданный с помощью метода Fingerprint, не очень уникален для мобильных устройств.

Так что мне нужен способ определить, когда обычный метод GA способен отслеживать события, а если не удается, либо потому, что трекер не был загружен, либо файлы cookie отключены, а затем используйте метод cookie-less для загрузки GA и отслеживать события.

Спасибо!

ответ

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. 
    // ... 
} 
0

Вы должны использовать проверьте JavaScript window.ga && ga.loaded переменные перед использованием метода ga() для отслеживания событий:

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; 
} 

Se больше на https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/