Android 專用的 Google Analytics (分析) SDK v1 (舊版)

您可以使用 Android 版 Google Analytics (分析) 行動應用程式 SDK,輕鬆將 Google Analytics (分析) 導入 Android 應用程式。本文說明如何將 SDK 與應用程式整合。

SDK 總覽

這個 SDK 使用的追蹤模型能追蹤傳統網站的使用者,以及傳統網頁中小工具的互動情形。因此,下方使用的字詞反映了傳統的網站追蹤模式,目前也用於追蹤行動應用程式。建議您熟悉 Analytics (分析) 追蹤,瞭解這個 SDK 的運作方式。

使用下列 Analytics (分析) 互動類型,使用行動追蹤 SDK 追蹤手機應用程式:

網頁瀏覽追蹤
網頁瀏覽是評估傳統網站流量的標準方式。由於行動應用程式不包含 HTML 網頁,因此您必須決定觸發網頁瀏覽請求的時機和頻率。此外,由於網頁瀏覽要求的設計目的在於製作目錄結構報表,因此您應該為要求提供描述性的名稱,以利用 Analytics (分析)「內容」報表中的網頁路徑命名方式。系統會將您選擇的名稱填入 Analytics (分析) 報表做為網頁路徑 (即使這些名稱實際上不是 HTML 網頁)。不過,您可以藉由建構路徑來為呼叫提供其他分組,以便善用這項優勢。
事件追蹤
在 Analytics (分析) 中,事件的作用是分別追蹤使用者與網頁元素的互動,而這與網頁瀏覽要求並不相同。您可以使用 Google Analytics (分析) 的「事件追蹤」功能撥打其他呼叫,這些呼叫會記錄在 Analytics (分析) 報表介面的「事件追蹤」區段中。事件會依類別分類,也可能會使用個別事件的標籤,方便您靈活製作報表。舉例來說,多媒體應用程式可針對 video 類別建立播放/停止/暫停動作,並為每個影片名稱指派一個標籤。接著,Google Analytics (分析) 報表就會匯總標有「影片」類別所有事件的事件。如要進一步瞭解事件追蹤,請參閱事件追蹤指南
電子商務追蹤
使用電子商務追蹤功能追蹤購物車交易和應用程式內購。如要追蹤交易,請使用 Transaction 類別代表整體購物資訊,並使用 Item 類別代表購物車中的各項產品。收集到資料後,您就可以在 Google Analytics (分析) 介面的「電子商務報表」部分查看這些資料。若要進一步瞭解電子商務追蹤,請參閱電子商務追蹤指南
自訂變數
自訂變數是一種名稱與值組合的代碼,你可以插入至追蹤程式碼,藉此調整 Google Analytics (分析) 追蹤功能。如要進一步瞭解如何使用自訂變數,請參閱自訂變數指南

入門課程

需求條件

如要將 Google Analytics (分析) 的追蹤功能與 Android 應用程式整合,您必須符合以下條件:

設定

  • libGoogleAnalytics.jar 新增至專案的 /libs 目錄。
  • 在專案的 AndroidManifest.xml 資訊清單檔案中新增下列權限:
    • <uses-permission android:name="android.permission.INTERNET" />
    • <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

SDK 中會包含一個應用程式範例,用來示範專案設定成功後的狀況。您可以將這個範本做為範本,用來製作與 Analytics (分析) 整合的應用程式。

使用 SDK

開始使用 SDK 前,請務必先前往 www.google.com/analytics 建立免費帳戶,並使用假明確的網站網址 (例如 http://mymobileapp.mywebsite.com) 在該帳戶中建立新的網站資源。建立資源後,請寫下或保留為新建資源產生的網站資源 ID 副本。

您必須在應用程式或服務條款中,向使用者註明您保留匿名追蹤及回報應用程式內使用者活動的權利。您使用 Google Analytics (分析) SDK 時,也必須遵守 Google Analytics (分析) 服務條款,您必須在註冊帳戶時同意這份服務條款。

範例和最佳做法

您可以前往 code.google.com ,在 analytics-api-samples 專案底下找到程式碼範例和最佳做法。

EasyTracker 程式庫

可使用 EasyTracker 程式庫。這項服務幾乎不需費心開發,即可提供應用程式和活動層級追蹤功能。您可以在 analytics-api-samples 專案的「下載」部分找到這組 ID。

啟動追蹤器

呼叫 GoogleAnalyticsTracker.getInstance() 取得追蹤器單例模式。接著呼叫其 startNewSession 方法,傳遞所追蹤的網站資源 ID 和活動。如果您的應用程式只有一項活動,可以直接在 Activity 的 onCreate 方法中呼叫此方法。例如:

package com.google.android.apps.analytics.sample;

import com.google.android.apps.analytics.GoogleAnalyticsTracker;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestActivity extends Activity {

  GoogleAnalyticsTracker tracker;

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

    tracker = GoogleAnalyticsTracker.getInstance();

    // Start the tracker in manual dispatch mode...
    tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", this);

    // ...alternatively, the tracker can be started with a dispatch interval (in seconds).
    //tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", 20, this);

    setContentView(R.layout.main);
    Button createEventButton = (Button)findViewById(R.id.NewEventButton);
    createEventButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        tracker.trackEvent(
            "Clicks",  // Category
            "Button",  // Action
            "clicked", // Label
            77);       // Value
      }
    });

    Button createPageButton = (Button)findViewById(R.id.NewPageButton);
    createPageButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Add a Custom Variable to this pageview, with name of "Medium" and value "MobileApp" and
        // scope of session-level.
        tracker.setCustomVar(1, "Navigation Type", "Button click", 2);
        // Track a page view. This is probably the best way to track which parts of your application
        // are being used.
        // E.g.
        // tracker.trackPageView("/help"); to track someone looking at the help screen.
        // tracker.trackPageView("/level2"); to track someone reaching level 2 in a game.
        // tracker.trackPageView("/uploadScreen"); to track someone using an upload screen.
        tracker.trackPageView("/testApplicationHomeScreen");
      }
    });

    Button quitButton = (Button)findViewById(R.id.QuitButton);
    quitButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        finish();
      }
    });

    Button dispatchButton = (Button)findViewById(R.id.DispatchButton);
    dispatchButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        // Manually start a dispatch, not needed if the tracker was started with a dispatch
        // interval.
        tracker.dispatch();
      }
    });
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    // Stop the tracker when it is no longer needed.
    tracker.stopSession();
  }
}

