本指南說明如何使用 Android 版 Google 代碼管理工具 SDK,導入常見的通用 Analytics (分析) 代碼。
常見的通用 Analytics (分析) 代碼設定
透過 Google 代碼管理工具導入通用 Analytics (分析) 後,您就能即時變更 Google Analytics (分析) 導入方式,無須重新建構應用程式二進位檔並重新提交到市集。
本指南將說明如何使用通用 Analytics (分析) 代碼和 Android 適用的 Google 代碼管理工具 SDK 完成下列工作:
傳送應用程式瀏覽 (畫面瀏覽)
如要在應用程式每次開啟新畫面時,將應用程式檢視畫面 (畫面檢視) 傳送至 Google Analytics (分析),請按照下列步驟操作:
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. (選用) 建立事件巨集
如果事件會在其類別、動作、標籤或值欄位中使用任何資料層變數,您必須先在介面中設定這些巨集。在此範例中,影片播放事件代碼會採用資料層變數,提供已播放影片的名稱。
為了導入這個影片名稱,我們會使用下列設定值建立新的巨集:
巨集名稱: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. 建立交易規則
接著,使用下列設定值建立新規則:
規則名稱: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>