新的Google AnalyticsSDK 4

use*_*221 4 java android google-analytics

我在Android应用上设置Google Analytics时遇到了一些问题.任何人都可以帮助我,并指出一些示例代码或教程.我试图遵循这一个

继承我的代码:

package com.examp2.testq;

import java.util.HashMap;

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

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

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



}

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

  }

  HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
  synchronized Tracker getTracker(TrackerName trackerId) {
        if (!mTrackers.containsKey(trackerId)) {

          GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
          Tracker t = (trackerId == TrackerName.APP_TRACKER) ?         analytics.newTracker(PROPERTY_ID)
              : 
          mTrackers.put(trackerId, t);

        }
        return mTrackers.get(trackerId);
      }
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理PROPERTY ID或如何调用它?谢谢!

Jas*_*ley 13

将以下行放在MainActivity中:

    private static final String PROPERTY_ID = "UA-xxxxx-x";
    private Tracker tracker;
    HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
Run Code Online (Sandbox Code Playgroud)

将UA-xxxxx-x替换为您应用的跟踪ID.

我在只有一个屏幕的应用中使用Google Analytics,因此我的MainActivity onCreate方法如下所示:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     

    GoogleAnalytics.getInstance(this).newTracker(PROPERTY_ID);
    GoogleAnalytics.getInstance(this).getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
    tracker = getTracker(TrackerName.APP_TRACKER);
    tracker.setScreenName("MainActivity");
    tracker.send(new HitBuilders.AppViewBuilder().build());

    setContentView(R.layout.main);
    //...etc.
Run Code Online (Sandbox Code Playgroud)

这足以支持Analytics中的大量有用数据.

您必须添加以下内容:

    import com.google.android.gms.analytics.HitBuilders;
    import com.google.android.gms.analytics.Logger;
    import com.google.android.gms.analytics.Tracker;
    import com.google.android.gms.analytics.GoogleAnalytics;
Run Code Online (Sandbox Code Playgroud)

不要忘记在AndroidManifest.xml的<manifest>标记内的<application>标记之前添加以下权限:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Run Code Online (Sandbox Code Playgroud)

谷歌还说要在<application>标签内添加以下标签.

    <meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version" />
Run Code Online (Sandbox Code Playgroud)

最后,如果您使用的是Android Studio,Google会将以下行添加到proguard-rules.txt:

    -keep class * extends java.util.ListResourceBundle {
        protected Object[][] getContents();
    }

    -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
        public static final *** NULL;
    }

    -keepnames @com.google.android.gms.common.annotation.KeepName class *
    -keepclassmembernames class * {
        @com.google.android.gms.common.annotation.KeepName *;
    }

    -keepnames class * implements android.os.Parcelable {
        public static final ** CREATOR;
    }
Run Code Online (Sandbox Code Playgroud)

...以及对项目的build.gradle文件的依赖性:

    apply plugin: 'android'
    ...

    dependencies {
        compile 'com.android.support:appcompat-v7:+'
        compile 'com.google.android.gms:play-services:4.3.23'
    }
Run Code Online (Sandbox Code Playgroud)