适用于 Android 的 Google Analytics(分析)移动应用 SDK 可让您轻松地在基于 Android 的应用中实现 Google Analytics(分析)。本文档介绍了如何将 SDK 与您的应用集成。
SDK 概览
此 SDK 使用的跟踪模型旨在跟踪访问传统网站的用户以及与传统网页中微件的互动。因此,下面使用的术语反映了传统的网站跟踪模型,并正在映射到跟踪移动应用。您应该熟悉 Google Analytics(分析)跟踪,以了解此 SDK 的工作原理。
通过以下 Google Analytics(分析)互动类型,使用移动跟踪 SDK 跟踪手机应用:
- 浏览量跟踪
- 网页浏览是衡量传统网站流量的标准方式。由于移动应用不包含 HTML 网页,因此您必须决定何时(以及多久触发一次)网页浏览请求。此外,由于网页浏览请求旨在报告目录结构,因此您应为请求提供描述性名称,以便充分利用 Google Analytics(分析)内容报告中的网页路径命名。即使您选择的名称实际上不是 HTML 网页,也会作为网页路径填充到您的 Google Analytics(分析)报告中,但您可以通过结构化路径来为您的调用提供其他分组方式,从而充分利用这些名称。
- 事件跟踪
- 在 Google Analytics(分析)中,事件用于跟踪用户与网页元素的互动,这与网页浏览请求不同。您可以使用 Google Analytics(分析)的事件跟踪功能来进行其他调用,这些调用将在 Google Analytics(分析)报告界面的“事件跟踪”部分中报告。系统按类别对事件进行分组,也可以按事件使用标签,这使得报告更加灵活。例如,多媒体应用的视频类别可以具有播放/停止/暂停操作,并为每个视频名称分配一个标签。然后,Google Analytics(分析)报告会汇总所有标记为 video 类别的事件的事件。如需详细了解事件跟踪,请参阅事件跟踪指南
- 电子商务跟踪
- 使用电子商务跟踪功能,您可以跟踪购物车交易和应用内购买情况。要跟踪交易,请使用
Transaction
类表示整体购买信息,并使用Item
类表示购物篮中的每个产品。 收集到的数据后,即可在 Google Analytics(分析)界面的“电子商务报告”部分进行查看。有关电子商务跟踪的更多信息,请参阅电子商务跟踪指南。 - 自定义变量
- 自定义变量是您可以插入到跟踪代码中以便优化 Google Analytics(分析)跟踪的名称值对标记。如需详细了解如何使用自定义变量,请参阅自定义变量指南。
使用入门
要求
要将 Google Analytics(分析)的跟踪功能与您的 Android 应用集成,您需要:
- Android 开发者 SDK(适用于 Windows、Mac OS X 和 Linux)
- Google Analytics(分析)移动应用版 Android SDK
初始设置
- 将
libGoogleAnalytics.jar
添加到项目的/libs
目录中。 -
将以下权限添加到项目的
AndroidManifest.xml
清单文件中:<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
SDK 中附带一个示例应用,演示设置成功后项目应具有的样子。您可以随意将其用作模板,构建您自己的 Google Analytics(分析)集成应用。
使用 SDK
开始使用 SDK 之前,您必须先访问 www.google.com/analytics 创建一个免费帐号,然后在该帐号中使用虚假但描述性的网站网址(如 http://mymobileapp.mywebsite.com
)创建一个新的网络媒体资源。创建媒体资源后,请记下或保留为新创建的媒体资源生成的网络媒体资源 ID。
您必须在应用本身或服务条款中向用户明确说明,您保留以匿名方式跟踪和报告用户在应用内的活动的权利。在使用 Google Analytics(分析)SDK 时,您还须遵守《Google Analytics(分析)服务条款》,您在注册账号时必须同意这些条款。
示例和最佳做法
您可以在 code.google.com 上的 analytics-api-samples 项目下找到示例代码和最佳做法。
EasyTracker 库
我们提供了 EasyTracker 库。它提供应用和 活动 级跟踪功能,几乎无需进行开发工作。您可以在 analytics-api-samples 项目的下载部分中找到该部分。
启动智能设备
通过调用 GoogleAnalyticsTracker.getInstance()
获取跟踪器单例。然后调用该对象的 startNewSession
方法,并传递所跟踪的网络媒体资源 ID 和活动。如果您的应用只有一个 Activity,您可以直接在 Activity 的 onCreate
方法中调用此方法。例如:
package com.google.android.apps.analytics.sample; import com.google.android.apps.analytics.GoogleAnalyticsTracker; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class TestActivity extends Activity { GoogleAnalyticsTracker tracker; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); tracker = GoogleAnalyticsTracker.getInstance(); // Start the tracker in manual dispatch mode... tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", this); // ...alternatively, the tracker can be started with a dispatch interval (in seconds). //tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", 20, this); setContentView(R.layout.main); Button createEventButton = (Button)findViewById(R.id.NewEventButton); createEventButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tracker.trackEvent( "Clicks", // Category "Button", // Action "clicked", // Label 77); // Value } }); Button createPageButton = (Button)findViewById(R.id.NewPageButton); createPageButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and // scope of session-level. tracker.setCustomVar(1, "Navigation Type", "Button click", 2); // Track a page view. This is probably the best way to track which parts of your application // are being used. // E.g. // tracker.trackPageView("/help"); to track someone looking at the help screen. // tracker.trackPageView("/level2"); to track someone reaching level 2 in a game. // tracker.trackPageView("/uploadScreen"); to track someone using an upload screen. tracker.trackPageView("/testApplicationHomeScreen"); } }); Button quitButton = (Button)findViewById(R.id.QuitButton); quitButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); Button dispatchButton = (Button)findViewById(R.id.DispatchButton); dispatchButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Manually start a dispatch, not needed if the tracker was started with a dispatch // interval. tracker.dispatch(); } }); } @Override protected void onDestroy() { super.onDestroy(); // Stop the tracker when it is no longer needed. tracker.stopSession(); } }
如果您的应用中有多个 Activity,您可以使用 analytics-api-samples 项目的下载部分中提供的 EasyTracker 库。
跟踪网页浏览和事件
跟踪网页浏览和事件非常简单:每当您希望触发网页浏览时,只需调用跟踪器对象的 trackPageView
即可。调用 trackEvent
以录制事件。如需详细了解网页浏览和事件,请参阅上文中的 SDK 概览。
使用自定义变量
添加自定义变量也很简单:使用移动 SDK 提供的 setCustomVar
方法即可。您需要提前规划每个自定义变量对应的索引,这样就不会覆盖任何先前存在的变量。有关自定义变量的更多信息,请参阅自定义变量指南。请注意,setCustomVar
方法本身不会直接发送数据,而是会随下一个跟踪的网页浏览或事件一起发送数据。您必须在跟踪网页浏览或事件之前调用 setCustomVar
。请注意,自定义变量的默认范围为网页级范围。
使用电子商务跟踪
您可以通过以下 4 种方法来在应用中启用电子商务跟踪:
addTransaction
addItem
trackTransactions
clearTransactions
调用 addTransaction
和 addItem
会将交易或商品添加到内部电子商务缓冲区,然后您可以向该缓冲区添加更多商品和交易。只有在调用 trackTransactions
时,交易和商品才会发送到调度程序,并排队等待发送到 Google Analytics(分析)。
如需清空缓冲区,您可以调用 clearTransactions
方法。注意:它不会调用之前发送给调度程序的任何交易,也不会找回 Google Analytics(分析)已收集的任何交易。
以下示例代码可帮助您上手。我们假设当购买被确认或拒绝时,系统会调用 onPurchaseCompleted
方法。
/** * The purchase was processed. We will track the transaction and its associated line items * now, but only if the purchase has been confirmed. * * @param purchase A PurchaseObject containing all of the transaction information needed to * send the ecommerce hit to Google Analytics. */ public void onPurchaseCompleted(PurchaseObject purchase) { tracker.addTransaction(new Transaction.Builder( purchase.getTransactionId(), purchase.getTotal()) .setStoreName(purchase.getStoreName()) .setTotalTax(purchase.getTotalTax()) .setShippingCost(purchase.getShippingCost()) .build()); for (PurchaseLineItem lineItem : purchase.getLineItems()) { tracker.addItem(new Item.Builder( purchase.getTransactionId(), lineItem.getItemSKU(), lineItem.getItemCost(), lineItem.getQuantity()) .setItemName(lineItem.getItemName()) .setItemCategory(lineItem.getItemCategory()) .build()); } if (purchase.isConfirmed()) { tracker.trackTransactions(); } else { // The purchase was denied or failed in some way. We need to clear out // any data we've already put in the Ecommerce buffer. tracker.clearTransactions(); } }
有关电子商务的更多信息,请参阅电子商务跟踪指南。
对 IP 地址进行匿名处理
如需将用户 IP 信息匿名化,请使用 setAnonymizeIp
方法。
这会告知 Google Analytics(分析)匿名化 SDK 发送的信息,即在存储前移除 IP 地址的最后一个八位位组。
您可以随时调用 setAnonymizeIp
。
设置采样率
您可以使用 setSampleRate
方法设置采样率。
如果您的应用生成大量 Google Analytics(分析)流量,设置采样率可能会导致系统无法使用抽样数据生成报告。对唯一身份用户进行抽样会持续进行,因此在启用采样率后,趋势和报告能够保持完整性。
setSampleRate
方法接受一个 int
参数。该参数的有效值是 0 到 100(含)之间的任何整数。
值为 0 时,系统会关闭命中的生成;如果值为 100,则会将所有数据发送到 Google Analytics(分析)。
最好在调用任何跟踪方法之前先调用 setSampleRate
。
您可以参阅抽样概念指南,详细了解抽样。
批处理命中
为了节省网络连接和电池开销,我们建议您批量处理您的跟踪请求。您可以随时针对跟踪对象调用 dispatch
来发出批量请求,并且可以手动进行,也可以按特定的时间间隔执行此操作。
已知问题
跟踪广告系列
SDK 支持两种类型的广告系列跟踪。
- Google Play 广告系列跟踪 - 可让您跟踪通过 Google Play 获得的安装引荐。
- 常规广告系列跟踪 - 可让您跟踪任何将用户引荐到您的应用的广告系列。
Google Play 广告系列跟踪
Android 1.6 操作系统版本支持在指向 Google Play 的下载链接中使用 referrer
网址参数。Android 版 Google Analytics(分析)SDK 使用此参数在 Google Analytics(分析)中自动为您的应用填充广告系列信息。这样可以记录应用安装的来源,并与未来的网页浏览和事件相关联,这有助于您衡量特定广告对您的应用的效果。
为了使引荐跟踪正常运行,您必须将以下代码段添加到您项目的 AndroidManifest.xml
清单文件中:
<!-- Used for install referrer tracking --> <receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
要通过 Google Play 设置 Google Analytics(分析)广告系列跟踪,请使用下面的网址构建工具生成引荐链接。使用该链接将用户引荐到您的应用程序。Google Analytics(分析)SDK 将自动解析和记录引荐信息,并填入 Google Analytics(分析)报告中。
如需生成引荐链接,您可以使用 Google Play 广告系列网址构建工具。程序包名称、广告系列来源、广告系列媒介和广告系列名称为必填项。有关每个参数的详细说明,请参阅下面的表格。
常规广告系列跟踪
借助 Android 版 Google Analytics(分析)SDK 1.3 版,您现在可以跟踪 Google Play 以外的其他来源的广告系列。 例如,如果您想知道您的应用是通过广告中的链接启动的,您可以在导致应用启动的 intent 中检查广告系列引荐信息,然后将该广告系列信息存储在 Google Analytics(分析)中。
如需设置广告系列引荐信息,请使用 setReferrer
方法,如下所示:
tracker.setReferrer(referrer);
使用此功能需要遵守以下两项限制。首先,您必须先调用 startNewSession
,然后才能调用 setReferrer
。您需要这样做,因为 Google Analytics(分析)使用的 SQLite 数据库不是在调用 startNewSession
之前设置的,而 setReferrer
需要该数据库。如果您未调用 startNewSession
,则会收到 IllegalStateException
。
第二个限制是,传递到 setReferrer
的引荐字符串需要遵循特定的格式。该参数必须采用一组网址参数的形式,并且必须包含至少 1 个 gclid 参数或 utm_campaign、utm_medium 和 utm_source 中的每一个。在后一种情况下,它还可以包含 utm_term 和 utm_content 参数。
gclid 参数是自动标记功能的一部分,该功能可自动将 Google Analytics(分析)与 Google Ads 相关联。使用自动标记功能的广告系列引荐示例可能如下所示:
referrer = “gclid=gclidValue”;
人工广告系列引荐字符串可能如下所示:
referrer = “utm_campaign=campaign&utm_source=source&utm_medium=medium&utm_term=term&utm_content=content”;
如果您向 setReferrer
传入格式不正确的引荐来源网址字符串,引荐来源网址信息将不会更改,并且您会收到返回值 false。如果返回值为 true,则表示引荐来源已更新,并将添加到以后的每次命中中。
另请注意,当您调用 setReferrer 时会启动一个新会话,并返回 true。
引荐链接参数
参数 | 必需 | 说明 | 示例 |
---|---|---|---|
utm_campaign |
是 | 广告系列名称,用于关键字分析,以标识具体的产品推广活动或战略广告系列。 | utm_campaign=spring_sale |
utm_source |
是 | 广告系列来源,用来确定具体的搜索引擎、简报或其他来源。 | utm_source=google |
utm_medium |
是 | 广告系列媒介,用来确定电子邮件或按点击付费广告(CPC)等媒介。 | utm_medium=cpc |
utm_term |
不支持 | 广告系列字词,用于付费搜索,为广告提供关键字 | utm_term=running+shoes |
utm_content |
不支持 | 广告系列内容,用于A/B测试和内容定位广告,以识别指向相同网址的不同广告或链接。 |
utm_content=logolink
utm_content=textlink
|