本文档简要介绍了如何使用 Android 版 Google Analytics(分析)SDK v3 来衡量广告系列和流量来源。
概览
在 Google Analytics(分析)中衡量广告系列可让您将应用中的用户活动归因于特定的广告系列和流量来源。Android 版 Google Analytics(分析)SDK 提供了以下这些用于广告系列和流量来源归因的选项:
- Google Play 广告系列归因 - 了解是哪些广告系列、网站和其他应用将用户引荐到 Google Play 商店下载您的应用。
- 常规广告系列和流量来源归因 - 了解是哪些广告系列或引荐来源网址启动了您的应用(在应用安装之后)。
下文将介绍何时及如何在您的应用中实现每种广告系列衡量功能。
广告系列参数
广告系列参数用于传递将用户带到您的应用中的流量来源和广告系列的相关信息。
下表列出了可用的广告系列参数,这些参数既可用于 Google Play,也可用于常规广告系列衡量:
参数 | 说明 | 示例 |
---|---|---|
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
|
gclid |
Google Ads 自动标记参数,用于衡量广告。此值会动态生成,请勿修改。 |
常规广告系列和流量来源归因
应用在安装之后,即可被来自广告系列、网站或其他应用的引荐所启动。在这种情况下,您可以直接在跟踪器中设置广告系列字段,以便将一系列会话中的用户活动归因到特定的引荐流量来源或营销广告系列。
例如,以下实现会针对 Google Analytics(分析)广告系列参数检查启动应用的 intent:
package com.example.app; import com.google.analytics.tracking.android.Fields; import com.google.analytics.tracking.android.GoogleAnalytics; import com.google.analytics.tracking.android.MapBuilder; import com.google.analytics.tracking.android.Tracker; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import java.util.Map; /* * An example of how to implement general campaign attribution in Android. * * If the intent that launched the Activity has a URI, parse it for campaign * parameters and send the referring data to Google Analytics. */ public class MainActivity extends Activity { private static final String GA_PROPERTY_ID = "UA-XXXX-Y"; private static final String SCREEN_LABEL = "Home Screen"; // This examples assumes the use of Google Analytics campaign // "utm" parameters, like "utm_source". private static final String CAMPAIGN_SOURCE_PARAM = "utm_source"; Tracker mTracker; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTracker = GoogleAnalytics.getInstance(this).getTracker(GA_PROPERTY_ID); } @Override public void onStart() { super.onStart(); // Set screen name on tracker so that all subsequent hits will use this // value. mTracker.set(Fields.SCREEN_NAME, SCREEN_LABEL); // Get the intent that started this Activity. Intent intent = this.getIntent(); Uri uri = intent.getData(); // Send a screenview using any available campaign or referrer data. MapBuilder.createAppView().setAll(getReferrerMapFromUri(uri)); } /* * Given a URI, returns a map of campaign data that can be sent with * any GA hit. * * @param uri A hierarchical URI that may or may not have campaign data * stored in query parameters. * * @return A map that may contain campaign or referrer * that may be sent with any Google Analytics hit. */ Map<String,String> getReferrerMapFromUri(Uri uri) { MapBuilder paramMap = new MapBuilder(); // If no URI, return an empty Map. if (uri == null) { return paramMap.build(); } // Source is the only required campaign field. No need to continue if not // present. if (uri.getQueryParameter(CAMPAIGN_SOURCE_PARAM) != null) { // MapBuilder.setCampaignParamsFromUrl parses Google Analytics campaign // ("UTM") parameters from a string URL into a Map that can be set on // the Tracker. paramMap.setCampaignParamsFromUrl(uri.toString()); // If no source parameter, set authority to source and medium to // "referral". } else if (uri.getAuthority() != null) { paramMap.set(Fields.CAMPAIGN_MEDIUM, "referral"); paramMap.set(Fields.CAMPAIGN_SOURCE, uri.getAuthority()); } return paramMap.build(); } }
或者,如果您掌握的广告系列信息并不是 Google Analytics(分析)广告系列参数的形式,则可以在 Map
上设置此类信息并手动发送:
// May return null if EasyTracker has not yet been initialized with a property ID. EasyTracker easyTracker = EasyTracker.getInstance(this); easyTracker.set(Fields.SCREEN_NAME, "Home Screen"); // In this example, campaign information is set using a Map, rather than // a url string with Google Analytics campaign parameters. // Note that Fields.CAMPAIGN_KEYWORD is not necessary for this campaign. HashMap<String, String> campaignData = new HashMap<String, String>(); campaignData.put(Fields.CAMPAIGN_SOURCE, "email"); campaignData.put(Fields.CAMPAIGN_MEDIUM, "email marketing"); campaignData.put(Fields.CAMPAIGN_NAME, "summer_campaign"); campaignData.put(Fields.CAMPAIGN_CONTENT, "email_variation_1"); MapBuilder paramMap = MapBuilder.createAppView(); // Campaign data sent with this hit. // Note that the campaign data is set on the Map, not the tracker. easyTracker.send(paramMap .setAll(campaignData).build() );
Google Play 广告系列归因
利用 Google Play 广告系列衡量功能,您可以了解是哪些广告系列和流量来源将用户引荐到 Google Play 商店下载您的应用。我们建议所有开发者都实现 Google Play 商店广告系列衡量功能。
实施 Google Play 广告系列归因
当您的应用在 Google Play 商店中被下载时,Play 商店应用会在您的应用安装期间向其广播一条 INTENT_REFERRER
。此 intent 包含用于访问应用的 Google Play 商店页面的链接的 referrer
参数的值(如果存在)。
要将应用下载归因于广告系列,您必须在指向 Google Play 商店的所有链接中添加 referrer
参数,并向您的应用添加 BroadcastReceiver
,以在您的 Google Analytics(分析)跟踪器中接收并设置 intent 中包含的广告系列信息。
建议大多数开发者使用 SDK 提供的 BroadcastReceiver
。要使用随附的接收器实现 Google Play 商店广告系列衡量,请执行以下操作:
1. 将 Google Analytics(分析)接收器添加到 AndroidManifest.xml
文件中。要将 Google Analytics(分析)接收器添加到清单中,请复制并粘贴以下标记:
<!-- Used for Google Play Store Campaign Measurement-->; <service android:name="com.google.analytics.tracking.android.CampaignTrackingService" /> <receiver android:name="com.google.analytics.tracking.android.CampaignTrackingReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
2. 将 Google Analytics(分析)广告系列参数添加到 Google Play 网址
接下来,向任何直接链接到 Google Play 商店的网址添加 referrer
参数,并将该参数的值设置为用于描述来源的 Google Analytics(分析)广告系列参数字符串,如下例所示:
https://play.google.com/store/apps/details?id=com.example.app &referrer=utm_source%3Dgoogle %26utm_medium%3Dcpc %26utm_term%3Dpodcast%252Bapps %26utm_content%3DdisplayAd1 %26utm_campaign%3Dpodcast%252Bgeneralkeywords
要了解如何构建广告系列参数字符串,请使用 Google Play 网址构建工具,或参阅广告系列参数一节。
Google Play 网址构建工具
请使用下面的工具为 Google Play 广告系列衡量功能生成网址。