這是 Google 代碼管理工具 (GTM) 的行動導入方式。使用範例:
Container container = TagManager.getInstance(context).openContainer(myContainerId); String value = container.getString("myKey"); DataLayer dataLayer = TagManager.getInstance(context).getDataLayer(); dataLayer.push(DataLayer.mapOf("event", "openScreen", "screenName", "Main Page"));容器是一組巨集、代碼和規則。在 GTM 應用程式中建立,並指派容器 ID。這個容器 ID 是指此 API 中使用的容器。
Container
類別提供擷取指定鍵值的方法。處理常式 getBoolean(String)
、getDouble(String)
、getLong(String)
、getString(String)
會根據與容器相關聯的規則,傳回值集合巨集目前的值。
舉例來說,如果容器有一個值收集巨集,其值為 32,且啟用規則為 Language
為「en」,而啟用規則的鍵 speed
值為 45,且啟用規則為 Language
不是「en」,則進行下列呼叫:
container.getLong("speed")如果目前裝置語言為英文,會傳回 32;
speed
資料層是存放應用程式一般資訊的地圖。DataLayer
類別提供從資料層推送及擷取資料的方法。將 event
鍵推送至資料層後,與這個事件相符的代碼就會觸發。
這個容器的初始版本會隨附在應用程式。這類程式碼應放置在名為 tagmanager/containerId 的素材資源中,其中 containerId 與您在這個 API 中使用的容器 ID 相同。當您呼叫 openContainer(String, Container.Callback)
時,系統將傳回包含這些組合規則/巨集的容器。您將在使用者介面中建立容器,然後點按「下載」按鈕來下載容器。
您可以在使用者介面中修改容器並發布新版本。在這種情況下,行動應用程式下次從網路重新整理容器時 (目前為每 12 小時),就會取得新的版本。當您呼叫其中一個 get... 常式時,此值將根據最新的規則計算。
下載的容器會儲存在本機;當您呼叫 openContainer(String, Container.Callback)
時,系統會先載入預設容器,並以非同步方式載入所有已儲存的容器。如果找不到上述項目,或是已超過 12 小時,系統就會嘗試從網路擷取更新版本。
您可以將 Container.Callback
傳遞至 openContainer(String, Container.Callback)
,藉此找到這些非同步載入作業的狀態。
有時候,您可能需要在非預設容器可供使用,或直到最近有新容器可用為止,再執行封鎖作業。ContainerOpener
是一種公用程式類別,可助您一臂之力。
使用完容器後,請呼叫 close()
。
巢狀類別摘要
TagManager.Logger | 顯示錯誤/警告/資訊/偵錯/詳細資訊的簡易介面。 | ||
列舉 | TagManager.RefreshMode | 容器重新整理的模式。 |
公用方法摘要
容器 |
getContainer(String containerId)
|
背景資訊 | |
DataLayer | |
靜態 TagManager |
getInstance(情境背景資訊)
|
Logger | |
TagManager.RefreshMode | |
容器 | |
void | |
void |
公用方法
public 情境 getContext ()
傳回與這個物件相關聯的已儲存結構定義。
public 容器 openContainer (String containerId、Container.Callback containerId)
傳回容器。當容器發生各種情況時,系統就會呼叫回呼。OpenContainer 至少會嘗試載入已儲存的容器版本。如果沒有任何儲存的版本,或儲存的版本已過期,系統就會嘗試從網路載入。
通常傳回的容器會是空白的,但載入作業會在另一個執行緒中執行,因此傳回的容器可能會在傳回前、傳回後重新整理,或永遠不會重新整理 (例如容器生命週期內沒有網路連線)。
如果您再次針對指定的 containerId
呼叫 openContainer
,系統會擲回例外狀況。
參數
containerId | 要開啟的容器 ID |
回呼 | 系統會在載入程序期間呼叫其各種方法的物件。請注意,此方法可能會從不同的執行緒呼叫。此外,可能會在 openContainer 傳回前呼叫。 |