本文档简要介绍了 Android 版 Google Analytics(分析)SDK v4 的一些高级配置功能。
概览
Android 版 Google Analytics(分析)SDK v4 提供了一个 Tracker
类,用于设置并向 Google Analytics(分析)发送数据,并提供了一个 GoogleAnalytics
单例来作为您的实现方案的全局配置值的接口。
初始化
您需要先通过 GoogleAnalytics
单例至少初始化一个跟踪器,然后才能开始衡量数据。在初始化时,您需要提供 Context
对象和个 Google Analytics(分析)媒体资源 ID。有关详情,请参阅 GoogleAnalytics 参考。
使用配置文件
您也可以使用配置文件来初始化跟踪器。例如:
package com.google.android.apps.mobileplayground; import android.app.Application; import com.google.android.gms.analytics.GoogleAnalytics; import com.google.android.gms.analytics.Tracker; import java.util.HashMap; /** * An extension to Application class to provide tracker for analytics purposes. Having the tracker * instances here allows all the activities to access the same tracker instances. The trackers can * be initialised on startup or when they are required based on performance requirements. */ public class AnalyticsSampleApp extends Application { // The following line should be changed to include the correct property id. private static final String PROPERTY_ID = "UA-XXXXX-Y"; /** * Enum used to identify the tracker that needs to be used for tracking. * * A single tracker is usually enough for most purposes. In case you do need multiple trackers, * storing them all in Application object helps ensure that they are created only once per * application instance. */ public enum TrackerName { APP_TRACKER, // Tracker used only in this app. GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking. ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company. } HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); public AnalyticsSampleApp() { super(); } synchronized Tracker getTracker(TrackerName trackerId) { if (!mTrackers.containsKey(trackerId)) { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID) : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker) : analytics.newTracker(R.xml.ecommerce_tracker); mTrackers.put(trackerId, t); } return mTrackers.get(trackerId); } }
设置和发送数据
为了向 Google Analytics(分析)发送数据,您需要使用构建工具来设置“参数-值”对,并通过跟踪器的 send
方法来发送这些数据。
下例展示了如何构建应用浏览并调用跟踪器的 send 方法,以此来向 Google Analytics(分析)发送屏幕浏览量:
// Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker( TrackerName.APP_TRACKER); // Set screen name. t.setScreenName(screenName); // Send a screen view. t.send(new HitBuilders.ScreenViewBuilder().build());
Measurement Protocol“&”符号语法
您可以使用 Measurement Protocol“&”符号语法,通过 HitBuilders.ScreenViewBuilder
为单次匹配设置值。要为所有后续匹配设置值,请使用跟踪器对象本身。
// Setting the content description field on a single hit using ampersand syntax. tracker.send(new HitBuilders.ScreenViewBuilder() .set("&cd", "Home Screen") .build() );
如要了解可用 Measurement Protocol 参数的完整列表,请参阅 Measurement Protocol 参数参考。
将值应用于多次匹配
直接在跟踪器中设置的值将是持久值,并会应用于多次匹配,如下例所示:
// Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker( TrackerName.APP_TRACKER); // Set screen name. t.setScreenName(screenName); // Send a screen view. t.send(new HitBuilders.ScreenViewBuilder().build()); // This event will also be sent with the most recently set screen name. // Build and send an Event. t.send(new HitBuilders.EventBuilder() .setCategory(getString(categoryId)) .setAction(getString(actionId)) .setLabel(getString(labelId)) .build()); // Clear the screen name field when we're done. t.setScreenName(null);
只有在想要使值成为持久值并应用于多次匹配时,您才应当直接在跟踪器中设置值。在跟踪器中设置屏幕名称是一种可取的做法,因为同样的值可以应用于一系列的屏幕浏览和事件匹配。不过,不建议在跟踪器中设置匹配类型等字段,因为此类字段很可能随每次匹配而改变。
使用多个跟踪器
在您的移动应用中,您可以使用多个跟踪器,向不同的媒体资源发送数据。
public class MyApp extends Application { public void initTrackers() { GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); globalTracker = analytics.newTracker(R.xml.global_tracker); ecommerceTracker = analytics.newTracker(R.xml.ecommerce_tracker); } public static Tracker globalTracker; public static Tracker ecommerceTracker; ... }
虽然您的移动应用可拥有多个跟踪器,但您只能通过对一个跟踪器调用 enableExceptionReporting()
方法,来使用该跟踪器报告未捕获的异常。
抽样
您可以启用客户端抽样,以限制向 Google Analytics(分析)发送的匹配数量。如果您的应用有大量用户,或因其他原因而向 Google Analytics(分析)发送大量数据,则启用抽样有助于确保报告不发生中断。
例如,要将客户端抽样率设为 50%,请在您的配置文件中使用以下参数:
<string name="ga_sampleFrequency">50.0</string>
要以程序化方式为某个跟踪器启用客户端抽样,请使用以下代码:
mTracker.setSampleRate(50.0d);
应用级选择停用
您可以启用“应用级选择停用”标志,以便在整个应用内停用 Google Analytics(分析)。请注意,此标志必须在应用每次启动时设置,默认值是 false
。
要获取应用级选择停用设置,请使用以下代码:
boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();
要设置应用级选择停用,请使用以下代码:
GoogleAnalytics.getInstance(this).setAppOptOut(true);
在典型的实现实例中,应用可以监听 SharedPreferences
的变更,并相应地更新 Google Analytics(分析)选择停用设置:
SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this); userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (key.equals(TRACKING_PREF_KEY)) { GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false)); } else { // Any additional changed preference handling. } } });
删除客户端用户数据
如果您需要为最终用户重置或删除 Google Analytics(分析)客户端数据,则可以删除客户端 ID 文件。
删除 gaClientId 文件会强制生成新的客户端 ID,且所有后续的匹配将使用新的客户端 ID。以前的数据无法与新的客户端 ID 相关联。
要删除 gaClientId 文件,请使用 Context.deleteFile
方法:
context.deleteFile("gaClientId");
对 IP 地址进行匿名处理
启用 IP 地址匿名处理功能可以告知 Google Analytics(分析)对 SDK 发送的 IP 信息进行匿名处理,即在存储前删除 IP 地址的最后一个八位位组。
要启用匿名处理 IP 功能,请在您的配置文件中使用以下参数:
<string name="ga_anonymizeIp">true</string>
要以程序化方式为某个跟踪器启用匿名处理 IP 功能,请使用 setAnonymizeIp
方法:
mTracker.setAnonymizeIp(true)
该 setAnonymizeIp
方法可以随时调用。
测试和调试
Android 版 Google Analytics(分析)SDK v4 提供了简化测试和调试的工具。
Dry Run
SDK 提供了 dryRun
标志,如果设置了此标志,则不会向 Google Analytics(分析)发送任何数据。在您对实现方案进行测试或调试时,如果不想测试数据出现在您的 Google Analytics(分析)报告中,就应当设置 dryRun
标志。
要设置 dryRun 标志,请使用以下代码:
// When dry run is set, hits will not be dispatched, but will still be logged as // though they were dispatched. GoogleAnalytics.getInstance(this).setDryRun(true);
Logger
Google Analytics(分析)将使用 Android
Log
系统通过 GAv4 代码将日志记录到 logcat。默认情况下只启用 ERROR、WARN 和 INFO 级别。要启用 DEBUG 级别,请在您的设备或模拟器上运行以下 adb 命令:
adb shell setprop log.tag.GAv4 DEBUG
要只查看 logcat 中的 Google Analytics(分析)消息,请使用以下命令:
adb logcat -v time -s GAv4
有关详情,请参阅 GoogleAnalytics Logger 参考。