應用程式中有多個活動時,您可以使用 analytics-api-samples 專案「下載」區段中提供的 EasyTracker 程式庫。

追蹤網頁瀏覽量和事件

追蹤網頁瀏覽和事件相當簡單:每次要觸發網頁瀏覽時,只要呼叫追蹤程式物件的 trackPageView 即可。呼叫 trackEvent 即可錄製活動。如要進一步瞭解網頁瀏覽量和事件,請參閱上方的 SDK 總覽

使用自訂變數

新增自訂變數的方法很簡單:只要使用行動 SDK 提供的 setCustomVar 方法即可。建議您事先規劃每個自訂變數對應的索引,以免覆寫任何先前現有的變數。如要進一步瞭解自訂變數,請參閱自訂變數指南。請注意,setCustomVar 方法不會自行直接傳送資料。而是隨下一次追蹤的網頁瀏覽或事件傳送。您必須先呼叫 setCustomVar,才能追蹤網頁瀏覽或事件。請注意,自訂變數的預設範圍是以網頁為範圍。

使用電子商務追蹤

在應用程式中啟用電子商務追蹤的方法有 4 種:

  • addTransaction
  • addItem
  • trackTransactions
  • clearTransactions

呼叫 addTransactionaddItem 會將交易或項目新增至內部電子商務緩衝區,以便新增更多項目和交易。只有在呼叫 trackTransactions 時,交易和項目才會傳送至調度工具,並排入佇列並傳送至 Google Analytics (分析)。

如要清除緩衝區,您可以呼叫 clearTransactions 方法。注意:系統不會喚回先前傳送至調度工具的任何交易,或 Google Analytics (分析) 已收集的任何交易。

以下程式碼範例可幫助您踏出第一步。我們假設購買交易在確認或拒絕時,會呼叫 onPurchaseCompleted 方法。

  /**
   * The purchase was processed.  We will track the transaction and its associated line items
   * now, but only if the purchase has been confirmed.
   *
   * @param purchase A PurchaseObject containing all of the transaction information needed to
   *     send the ecommerce hit to Google Analytics.
   */
  public void onPurchaseCompleted(PurchaseObject purchase) {
    tracker.addTransaction(new Transaction.Builder(
        purchase.getTransactionId(),
        purchase.getTotal())
        .setStoreName(purchase.getStoreName())
        .setTotalTax(purchase.getTotalTax())
        .setShippingCost(purchase.getShippingCost())
        .build());
    for (PurchaseLineItem lineItem : purchase.getLineItems()) {
        tracker.addItem(new Item.Builder(
            purchase.getTransactionId(),
            lineItem.getItemSKU(),
            lineItem.getItemCost(),
            lineItem.getQuantity())
            .setItemName(lineItem.getItemName())
            .setItemCategory(lineItem.getItemCategory())
            .build());
    }
    if (purchase.isConfirmed()) {
      tracker.trackTransactions();
    } else {
      // The purchase was denied or failed in some way.  We need to clear out
      // any data we've already put in the Ecommerce buffer.
      tracker.clearTransactions();
    }
  }

若要進一步瞭解電子商務,請參閱電子商務追蹤指南

將 IP 去識別化

如要將使用者 IP 資訊去識別化,請使用 setAnonymizeIp 方法。這指示 Google Analytics (分析) 在儲存 IP 位址前移除 IP 位址的最後八位元,藉此將 SDK 傳送的資訊去識別化。

你隨時可以呼叫 setAnonymizeIp

設定取樣率

您可以使用 setSampleRate 方法設定取樣率。假如您的應用程式會產生大量的 Analytics (分析) 流量,設定取樣率可能會導致報表無法用取樣資料產生。系統對不重複使用者的取樣頻率會一致,因此啟用取樣率時,趨勢和報表功能維持一致。setSampleRate 方法接受一個 int 參數。該參數的有效值是介於 0 到 100 (含首尾) 之間的任何整數。

如果比率為 0,系統就會停止產生命中資料;率為 100 時,會將所有資料傳送至 Google Analytics (分析)。 建議您在呼叫任何追蹤方法前,先呼叫 setSampleRate

如要進一步瞭解取樣,請參閱取樣概念指南

批次處理命中

為了節省連線與電池用量,建議您批次處理追蹤要求。您可以隨時在追蹤物件上呼叫 dispatch,也可以手動或依特定時間間隔呼叫。

已知問題

  • 對不同的執行緒呼叫 GoogleAnalyticsTracker 方法,可能會導致模糊錯誤。請務必從同一個執行緒發出所有呼叫。
  • 追蹤廣告活動

    SDK 支援兩種廣告活動追蹤。

    - Google Play 廣告活動追蹤:您可以透過 Google Play 追蹤安裝參照連結網址。
    - 一般廣告活動追蹤:讓您追蹤將使用者轉介給應用程式的任何廣告活動。

    Google Play 廣告活動追蹤

    Android 1.6 OS 版本支援在 Google Play 的下載連結中使用 referrer 網址參數。Android 專用的 Google Analytics (分析) SDK 會使用這個參數,自動將您應用程式的廣告活動資訊填入 Google Analytics (分析)。這樣就能記錄應用程式安裝的來源,並與日後的網頁瀏覽和事件建立關聯,在評估應用程式中特定廣告的成效時,這種做法就能派上用場。

    為了讓參照連結網址追蹤功能正常運作,您必須將下列程式碼片段加入專案的 AndroidManifest.xml 資訊清單檔案:

    <!-- Used for install referrer tracking -->
    <receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true">
      <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
    </receiver>
    

    如要透過 Google Play 設定 Google Analytics (分析) 廣告活動追蹤,請使用下方的網址產生器產生推薦連結。藉此連到您的應用程式。Analytics (分析) SDK 會自動剖析並記錄推薦連結資訊,然後列在 Analytics (分析) 報表中。

    若要產生推薦連結,可以使用 Google Play 廣告活動網址產生器Package NameCampaign SourceCampaign MediumCampaign Name 為必填欄位。如需每個參數的詳細說明,請參閱下方的表格

    一般廣告活動追蹤

    使用 Android 專用的 Google Analytics (分析) SDK 1.3 版,您現在可以追蹤 Google Play 以外來源的廣告活動。 比方說,如果您想知道廣告是透過廣告中的連結啟動,可以在啟動應用程式的意圖中查看廣告活動參照連結網址資訊,然後將該廣告活動資訊儲存在 Google Analytics (分析) 中。

    如要設定廣告活動參照連結網址資訊,請使用 setReferrer 方法,如下所示:

      tracker.setReferrer(referrer);
    

    使用這項功能有兩項限制。首先,您必須先呼叫 startNewSession 再呼叫 setReferrer。您必須這麼做,因為 Google Analytics (分析) 在呼叫 startNewSessionsetReferrer 之前,並未設定 SQLite 資料庫,因此您需要這麼做。如果您尚未呼叫 startNewSession,則會收到 IllegalStateException

    第二個限制是傳入 setReferrer 的參照連結網址字串必須符合特定格式。 這個參數必須以一組網址參數的形式呈現,且至少必須包含一個 gclid 參數,或每一個 utm_campaign、utm_medium 和 utm_source 各一個。在後者中,它也可以包含 utm_term 和 utm_content 參數。

    gclid 參數是自動標記功能的一部分,會自動將 Google Analytics (分析) 連結至 Google Ads。使用自動標記的廣告活動參照連結網址範例看起來可能像這樣:

    referrer = “gclid=gclidValue”;
    

    手動廣告活動參照連結網址字串看起來可能像這樣:

    referrer = “utm_campaign=campaign&utm_source=source&utm_medium=medium&utm_term=term&utm_content=content”;
    

    如果您將格式錯誤的參照網址字串傳送至 setReferrer,則參照網址資訊不會變更,而且傳回值會是 false。如果回傳值為 true,參照網址已更新,並將加進日後的每一個命中中。

    另請注意,當您呼叫 setReferrer 時,系統會啟動新的工作階段,並傳回 true。

    參數 必要 說明 範例
    utm_campaign 廣告活動名稱;用於關鍵字分析,找出特定的產品促銷或策略性廣告活動 utm_campaign=spring_sale
    utm_source 廣告活動來源:用來識別搜尋引擎、電子報或其他來源 utm_source=google
    utm_medium 廣告活動媒介;用來識別電子郵件或單次點擊出價等媒介 utm_medium=cpc
    utm_term 廣告活動字詞;搭配付費搜尋使用,以提供廣告的關鍵字 utm_term=running+shoes
    utm_content 廣告活動內容;用於 A/B 測試和指定內容廣告,以區分連到同一個網址的廣告或連結 utm_content=logolink
    utm_content=textlink