简体   繁体   中英

Android - Nothing on screen when Google Analytics used

I have implemented Google Analytics API on my app but when I try to send a track, screen cannot be rendered.

My application class ( ETApp.class ):

private static final String PROPERTY_ID = "XX-XXXXXXXX-1";
    public static int GENERAL_TRACKER = 0;
    public enum TrackerName {
        APP_TRACKER, GLOBAL_TRACKER, ECOMMERCE_TRACKER,
    }
    public HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

...

public synchronized Tracker getTracker(TrackerName appTracker) {
        if (!mTrackers.containsKey(appTracker)) {
            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            Tracker t = (appTracker == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID) : (appTracker == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker) : analytics.newTracker(R.xml.ecommerce_tracker);
            mTrackers.put(appTracker, t);
        }
        return mTrackers.get(appTracker);
    }

MainActivity.java (in onCreate event):

Tracker t = ((ETApp) this.getApplication()).getTracker(ETApp.TrackerName.APP_TRACKER);
t.setScreenName("MainActivity");
t.send(new HitBuilders.AppViewBuilder().build());

app_tracker.xml

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

    <string name="ga_trackingId">XX-XXXXXXXX-1</string>

    <bool name="ga_autoActivityTracking">true</bool>
    <bool name="ga_reportUncaughtExceptions">true</bool>

    <string name="ga_appName">MyAppName</string>
    <string name="ga_appVersion">0.0.1</string>

    <bool name="ga_debug">true</bool>

    <item name="ga_dispatchPeriod" format="integer" type="integer">120</item>

    <string name="ga_sampleFrequency">90</string>

    <bool name="ga_anonymizeIp">true</bool>
    <bool name="ga_dryRun">false</bool>

    <string name="ga_sampleFrequency">100.0</string>

    <integer name="ga_sessionTimeout">-1</integer>

    <string name="com.myapp.name">MainActivity</string>

</resources>

ecommerce_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="ga_sessionTimeout">60</integer>
    <string name="ga_trackingId">XX-XXXXXXXX-1</string>
</resources>

global_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="TypographyDashes">

    <integer name="ga_sessionTimeout">300</integer>

    <bool name="ga_autoActivityTracking">true</bool>

    <screenName name="com.google.android.gms.analytics.samples.mobileplayground.ScreenviewFragment">
        MyApp ScreenViewScreen
    </screenName>
    <screenName name="com.google.android.gms.analytics.samples.mobileplayground.EcommerceFragment">
        MyApp EcommerceScreen
    </screenName>

    <string name="ga_trackingId">XX-XXXXXXXX-1</string>

</resources>

I have also put meta tags into manifest between tags:

<meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
        <meta-data
            android:name="com.google.android.gms.analytics.globalConfigResource"
            android:resource="@xml/global_tracker" />

But when I run my app, I get this screen and nothing else happens. Additionally, I can track on dashboard sometimes, but not always. What might be the problem?

MainActivity屏幕截图

Edit: It also doesn't log GoogleAnalyticsTracker

You are probably using Google Play Services 6.5 and you are experiencing the deadlock in GoogleAnalytics.getInstance - GoogleAnalytics.getInstance(this) not respond

Try upgrading to Google Play Services 7.0 or later. The deadlock bug was fixed in GPS 7.0.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM