所以,我终于设法让谷歌分析运行起来。
Google Analytics 无法在网站上找到我的跟踪代码。使用GoogleAnalyticsTracker 插件,数据已发送到 GA,但跟踪信息确实表明未安装跟踪代码。
问题是引导页面中缺少跟踪代码。解决方案是创建一个新的 VaadinServlet,我在其中创建了一个新的 BootstrapListener。像这样的东西:
public class MyVaadinServlet extends VaadinServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
getService().addSessionInitListener(new SessionInitListener() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void sessionInit(SessionInitEvent event) throws ServiceException {
event.getSession().addBootstrapListener(new BootstrapListener() {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void modifyBootstrapPage(BootstrapPageResponse response) {
// Adding Google Analytics to BootstrapPage header
head.append("<script type=\"text/javascript\">" +
"var _gaq = _gaq || [];"+
"_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);" +
"_gaq.push(['_setDomainName', 'mydomain.com']);" +
"_gaq.push(['_trackPageview', '/']);" +
"(function() { " +
"var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;" +
"ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';" +
"var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);" +
"})();"+
"</script>");
}
@Override
public void modifyBootstrapFragment(BootstrapFragmentResponse response) {
}
});
}
});
}
}
有关更多信息,请参阅:自定义 Vaadin 应用程序中的启动页面
使用此解决方案,数据将发送到 Google Analytics,并且跟踪代码也被 Google Analytics 识别。
在 Vaadin 7 应用程序中可能有一些更简单的方法可以做到这一点,但这对我有用。以为我让你知道了。
问候