進階設定

本文件將概略介紹 Android 適用的 Google Analytics (分析) SDK v4 的部分進階設定功能。

總覽

Android 專用的 Google Analytics (分析) SDK v4 提供了 Tracker 類別,用於設定資料並傳送至 Google Analytics (分析),以及一個 GoogleAnalytics 單例模式,用來做為導入全域設定值的介面。

初始化

您必須先提供 Context 物件和 Google Analytics (分析) 資源 ID,才能透過 GoogleAnalytics 單例模式初始化至少一個追蹤器,才能開始評估資料。詳情請參閱 Google Analytics (分析) 參考資料

使用設定檔

您也可以使用設定檔初始化追蹤器。例如:

package com.google.android.apps.mobileplayground;

import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import java.util.HashMap;

/**
 * An extension to Application class to provide tracker for analytics purposes. Having the tracker
 * instances here allows all the activities to access the same tracker instances. The trackers can
 * be initialised on startup or when they are required based on performance requirements.
 */
public class AnalyticsSampleApp extends Application {

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

  /**
   * Enum used to identify the tracker that needs to be used for tracking.
   *
   * A single tracker is usually enough for most purposes. In case you do need multiple trackers,
   * storing them all in Application object helps ensure that they are created only once per
   * application instance.
   */
  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 AnalyticsSampleApp() {
    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);
  }
}

設定和傳送資料

使用建構工具設定參數/值組合,透過追蹤程式 send 方法將資料傳送至 Google Analytics (分析)。

以下範例說明如何建構應用程式檢視畫面並呼叫追蹤器傳送方法,以傳送畫面瀏覽到 Google Analytics (分析):

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

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

Measurement Protocol Ampersand 語法

您可以使用 Measurement Protocol 與語法,透過 HitBuilders.ScreenViewBuilder 設定單次命中的值。如要為所有後續命中設定值,請使用追蹤器物件本身。

// Setting the content description field on a single hit using ampersand syntax.
tracker.send(new HitBuilders.ScreenViewBuilder()
  .set("&cd", "Home Screen")
  .build()
);

如需可用 Measurement Protocol 參數的完整清單,請參閱 Measurement Protocol 參數參考資料

將值套用至多次命中

系統會保留直接在追蹤程式上設定的任何值,並套用至多個命中,如以下範例所示:

// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

// Set screen name.
t.setScreenName(screenName);

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

// This event will also be sent with the most recently set screen name.
// Build and send an Event.
t.send(new HitBuilders.EventBuilder()
    .setCategory(getString(categoryId))
    .setAction(getString(actionId))
    .setLabel(getString(labelId))
    .build());

// Clear the screen name field when we're done.
t.setScreenName(null);

請只在追蹤程式上直接設定想要在多次命中中保留的值。在追蹤程式上設定畫面名稱很合理,因為相同的值可套用至後續的畫面瀏覽和事件命中。不過,我們不建議您在追蹤程式上設定命中類型這類欄位,因為這個欄位可能會隨每次命中而改變。

使用多個追蹤器

在您的行動應用程式中,您可以使用多個追蹤器將資料傳送至不同屬性:


public class MyApp extends Application {

  public void initTrackers() {
    GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);

    globalTracker = analytics.newTracker(R.xml.global_tracker);
    ecommerceTracker = analytics.newTracker(R.xml.ecommerce_tracker);
  }

  public static Tracker globalTracker;
  public static Tracker ecommerceTracker;

  ...
}

雖然您的行動應用程式可以有多個追蹤程式,但您只能在追蹤器上呼叫 enableExceptionReporting() 方法,使用一個追蹤器回報未偵測到的例外狀況。

取樣

您可以啟用用戶端取樣功能,限制傳送至 Google Analytics (分析) 的命中次數。如果應用程式的使用者人數較多,或是以其他方式傳送大量資料至 Google Analytics (分析),啟用取樣功能可確保報表資料不會中斷。

舉例來說,如要以 50% 的速率啟用用戶端取樣,請在設定檔中使用以下參數:

<string name="ga_sampleFrequency">50.0</string>

如何以程式輔助方式啟用追蹤器的用戶端取樣功能:

mTracker.setSampleRate(50.0d);

在應用程式層級選擇不採用

您可以啟用應用程式層級的選擇不採用標記,藉此停用整個應用程式的 Google Analytics (分析)。請注意,每次啟動應用程式時,都必須設定這個標記,並將預設值預設為 false

如要取得應用程式層級的停用設定,請使用:

boolean isOptedOut = GoogleAnalytics.getInstance(this).getAppOptOut();

如要設定應用程式層級的選擇不採用功能,請使用:

GoogleAnalytics.getInstance(this).setAppOptOut(true);

在一般導入作業中,應用程式可能會監聽 SharedPreferences 的變更,並據此更新 Google Analytics (分析) 選擇不採用設定:

SharedPreferences userPrefs = PreferenceManager.getDefaultSharedPreferences(this);

userPrefs.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener () {

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    if (key.equals(TRACKING_PREF_KEY)) {
      GoogleAnalytics.getInstance(getApplicationContext()).setAppOptOut(sharedPreferences.getBoolean(key, false));
    } else {
      // Any additional changed preference handling.
    }
  }
});

刪除用戶端使用者資料

如果您需要重設或刪除使用者的 Google Analytics (分析) 用戶端資料,可以刪除 Client ID 檔案。

如果刪除 gaClientId 檔案,系統會強制產生新的用戶端 ID,且所有後續命中都會使用新的用戶端 ID。之前的資料不會與新的用戶端 ID 建立關聯。

如要刪除 gaClientId 檔案,請使用 Context.deleteFile 方法:

context.deleteFile("gaClientId");

將 IP 去識別化

啟用 IP 去識別化功能之後,Google Analytics (分析) 就會移除儲存前 IP 位址的最後八位元,藉此將 SDK 傳送的 IP 資訊去識別化。

如要啟用 IP 去識別化功能,請在設定檔中使用下列參數:

<string name="ga_anonymizeIp">true</string>

如要透過程式輔助方式將 IP 功能去識別化,請使用 setAnonymizeIp 方法:

mTracker.setAnonymizeIp(true)

您隨時可以呼叫 setAnonymizeIp 方法。

測試和偵錯

Android 專用的 Google Analytics (分析) SDK v4 提供多項工具,方便您進行測試和偵錯。

模擬測試

SDK 提供 dryRun 旗標,設定後可防止任何資料傳送至 Google Analytics (分析)。每次測試或偵錯導入時,都應設定 dryRun 標記,但不希望測試資料顯示在 Google Analytics (分析) 報表中。

如要設定模擬測試標記,請按照下列步驟操作:

// When dry run is set, hits will not be dispatched, but will still be logged as
// though they were dispatched.
GoogleAnalytics.getInstance(this).setDryRun(true);

Logger

Google Analytics (分析) 會使用 Android Log 系統,在 GAv4 標記底下記錄 Logcat。根據預設,只有「ERROR」級別會啟用 WARN 和 INFO 層級。如要啟用偵錯級別,請在裝置或模擬器中執行下列 ADB 指令:

adb shell setprop log.tag.GAv4 DEBUG

如果只要查看 logcat 的 Google Analytics (分析) 訊息,請使用以下指令:

adb logcat -v time -s GAv4

詳情請參閱 Google Analytics (分析) 記錄器參考資料