分析调度不触发 android

Analytics dispatch doesn't trigger android

我的 android 应用程序中的 google 分析不会触发调度,如果我使用 GoogleAnalytics.getInstance(this.getBaseContext()).dispatchLocalHits();,将输出以下逻辑:

V/GAV4﹕ Thread[main,5,main]: Dispatch call queued. Dispatch will run once initialization is complete.

但是没有调度触发器,分析仪表板中也没有显示任何内容。如果不手动执行此操作,logcat 甚至不会调用它...

我在每个 activity 的 onCreate 方法中使用此代码 我想使用分析来设置: ((MyApplication) getApplication()).getTracker(MyApplication.TrackerName.APP_TRACKER); 和 onStart 方法中的代码:GoogleAnalytics.getInstance(getApplication()).reportActivityStart(this); 以及 onStop 方法中的代码:GoogleAnalytics.getInstance(getApplication()).reportActivityStop(this);。 这是我的应用程序中的分析代码 class:

synchronized Tracker getTracker(TrackerName trackerId) {
    Log.d("analytics", "getTracker()");
    Log.d("analytics", String.valueOf(analIsOptedOut));
    Log.d("analytics", "not opt out");
    if (!mTrackers.containsKey(trackerId)) {
        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        // Global GA Settings
        // <!-- Google Analytics SDK V4 BUG20141213 Using a GA global xml freezes the app! Do config by coding. -->
        analytics.setDryRun(dryRun);
        analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
        analytics.setLocalDispatchPeriod(15);
        analytics.enableAutoActivityReports(this);
        // Create a new tracker
        Tracker t = analytics.newTracker(R.xml.app_tracker);
        t.enableAdvertisingIdCollection(true);

        mTrackers.put(trackerId, t);
    }
    return mTrackers.get(trackerId);
}

public enum TrackerName {
    APP_TRACKER // Tracker used only in this app.
}

这是我的 app_tracker.xml:

<?xml version="1.0" encoding="utf-8"?>

<!-- The apps Analytics Tracking Id -->
<string name="ga_trackingId">U.....</string>

<!-- Percentage of events to include in reports -->
<string name="ga_sampleFrequency">30.0</string>

<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>

<!-- catch and report uncaught exceptions from the app -->
<bool name="ga_reportUncaughtExceptions">true</bool>

<!-- How long a session exists before giving up -->
<integer name="ga_sessionTimeout">300</integer>

<!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to
substitute for the full length canonical Activity name in screen view hit. In order to
specify an alternate screen name use an <screenName> element, with the name attribute
specifying the canonical name, and the value the alias to use instead. -->
<screenName name="com.blah.MainActivity">Main Activity</screenName>

谢谢! :D

在 Google Play 设备(大多数 Android phones/tables)上,分析数据将被发送到 Play 服务进行调度,GoogleAnalytics.dispatchLocalHits() 是 noop。您看到的日志消息具有误导性,但它不会阻止您的应用将数据发送到 Google Play 服务进行调度。

GoogleAnalytics.reportActivityStart(activity) & reportActivityStop(activity) 仅在 API 级别 14 (ICE_CREAM_SANDWICH) 之前的设备上需要调用。在 API 级别 14 设备和更高版本的设备上,调用将被忽略。 Android 在 API 级别 14 中添加了 activity lifecycle callbacks。在级别 14 之前,您需要手动调用 GoogleAnalytics.reportActivityStart/reportActivityStop 让 Analytics 知道 activity 有 started/stopped。在 API 14+ Analytics 使用 activity 生命周期回调来订阅 activity 更改并且不需要显式调用。

有关详细信息,请参阅 enableAutoActivityReports 上的文档。

我怀疑您在分析仪表板中看不到任何数据,因为您在跟踪器 xml 配置中设置了 30% 的采样率 - <string name="ga_sampleFrequency">30.0</string>。采样在设备级别执行。将采样设置为 30% 意味着您的特定设备有 70% 的概率被采样(当设备被采样时不会发送任何命中)。尝试将采样率设置为 100% 或将线全部删除,默认为不采样。

另一个潜在的罪魁祸首是 analytics.setDryRun(dryRun);。您的代码没有显示 dryRun 值是如何定义的。如果将 dryRun 设置为 true,则不会向 Analytics 发送任何数据。