新的Google Analytics SDK 4

4
我在设置我的安卓应用的 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);
      }

我不确定如何处理PROPERTY ID或如何调用它。谢谢!

你尝试创建 XML 文件了吗? - Sudhir Mishra
是的,我遇到的问题出在这一行:analytics.newTracker(PROPERTY_ID)。我不明白如何定义这个property_id。 - user3462221
3个回答

13

将以下代码行放入MainActivity中:

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

将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.

这足以提供大量有用的分析数据。

您需要添加以下内容:

    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;

不要忘记在AndroidManifest.xml文件的<manifest>标签中的<application>标签之前添加以下权限:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Google 也建议在 <application> 标签内添加以下标签。

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

最后,如果你正在使用Android Studio,谷歌建议将以下行添加到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;
    }

同时,将此依赖项添加到您项目的build.gradle文件中:

    apply plugin: 'android'
    ...

    dependencies {
        compile 'com.android.support:appcompat-v7:+'
        compile 'com.google.android.gms:play-services:4.3.23'
    }

你在哪里定义了TrackerName? - Tolgay Toklar
Tolgay,我在自己的包中将TrackerName定义为公共枚举类型,并将其导入到MainActivity中。在组织成包之前,我将其定义在MainActivity.java中。 - Jason Hartley

1

属性 ID 是一个格式为 UA-XXXXXX-Y 的字符串。它也被称为跟踪 ID、网站属性 ID 等。您可以从 Google Analytics 帐户的管理设置中获取此 ID。很可能您已经拥有它。

获取跟踪器基本上有两种方法。您可以从 xml 文件创建它。如果您正在这样做,您需要使用 public Tracker newTracker (int configResId)

第二种方法是使用 public Tracker newTracker (String trackingId)。在您的代码片段中,您正在使用第二种方法。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接