集成谷歌分析“v4"进入安卓应用 [英] Integrate Google Analytics "v4" into an Android app

查看:18
本文介绍了集成谷歌分析“v4"进入安卓应用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

感谢您的回答,但还是不行.

Thanks for the answer, but it still does not work.

我已经创建了:

public class GAnalytics extends Application{

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

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 GAnalytics() {
    super();
}

synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

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

    }
    return mTrackers.get(trackerId);
}

}

在我的 MainActivity 的 OnCreate 下:

Under OnCreate in my MainActivity:

String ACTIVITY_NAME = "MyApp";
// Get tracker.
    Tracker t = ((GAnalytics) getApplication()).getTracker(TrackerName.APP_TRACKER);

    // Set screen name.
    // Where path is a String representing the screen name.
    t.setScreenName(ACTIVITY_NAME);

    // Send a screen view.
    t.send(new HitBuilders.AppViewBuilder().build());

我在 Application (android: name...) 下添加了清单

I have added the manifest under Application (android: name...)

还有我的日志:

05-16 18:27:41.705:E/AndroidRuntime(25187):致命异常:主要05-16 18:27:41.705:E/AndroidRuntime(25187):进程:com.MyApplication.Banana,PID:2518705-16 18:27:41.705: E/AndroidRuntime(25187): java.lang.NoClassDefFoundError: com.google.android.gms.analytics.GoogleAnalytics05-16 18:27:41.705: E/AndroidRuntime(25187): 在 com.MyApplication.Banana.GAnalytics.getTracker(GAnalytics.java:30)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 com.MyApplication.Banana.MainActivity.onCreate(MainActivity.java:56)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.Activity.performCreate(Activity.java:5231)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)05-16 18:27:41.705:E/AndroidRuntime(25187):在 android.app.ActivityThread.access$800(ActivityThread.java:135)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.os.Handler.dispatchMessage(Handler.java:102)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.os.Looper.loop(Looper.java:136)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 android.app.ActivityThread.main(ActivityThread.java:5017)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 java.lang.reflect.Method.invokeNative(Native Method)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 java.lang.reflect.Method.invoke(Method.java:515)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)05-16 18:27:41.705: E/AndroidRuntime(25187): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)05-16 18:27:41.705: E/AndroidRuntime(25187): at dalvik.system.NativeStart.main(Native Method)

05-16 18:27:41.705: E/AndroidRuntime(25187): FATAL EXCEPTION: main 05-16 18:27:41.705: E/AndroidRuntime(25187): Process: com.MyApplication.Banana, PID: 25187 05-16 18:27:41.705: E/AndroidRuntime(25187): java.lang.NoClassDefFoundError: com.google.android.gms.analytics.GoogleAnalytics 05-16 18:27:41.705: E/AndroidRuntime(25187): at com.MyApplication.Banana.GAnalytics.getTracker(GAnalytics.java:30) 05-16 18:27:41.705: E/AndroidRuntime(25187): at com.MyApplication.Banana.MainActivity.onCreate(MainActivity.java:56) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.Activity.performCreate(Activity.java:5231) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.ActivityThread.access$800(ActivityThread.java:135) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.os.Handler.dispatchMessage(Handler.java:102) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.os.Looper.loop(Looper.java:136) 05-16 18:27:41.705: E/AndroidRuntime(25187): at android.app.ActivityThread.main(ActivityThread.java:5017) 05-16 18:27:41.705: E/AndroidRuntime(25187): at java.lang.reflect.Method.invokeNative(Native Method) 05-16 18:27:41.705: E/AndroidRuntime(25187): at java.lang.reflect.Method.invoke(Method.java:515) 05-16 18:27:41.705: E/AndroidRuntime(25187): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 05-16 18:27:41.705: E/AndroidRuntime(25187): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-16 18:27:41.705: E/AndroidRuntime(25187): at dalvik.system.NativeStart.main(Native Method)

推荐答案

如您的链接中所述,GA 相关代码应放置在 Application 类中,而不是 Activity.

As described in your link, the GA-related code should be placed inside the Application class instead of the Activity.

像这样创建一个类扩展Application:

Create a class extends Application like this:

public class MyApplication extends Application{
    //the tracker related code should be place here (the enum, getTracker, mTrackers)
}

然后在您的 AndroidManifest.xml 中,在 application 标记下,将 android:name 替换为上面的 MyApplication类.

then in your AndroidManifest.xml, under the application tag, replace the android:name with the above MyApplication class.

tracker代码应该放在Activity.oncreate方法中比如

The tracker code should be placed in the Activity.oncreate method such as

public class MainActivity extends Activity {
.
.
.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
// Get tracker.
    Tracker t = ((AnalyticsSampleApp) getApplication()).getTracker(
        TrackerName.APP_TRACKER);

    // Set screen name.
    // Where path is a String representing the screen name.
    t.setScreenName(path);

    // Send a screen view.
    t.send(new HitBuilders.AppViewBuilder().build());
}
.
.
.
}

这篇关于集成谷歌分析“v4"进入安卓应用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