Google Analytics в приложении для Android

У меня есть приложение для Android и учетная запись Google Analytics пару дней назад. Я добавил все коды (java, xml) в соответствии с руководствами, запускаю приложение и вижу это сообщение в LogCat, но не получаю никаких отчетов на странице GA в реальном времени.

12-20 21:02:55.231: V/GAV4(692): Thread[GAThread,5,main]: Отправка обращения в хранилище PATH: https: PARAMS: ul=en-us, ht=1419109375226, sr=768x1184, a =1387204066, sf=100.0, помощь=com.example.myApp, cid=d7608297-cbbc-4516-b82d-5acabdce4814, av=1.0, v=1, t=экран, an=мое приложение, tid=UA-.. ......-2, _u=.9r8, cd=com.example.myApp.MainActivity,

Если вам нужен мой код:

манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myApp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="19" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <application

        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name ="MyApp"
        android:theme="@style/AppTheme" >

        <!-- Google Analytics Version v4 needs this value for easy tracking -->
        <meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
        android:resource="@xml/global_tracker" />
        <activity
            android:name="com.example.myApp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

<activity android:name="com.google.android.gms.ads.AdActivity"   
                  android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>  
    </application>

</manifest>

Заявление:

import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;

import android.app.Application;
public class MyApplication extends Application  {

    // The following line should be changed to include the correct property id.
    private static final String PROPERTY_ID = "UA-.......-2";

    //Logging TAG

    private static final String TAG = "MyApp";

    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 MyApplication() {

          super();

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

            }
            return mTrackers.get(trackerId);
          }
}

Основная деятельность :

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
        getOverflowMenu();
        interstitial = new InterstitialAd(this);

        //Get a Tracker (should auto-report)
        Tracker t =((MyApplication) getApplication()).getTracker(MyApplication.TrackerName.APP_TRACKER);

        // Enable Advertising Features.
        t.enableAdvertisingIdCollection(true);
    }

@Override
public void onStart() {
    super.onStart();

    //Get an Analytics tracker to report app starts & uncaught exceptions etc.
    GoogleAnalytics.getInstance(this).reportActivityStart(this);
}

@Override
public void onStop() {
    super.onStop();
//Stop the analytics tracking
GoogleAnalytics.getInstance(this).reportActivityStop(this);
}

global_tracker.xml:

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

<!-- the Local LogLevel for Analytics -->
<string name="ga_logLevel">verbose</string>

<!-- how often the dispatcher should fire -->
<integer name="ga_dispatchPeriod">1</integer>

<!-- Treat events as test events and don't send to google -->
<bool name="ga_dryRun">false</bool>

<!-- The screen names that will appear in reports -->
<screenName name="com.example.MainActivity">MainActivity</screenName>
</resources>

app_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes">
<!-- tools:ignore="TypographyDashes" -->
<!-- The apps Analytics Tracking Id -->
<string name="ga_trackingId">UA-........-2</string>

<!-- Percentage of events to include in reports -->
<string name="ga_sampleFrequency">100.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">-1</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.example.MainActivity">MainActivity</screenName>

</resources>

person TamarG    schedule 20.12.2014    source источник


Ответы (1)


После настройки кода и аккаунта вам придется подождать 24-48 часов. После этого только вы сможете получить данные. Для более простого способа сделать это вы можете увидеть мой ответ на этот пост

Google Analytics — NetworkOnMainThreadException при отправке в AsyncTask

person Biplab De    schedule 17.01.2015
comment
Конечно. только после полуночи он начал работать, после того, как мы потратили столько часов, чтобы понять, что не так... - person TamarG; 18.01.2015