2013-08-17 3 views
1

Я пытаюсь сделать некоторые аналитики с помощью своего мобильного приложения. Приложение написано в Flex. Я пытаюсь использовать Google's library for Google Analytics несколько согласно official example. Я создал класс со статическим методом, который я вызываю со всех экранов в своих обработчиках событий creationComplete.Google Analytics в мобильном приложении Flex

import com.google.analytics.GATracker; 
import com.google.analytics.AnalyticsTracker; 

import flash.display.DisplayObject; 

public class AnalyticsHelper 
{ 
    public static function trackScreenView(screen: DisplayObject, name: String): void { 
     var tracker:AnalyticsTracker = new GATracker(screen, "UA-XXXXXXXX-1", "AS3", false);   
     tracker.trackPageview("/screen/" + name); 
    } 
} 

После некоторой отладки мои результаты: функция вызывается. trackPageview() вызывается. По словам Вирешарка, некоторые данные поступают в Google, но поскольку он проходит через зашифрованное соединение, я не вижу, что это такое. Однако на моей панели инструментов Google Analytics данных нет. (Да, я знаю, что мне нужно подождать день, пока данные появятся. Я ждал. Через два дня он все еще не работает.)

Я что-то упустил? Как заставить Google Analytics работать с моим приложением Flex?

+0

Я использовал _gaforflash_ в нескольких проектах, и ваша установка выглядит правильно. Иногда статистика останавливается, но позже появляется снова, я думаю, это были некоторые лаги GA. Я могу посоветовать только проверить ключ дорожки GA, и должна быть _html page_ с js-скриптом где-то до начала запуска GA, вы должны установить в процессе настройки GA на сайте. – fsbmain

ответ

2

После нескольких дней попыток я наконец нашел, в чем проблема. Я следовал советам answer for a somewhat similar question и пробовал Google Analytics с отслеживанием данных сайта вместо мобильных, и это сработало. Я думаю, что, поскольку библиотека gaforflash находится с 2008 года, она по-прежнему использует старый API Google Analytics.

2

Свойство трекера существует только в пределах функции, поэтому его получение воссоздается каждый раз, когда функция вызывается; и, возможно, с другим DisplayObject, который прошел тоже - это может быть проблемой.

Попробуйте это:

public class AnalyticsHelper 
{ 
    private static var tracker:AnalyticsTracker; 

    public static function trackScreenView(screen:DisplayObject, name:String):void 
    { 
     //only create tracker once 
     if (!tracker) 
      tracker = new GATracker(screen, "UA-XXXXXXXX-1", "AS3", false);   
     tracker.trackPageview("/screen/" + name); 
    } 
} 

Это реально не важно, что DisplayObject передается - только до тех пор, как это DisplayObject (так аналитики могут вклиниться событий). Я не уверен, но вам, вероятно, нужно передавать один и тот же DisplayObject каждый раз, когда swf запускается, поэтому используйте что-то вроде root, чтобы сохранить его согласованным.

+0

По-видимому, это была не моя проблема, но я добавил это коду в любом случае, так как всегда воссоздание трекера искажало статистику в реальном времени. Благодарю. – ytg

Смежные вопросы