2015-10-19 223 views
2

我正在尝试在我的Angular App中设置两个分析跟踪器。我的一个要求是为每个登录到应用程序的用户设置一个跟踪器,该应用程序会将页面跟踪和事件数据转发到配置时已知的静态跟踪器。但是,第二个跟踪器需要在运行时在用户登录后设置。它需要将分析数据发送到与其帐户关联的跟踪器。AngularJS Google Analytics(分析)动态跟踪器

我是使用谷歌分析的新手,并认为它会像将ga命令队列推送给追踪者一样简单,但在阅读分析开发者文献后,似乎必须明确向两个追踪者发送页面追踪命令。

所以不是重新发明轮子,我看着revolunet/angular-google-analytics希望能解决我的问题。但是,它抱怨在运行时不设置跟踪器。我试着用

AnalyticsProvider.delayScriptTag(true);

然后变异数组

Analytics.configuration.accounts;

在运行,但它似乎产生任何影响。

如果有人在过去有过这方面的经验,请让我知道,除了在ga命令队列中放置封装外,我正在寻找干净的Angular-ish解决方案,除非这是我最好的选择。

谢谢!

+0

你能发布你的配置代码吗? – webdev5

回答

0

有点迟,但对那些可能有帮助的人,我最终创建了一个负责设置动态跟踪器的analyticsService。为了它的工作添加以下到我的应用程序的config

AnalyticsProvider.delayScriptTag(true); 
AnalyticsProvider.ignoreFirstPageLoad(true); 
AnalyticsProvider.setPageEvent('$stateChangeSuccess'); 

这延缓了自动跟踪的初始化。然后我分叉angular-google-analytics,在我analyticsService我做了我的API请求添加以下代码

this._kickOffAutoTracking = function() { 
    // activates page tracking 
    if (trackRoutes) { 
    $rootScope.$on(pageEvent, function() { 
     that._trackPage(); 
    }); 
    } 
}; 

最后,得到了用户的跟踪并将其添加如下:

Analytics.setAccount([ 
    { tracker: DEFAULT_TRACKER, name: "defaultTracker", trackEvent: true }, 
    { tracker: user.analyticCode, name: "userTracker" } 
]) 

Analytics.createAnalyticsScriptTag(); 
Analytics.kickOffAutoTracking(); 

这是一个快速的肮脏的解决方案。

相关问题