集成 Google Analytics

借助 Google Analytics 平台,您可以跨多种设备和环境衡量用户与您的企业互动的情况。该平台会提供收集、存储、处理和报告上述用户互动所需的所有计算资源。

Analytics 数据收集在客户端和服务器端都可以进行。Google Analytics 提供易用的 API 和 SDK,以便将数据发送到 Google Analytics。除此之外,我们还开发了可在 App Engine 应用中使用的代码,可以轻松地将服务器端分析发送到 Google Analytics。

客户端分析数据收集

借助数据收集 API 和 SDK,您可以衡量用户与您的内容和营销计划的互动方式。实现数据收集功能后,您将能够在 Google Analytics 中或通过 Reporting API 查看用户互动数据。如需详细了解客户端分析数据收集,请根据您的客户端类型选择以下链接:

  • 网络跟踪 (analytics.js) - 衡量用户与网站或网页应用的互动情况。
  • Android - 衡量用户与 Android 应用的互动情况。
  • iOS - 衡量用户与 iOS 应用的互动情况。
  • Measurement Protocol - 利用此底层协议可衡量任何环境中的用户互动情况。

App Engine 服务器端分析数据收集

虽然 App Engine 已经提供在应用中记录事件的机制,但在 Google Analytics 中跟踪特定的服务器端事件可能更有利。部分优势如下:

  • 历史数据分析 - 借助 App Engine,您可以配置日志文件最长保留天数或最大大小。超过该天数后,您将无权再访问这些日志文件。借助 Google Analytics 中的事件跟踪功能,您可以在更长的有效期内查看过往事件。
  • 跟踪关键事件 - 应用的各种组件都会向日志文件写入数据,因而可能导致日志文件过于冗长。借助事件跟踪,您可以仅精确定位想要监控的关键事件,并跟踪这些事件以及一些其他元数据。
  • 强大的用户界面 - 利用 Google Analytics 提供的功能丰富的用户界面,可以直观呈现、报告和导出这些服务器端事件。

将以下示例源代码集成到 App Engine 应用中,可以轻松实现此功能。如需详细了解此方法,请参阅 Google Analytics 开发者指南中的事件跟踪

示例源代码

import com.google.appengine.api.urlfetch.URLFetchService;
import com.google.appengine.api.urlfetch.URLFetchServiceFactory;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.client.utils.URIBuilder;

@SuppressWarnings("serial")
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(
    name = "analytics",
    description = "Analytics: Send Analytics Event to Google Analytics",
    urlPatterns = "/analytics"
)
public class AnalyticsServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    String trackingId = System.getenv("GA_TRACKING_ID");
    URIBuilder builder = new URIBuilder();
    builder
        .setScheme("http")
        .setHost("www.google-analytics.com")
        .setPath("/collect")
        .addParameter("v", "1") // API Version.
        .addParameter("tid", trackingId) // Tracking ID / Property ID.
        // Anonymous Client Identifier. Ideally, this should be a UUID that
        // is associated with particular user, device, or browser instance.
        .addParameter("cid", "555")
        .addParameter("t", "event") // Event hit type.
        .addParameter("ec", "example") // Event category.
        .addParameter("ea", "test action"); // Event action.
    URI uri = null;
    try {
      uri = builder.build();
    } catch (URISyntaxException e) {
      throw new ServletException("Problem building URI", e);
    }
    URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService();
    URL url = uri.toURL();
    fetcher.fetch(url);
    resp.getWriter().println("Event tracked.");
  }
}