如何在 Android 应用程序中集成 Google Analytics
Posted
技术标签:
【中文标题】如何在 Android 应用程序中集成 Google Analytics【英文标题】:How to integrate Google Analytics in Android app 【发布时间】:2014-09-07 02:33:23 【问题描述】:您好,我正在尝试集成 Google Analytics,但我找不到任何显示在我的 Google Analytics 帐户上的分析数据。我正在使用下面提到的链接:-
developers.google.com link 1
some link 1
some link 2
developer.google link 2
但我无法获得结果,也无法获得正确的路径/方式或有关如何将 Google Analytics 集成到 android 应用程序的正确详细教程。
我的代码如下:-
public class MainActivity extends Activity
GoogleAnalytics tracker;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get tracker.
Tracker t = ((AnalyticsHelper) MainActivity.this.getApplication()).getTracker(
TrackerName.APP_TRACKER);
// Set the dispatch period in seconds.
GAServiceManager.getInstance().setLocalDispatchPeriod(8);
@Override
protected void onStart()
super.onStart();
EasyTracker.getInstance(this).activityStart(this);
// Set the dispatch period in seconds.
GAServiceManager.getInstance().setLocalDispatchPeriod(8);
@Override
protected void onStop()
super.onStop();
EasyTracker.getInstance(this).activityStop(this);
我的 Analytics Helper 类如下:-
public class AnalyticsHelper extends Application
// The following line should be changed to include the correct property id.
private static final String PROPERTY_ID = "UA-xxxxxxxx-x"; // My Property id.
public static int GENERAL_TRACKER = 0;
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 AnalyticsHelper()
super();
synchronized Tracker getTracker(TrackerName trackerId)
if (!mTrackers.containsKey(trackerId))
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
analytics.getLogger().setLogLevel(LogLevel.VERBOSE);
Tracker t = null;
if(trackerId==TrackerName.APP_TRACKER)
t= analytics.getTracker(PROPERTY_ID);
mTrackers.put(trackerId, t);
return mTrackers.get(trackerId);
而我在 xml 目录中的分析 xml 文件如下:-
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:ignore="TypographyDashes">
<!-- The following value should be replaced with correct property id. -->
<string name="ga_trackingId">UA-xxxxxxxx-X</string>
<!--Enable automatic activity tracking-->
<bool name="ga_autoActivityTracking">true</bool>
<!--Enable automatic exception tracking-->
<bool name="ga_reportUncaughtExceptions">true</bool>
</resources>
我们将衷心欢迎任何帮助。 提前致谢。
【问题讨论】:
我将首先使用 sdk 的 v4 而不是旧版本。 developers.google.com/analytics/devguides/collection/android/v4 您的数据可能需要 24 - 48 小时才能开始显示。你等了多久? @DalmTo 好吧,我等了 1-3 个小时。好吧,现在将等待 24 到 48 小时,然后看看它会显示什么。谢谢。 @DalmTo 谢谢它在我等了 24 小时后才起作用。抱歉回复晚了... @PravinsinghWaghela 我正在尝试实现 Google Analytics v4,但是当我编写 GoogleAnalytics analytics = .. 时遇到问题。 Android Studio 不知道它是什么并给我错误。发生在你身上了吗?我正确导入了谷歌播放服务。我在堆栈上问了一个问题,请查看:***.com/questions/26254017/… @Ilario 您是否包含了 Google Analytics(分析)库文件? 【参考方案1】:问题中给出的上述代码运行良好。 您需要做的就是在设置代码并将 Jar 文件 Download Google Analytics Jar file 添加到您的 Lib 之后。只需等待 24 到 48 小时。它会显示您注册的应用程序的所有事件和分析。
已编辑答案:-
创建 Google Analytic 帐户并下载 Jar 文件后,将 Jar 文件添加到应用程序的 lib 文件夹中
Google 分析实施:-
对于分析部分,您只需要将 analytic.xml 文件包含在问题中提到的值文件夹中。
然后在你的MainActivity中定义private EasyTracker easyTracker = null;
。
现在在您的onCreate(Bundle savedInstanceState)
方法中只需编写以下代码行。好吧,您还可以为任何 Listner 编写以下代码,例如在任何按钮单击上。
/*
*For Google Analytics...
*/
easyTracker = EasyTracker.getInstance(MainActivity.this); // It Tracks your Activity...
easyTracker.send(MapBuilder.createEvent("SomeValue(StoryPage)",
"SomeMoreValue(AuthorName) , "SomeMoreValueAgain(StoryTitle)", null).build()); //This line creates the event for keeping logs and other Analytical stuffs concerned to this Activity of Application...
//In the above example we had Tracked the session for the MainActivity and also Analysed how many time this activity was opened, which Author story and which Story was read.
现在在您的onStart()
方法中,只需编写以下代码,它就会为您的活动启动跟踪和分析会话。
EasyTracker.getInstance(this).activityStart(this);
现在在您的onStop()
方法中,只需编写以下代码,它将关闭或停止此活动的跟踪会话。
EasyTracker.getInstance(this).activityStop(this);
现在您可以在其中跟踪和分析您的应用程序和活动。
【讨论】:
它在线给出类转换异常://获取跟踪器。跟踪器 t = ((AnalyticsHelper) MainActivity.this.getApplication()).getTracker(TrackerName.APP_TRACKER); // 以秒为单位设置调度周期。 GAServiceManager.getInstance().setLocalDispatchPeriod(8); @ArslanAhmad 你只是想在 google play store 上跟踪你的应用程序吗?我有一点 dong so 的代码。 @ArslanAhmad 只需检查答案,我现在已经编辑了。【参考方案2】:我已经详细介绍了将 Google Analytics 集成到现有应用程序 here 的步骤。当我发布一个新应用程序时,我总是会回到这些运行良好的说明。
【讨论】:
感谢朋友的回复。 有没有办法在移动应用上显示这些数据?【参考方案3】:首先我们必须创建谷歌分析跟踪 id Goolge analytics sign in and enable api and get track id
然后将该轨道 ID 放在 .xml 代码下方
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="ga_sessionTimeout">300</integer>
<bool name="ga_autoActivityTracking">true</bool>
<string name="ga_trackingId">"place your track id"</string>
<string name="ga_sampleFrequency">100.0</string>
<bool name="ga_reportUncaughtExceptions">true</bool>
<screenName name="com.aquadeals.seller.HomeMainActivity">DashBoard Screen</screenName>
3. 之后我们可以更改清单文件非常重要,在下面添加此代码 添加权限
4.将您的应用程序名称更改为谷歌分析类名称示例“MyApplication.java”
<application
android:name=".app.MyApplication"
5。之后添加使用互联网发送和接收广播事件的服务
<receiver
android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.AnalyticsService"
android:enabled="true"
android:exported="false" />
<receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
-
在此清单更改之前,首先在您的应用中添加这两个类
公共最终类 AnalyticsTrackers
public enum Target APP,
private static AnalyticsTrackers sInstance;
public static synchronized void initialize(Context context)
if (sInstance != null)
throw new IllegalStateException("Extra call to initialize analytics trackers");
sInstance = new AnalyticsTrackers(context);
public static synchronized AnalyticsTrackers getInstance()
if (sInstance == null)
throw new IllegalStateException("Call initialize() before getInstance()");
return sInstance;
private final Map<Target, Tracker> mTrackers = new HashMap<Target, Tracker>();
private final Context mContext;
private AnalyticsTrackers(Context context)
mContext = context.getApplicationContext();
public synchronized Tracker get(Target target)
if (!mTrackers.containsKey(target))
Tracker tracker;
switch (target)
case APP:
tracker = GoogleAnalytics.getInstance(mContext).newTracker(R.xml.app_tracker);
break;
default:
throw new IllegalArgumentException("Unhandled analytics target " + target);
mTrackers.put(target, tracker);
return mTrackers.get(target);
并添加此 AnalyticsApplication.java
public class AnalyticsApplication extends MultiDexApplication
private Tracker mTracker;
private static AnalyticsApplication mInstance;
@Override
public void onCreate()
super.onCreate();
mInstance = this;
AnalyticsTrackers.initialize(this);
AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);
synchronized public Tracker getDefaultTracker()
if (mTracker == null)
GoogleAnalytics analytics = GoogleAnalytics.getInstance(AnalyticsApplication.this);
mTracker = analytics.newTracker(R.xml.app_tracker);
return mTracker;
public synchronized Tracker getGoogleAnalyticsTracker()
AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();
return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
public void trackEvent(String category, String action, String label)
Tracker t = getDefaultTracker();
t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
public static synchronized AnalyticsApplication getInstance()
return mInstance;
public void trackScreenView(String screenName)
Tracker t = getGoogleAnalyticsTracker();
t.setScreenName(screenName);
t.send(new HitBuilders.ScreenViewBuilder().build());
GoogleAnalytics.getInstance(this).dispatchLocalHits();
public void trackException(Exception e)
if (e != null)
Tracker t = getGoogleAnalyticsTracker();
t.send(new HitBuilders.ExceptionBuilder()
.setDescription( new StandardExceptionParser(this, null)
.getDescription(Thread.currentThread().getName(), e))
.setFatal(false)
.build()
);
最后我们可以在你的 mainactivity.java 类或者你需要的类中添加代码 初始化Step1
AnalyticsApplication 应用程序1;
私人追踪器 mTracker;
步骤:2
application1 = (AnalyticsApplication) getApplication();
mTracker = application1.getDefaultTracker();
如果您在谷歌分析中运行此代码,显示您在 xml 中提到的屏幕名称。
第 3 步为跟踪事件添加此代码
mTracker.send(new HitBuilders.EventBuilder()
.setCategory("DashBoard ")
.setAction("View Bookings Pressed")
.build());
步骤:4 跟踪异常行为代码添加到你的 catch 块中
catch (Exception e)
** AnalyticsApplication.getInstance().trackException(e);**
e.printStackTrace();
编码愉快..
【讨论】:
您能否发布一个屏幕截图,说明跟踪显示在仪表板上的位置?我实施了跟踪,但看不到数据显示在哪里。 检查此网址google.com/analytics/#?modal_active=none 创建 Tracker 实例是否必须扩展应用程序? @vgokul129 我认为这是必需的 @VenkateshNani:任何具体的理论都可以这么说。以上是关于如何在 Android 应用程序中集成 Google Analytics的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Android 应用程序中集成 Quick Blox 视频聊天服务?
如何在 Android 应用程序中集成 BHIM 应用程序支付网关?
如何在 Android App 中集成 OpenCV Manager
如何在 Android 中集成 PayU 货币网关? [关闭]