Опитвам се да проследя типове потребители в обхвата на сесията с помощта на персонализирани променливи. При всяко зареждане на страница искам да проверя дали променливата на GA съществува и ако не я задам на една от 3 стойности въз основа на бисквитка (посетител, регистрация, премия).
TrackUser: function () {
var index = 5; //slot 5
var scope = 2; //set scope to session level
var key = "UserType";
var value;
if (_gaq != undefined) {
_gaq.push(function () { //this is async
var pageTracker = _gat._getTrackerByName(); //Gets the default tracker.
var vis = pageTracker._getVisitorCustomVar(5); //this should return the 'usertype' if its been set
//if no GA variable exists then lets set it
if (vis == undefined) { // !? THIS IS ALWAYS 'undefined' ?!
value = getUserType(); //get the users type
//send custom var to GA
_gaq.push(['_setCustomVar',
index, // This custom var is set to slot #1. Required parameter.
key, // The name acts as a kind of category for the user activity. Required parameter.
value, // This value of the custom variable. Required parameter.
scope // Sets the scope to session-level. Optional parameter.
]);
}
});
}
}
Тази функция се извиква точно преди натискане на събитие за проследяване '_trackEvent', така че може да не завърши преди извикването на '_trackEvent'. Въпреки това, няма ли да бъде изпратено при следващото зареждане на страницата?
Или разбирам погрешно как GA използва бисквитки с Custom Vars?
BTW: ако има по-лесен начин за получаване на персонализираната променлива (може би без да се налага да изпращате заявка до Google), това би било идеално.
Актуализация
След като прочетох повече документация, разбрах, че „_getVisitorCustomVar“ връща потребителски променливи само ако са зададени в „обхвата на посетителя“ (3). Google очевидно проследява променливите „обхват на сесията“ (2) на своя сървър и не задава бисквитки от страна на клиента. Докато не успея да намеря по-елегантно решение, просто настройвам собствена бисквитка за сесия, за да проверя дали съм изпратил информация до GA за типа потребител.