簡體   English   中英

將Google Analytics(分析)“ v4”集成到Android應用中

[英]Integrate Google Analytics “v4” into an Android app

感謝您的回答,但仍然無法正常工作。

我創建了:

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下:

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());

我在應用程序下添加了清單(android:name ...)

而我的日志:

05-16 18:27:41.705:E / AndroidRuntime(25187):致命異常:主05-16 18:27:41.705:E / AndroidRuntime(25187):進程: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):在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):在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):at 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):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):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)05-16 18:27:41.705:E / AndroidRuntime(25187) ):在dalvik .system.NativeStart.main(本機方法)

如您的鏈接中所述,與GA相關的代碼應放在Application類中,而不是Activity

創建一個類擴展Application如下所示:

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

然后在您的AndroidManifest.xmlapplication標記下,將android:name替換為上面的MyApplication類。

跟蹤器代碼應放置在Activity.oncreate方法中,例如

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());
}
.
.
.
}

今天,我面臨着同樣的問題並獲得了您的職位,但是沒有人指出正確的方向。

但是我找到了解決方案,並使Google Analytics(分析)代碼正常工作。

請注意:

method (this has been changed in V4) 方法跟蹤代碼移動到片段類(在V4中已更改)
原因:因為片段的生存期沒有活動的生存期簡單。 Android不提供片段生命周期的回調。

v4實施文檔的第2步-第2步,初始化跟蹤器代碼應寫入Application類。 對於應用程序類而言,重要的是將應用程序標記和屬性從AndroidManifest.xml引用為android:name =“ com.brodev.socialapp.entity.User”

如果有幫助,請將答案標記為“ UP”。 因此,它將幫助他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM