Android v3 (舊版) - 通用 Analytics (分析) 代碼

本指南說明如何使用 Android 版 Google 代碼管理工具 SDK,導入常見的通用 Analytics (分析) 代碼。

  1. 常見的通用 Analytics (分析) 代碼設定
    1. 傳送應用程式檢視畫面 (畫面瀏覽)
    2. 傳送事件
    3. 傳送電子商務交易
      1. 電子商務資料層變數
    4. 安裝參照網址歸因

常見的通用 Analytics (分析) 代碼設定

透過 Google 代碼管理工具導入通用 Analytics (分析) 後,您就能即時變更 Google Analytics (分析) 導入方式,無須重新建構應用程式二進位檔並重新提交到市集。

本指南將說明如何使用通用 Analytics (分析) 代碼和 Android 適用的 Google 代碼管理工具 SDK 完成下列工作:

傳送應用程式瀏覽 (畫面瀏覽)

如要在應用程式每次開啟新畫面時,將應用程式檢視畫面 (畫面檢視) 傳送至 Google Analytics (分析),請按照下列步驟操作:

  1. 建立畫面名稱巨集
  2. 建立 OpenScreenEvent 規則
  3. 建立通用 Analytics (分析) 應用程式檢視畫面 (畫面瀏覽) 代碼
  4. 更新程式碼,將事件和畫面名稱推送到資料層

1. 建立畫面名稱巨集

使用下列設定值建立新的畫面名稱巨集:

巨集名稱:screen name
巨集類型:Data Layer Variable
資料層變數名稱:screenName

2. 建立 OpenScreenEvent 規則

使用下列設定值建立新規則,用來觸發新的通用 Analytics (分析) 應用程式檢視畫面 (畫面瀏覽) 標記:

規則名稱:OpenScreenEvent
條件:{{ event }} 等於 openScreen

3. 建立應用程式檢視畫面 (畫面瀏覽) 通用 Analytics (分析) 代碼

使用下列設定值建立新的通用 Analytics (分析) 代碼:

代碼名稱:Screen Open
追蹤 ID:您的資源 ID
代碼類型:Universal Analytics (beta)
追蹤類型:AppView
基本設定 - 應用程式名稱:{{ app name }}
基本設定 - 應用程式版本:{{ app version }}
基本設定 - 畫面名稱:{{ screen name }}}

4. 更新將事件和畫面名稱推送到資料層的程式碼

在應用程式中新增程式碼,將 openScreen 事件和 screenName 值推送至資料層,如以下範例所示:

// Push an 'openScreen' event to the data layer.
import com.google.tagmanager.DataLayer;
import com.google.tagmanager.TagManager;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

  private static final String SCREEN_NAME = "Home Screen";
  private DataLayer mDataLayer;

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

  @Override
  public void onStart() {
    super.onStart();
    mDataLayer = TagManager.getInstance(this).getDataLayer();

    // This call assumes the container has already been opened, otherwise events
    // pushed to the DataLayer will not fire tags in that container.
    mDataLayer.push(DataLayer.mapOf("event", "openScreen",        // Event, Name of Open Screen Event.
                                    "screenName", SCREEN_NAME));  // Name of screen name field, Screen name value.
  }
}

傳送事件

如要在使用者與應用程式中的 UI 控制項或內容互動時,將事件傳送至 Google Analytics (分析),請按照下列步驟操作:

  1. (選用) 建立事件巨集
  2. 建立事件規則
  3. 建立通用 Analytics (分析) 事件代碼
  4. 更新程式碼,將事件和任何事件巨集值更新為資料層

下列步驟說明對於使用者啟動影片播放時觸發的事件,此操作如何運作。

1. (選用) 建立事件巨集

如果事件會在其類別、動作、標籤或值欄位中使用任何資料層變數,您必須先在介面中設定這些巨集。在此範例中,影片播放事件代碼會採用資料層變數,提供已播放影片的名稱。

為了導入這個影片名稱,我們會使用下列設定值建立新的巨集:

巨集名稱:video name
巨集類型:Data Layer Variable
資料層變數名稱:videoName

2. 建立事件規則

建立規則,讓事件代碼在推送至資料層時觸發。在影片播放範例中,新規則將具有下列設定值:

規則名稱:VideoPlayEvent
條件:{{ event }}等於 videoPlay

建立通用 Analytics (分析) 事件代碼

建立通用 Analytics (分析) 事件代碼,並在上一個步驟建立的規則評估為 true 時觸發。在影片播放範例中,該標記如下所示:

代碼名稱:Video Play Event
追蹤 ID:您的資源 ID
代碼類型:Universal Analytics (beta)
追蹤類型:Event
事件追蹤參數 - 類別:Video
事件追蹤參數 - 動作 - Play
事件追蹤參數 - 標籤:{{ video name }}
基本設定 - 應用程式名稱:{{ app name }}
基本設定 - 應用程式版本:{{ app version }}

{{ screen name }}

更新將事件推送至資料層的程式碼

最後,更新程式碼,在使用者完成互動時,將程式碼推送至資料層,以及標記所需的資料層變數。在影片播放範例中,程式碼如下所示:

//  Push a 'videoPlay' event to the data layer.
import com.google.tagmanager.DataLayer;
import com.google.tagmanager.TagManager;

public class VideoPlayer {

  // Called when a user initiates a video playback.
  public void onPlay(Video v) {
    DataLayer dataLayer = TagManager.getInstance(this).getDataLayer();

    // This call assumes the container has already been opened, otherwise events
    // pushed to the DataLayer will not fire tags in that container.
    dataLayer.push(DataLayer.mapOf("event", "videoPlay",        // Event, Name of Open Screen Event.
                                   "videoName", v.getName());   // Additional data layer variables used by the event tag.
    play(v);
  }

  // Rest of implementation;

}

傳送電子商務交易

如何在使用者完成應用程式內購時,將交易及任何相關項目傳送至 Google Analytics (分析):

  1. 建立交易規則
  2. 建立通用 Analytics (分析) 交易代碼
  3. 更新程式碼,將事件和交易 / 項目資料傳送到資料層

1. 建立交易規則

接著,使用下列設定值建立新規則:

規則名稱:TransactionCompleted
條件:{{ event }}等於 transaction

2. 建立通用 Analytics (分析) 交易代碼

使用下列值建立通用 Analytics (分析) 交易代碼:

代碼名稱:Transaction Completed
追蹤 ID:您的資源 ID
代碼類型:Universal Analytics (beta)
追蹤類型:Transaction
基本設定 - 應用程式名稱:{{ app name }}
基本設定 - 應用程式版本:{{ app version }}
基本設定 - 畫面名稱:{{ screen name }}

3. 更新程式碼,將事件和交易 / 項目資料推送至資料層

最後,請更新程式碼,將交易事件以及相關的交易和項目資料推送至資料層。請注意,針對交易和項目資料,您必須使用支援的資料層變數名稱

// Called when a user completes a transaction.
public void onPurchaseCompleted(Purchase p) {

  DataLayer dataLayer = TagManager.getInstance(this).getDataLayer();

  // Put maps of item data into an array that will be pushed to the data layer.
  ArrayList<Map<String, String>> purchasedItems = new ArrayList<Map<String, String>>();
  for (Item i : p.items) {
    HashMap<String, String> currentItem = new HashMap<String, String>();

    currentItem.put("name", i.getProductName());
    currentItem.put("sku", i.getProductSku());
    currentItem.put("category", i.getProductCategory());
    currentItem.put("price", i.getProductPrice());
    currentItem.put("currency", "USD");
    currentItem.put("quantity", i.getProductQty());

    purchasedItems.add(currentItem);
  }

  // This call assumes the container has already been opened, otherwise events
  // pushed to the DataLayer will not fire tags in that container.
  dataLayer.push(DataLayer.mapOf("event", "transaction",               // Event, Name of Transaction Event.
                                 "transactionId", p.getTransId(),      // Additional fields required by the tag.
                                 "transactionTotal", p.getTotal(),
                                 "transactionAffiliation", "In-app Store",
                                 "transactionTax", p.getTax(),
                                 "transactionShipping", p.getShippingCost(),
                                 "transactionCurrency", "USD",
                                 "transactionProducts", purchasedItems));

  // Since the data layer is persistent, you should reset fields to null after
  // you are done pushing the transaction.
  dataLayer.push(DataLayer.mapOf("transactionId", null,
                                 "transactionTotal", null,
                                 "transactionAffiliation", null,
                                 "transactionTax", null,
                                 "transactionShipping", null,
                                 "transactionCurrency", null,
                                 "transactionProducts", null));
}

支援的電子商務資料層變數

通用 Analytics (分析) 交易代碼支援下列資料層變數:

交易變數

變數名稱 說明 類型 需要
transactionId 專屬交易識別碼 字串
transactionAffiliation 夥伴或商店 字串
transactionTotal 交易的總額 字串
transactionTax 交易的稅額 字串
transactionShipping 交易的運費 字串
transactionCurrency 交易貨幣 字串
transactionProducts 交易中所購商品的清單 包含項目變數的地圖陣列。

項目變數

變數名稱 說明 類型 需要
name 產品名稱 字串
sku 產品 SKU 字串
category 產品類別 字串
price 產品價格 字串
currency price 的貨幣類型 字串
quantity 商品數量 字串

安裝參照網址歸因

在適用情況下,若您的 AndroidManifest.xml 檔案中註冊了下列服務和接收器,所有 Google Analytics (分析) 命中或 Google Ads 再行銷像素要求就會自動包含安裝參照網址資料:

<!-- Used for install referrer tracking -->
<service android:name="com.google.tagmanager.InstallReferrerService" />
<receiver android:name="com.google.tagmanager.InstallReferrerReceiver" android:exported="true">
  <intent-filter>
    <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>