資料層是存放應用程式一般資訊的地圖。這項功能使用一組標準的金鑰,因此瞭解規格的任何第三方都能讀取金鑰。資料層狀態會透過其 API 更新。舉例來說,應用程式可能會以下列 dataLayer 開頭:
{ title: "Original screen title" }由於應用程式的狀態/資料可能會改變,因此應用程式可以透過呼叫來更新 dataLayer,例如:
dataLayer.push(DataLayer.mapOf("title", "New screen title"));資料層現在會包含:
{ title: "New screen title" }再次推送後:
dataLayer.push(DataLayer.mapOf("xyz", 3));dataLayer 包含以下內容:
{ "title": "New screen title", "xyz": 3 }下列範例說明陣列和地圖合併的運作方式。如果原始 dataLayer 包含:
{ "items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}] }推送後:
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT, DataLayer.mapOf("a", null)));dataLayer 包含:
{ "items": [null, "item6", "item2", {"a": null, "b": "bValue"}] }
推送作業會同步進行,且在推送後,變更已反映在模型中。
當 event
鍵推送至資料層時,系統會評估代碼的規則,並觸發與這個事件相符的所有代碼。
舉例來說,假設有個容器設有觸發規則的標記,且該容器的觸發規則為「事件」等於「openScreen」,則這次推送後:
dataLayer.push("event", "openScreen");該代碼。
欄位摘要
公開靜態最終物件 | OBJECT_NOT_PRESENT | 在 List 中使用這類類型的值,會導致系統在合併時剖析 List,就像該索引沒有元素一樣。 |
公用方法摘要
對象 |
get(字串 key)
|
static List<Object> |
listOf(Object... objects)
|
static Map<Object, Object> |
mapOf(物件... 物件)
|
void |
push(Map<Object, Object> update)
|
void |
欄位
公開靜態 最終 物件 OBJECT_NOT_PRESENT
在 List 中使用這類類型的值,會導致系統在合併時剖析 List,就像該索引沒有元素一樣。
公用方法
public 物件 get (字串 鍵)
傳回與指定鍵相關聯的模型中的物件。如果找不到金鑰,會傳回 null
。
金鑰可以有內嵌的句點。例如:
某個索引鍵為 "a.b.c"
,在模型中以 "b"
鍵為鍵 "a"
的對應傳回含有 "c"
鍵的地圖。
public static List<Object> listOf (Object... objects)
建立清單的公用程式方法。
舉例來說,下列指令會建立包含 "object1"
和 "object2"
的清單:
List<Object> list = DataLayer.listOf("object1", "object2");
public static Map<Object, Object> mapOf (物件... objects)
建立地圖的公用程式方法。參數應為一組鍵/值。
舉例來說,以下程式碼會建立將 "key1"
對應至 "value1"
,並將 "key2"
對應至 "value2"
:
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
擲回
IllegalArgumentException | 如果有奇數的參數 |
public void push (Map<Object, Object> update)
將指定 update
物件合併至現有的資料模型,利用更新呼叫任何事件監聽器 (合併後)。
如要表示遺漏值 (例如清單中的空白索引),請使用 OBJECT_NOT_PRESENT
物件。
如果其他執行緒正在執行推送,此呼叫會封鎖,直到該執行緒完成為止。
這通常是同步呼叫。然而,如果在執行緒執行推送時,從同一執行緒執行另一項推送作業,則第二個推送為非同步 (變更資料層前會傳回第二次推送)。舉例來說,如果為了回應代碼觸發而推送資料層,則可能會從同一個執行緒執行第二次推送。
如果 update
包含 event
鍵,系統會評估規則並觸發相符的標記。
參數
update | 要處理的更新物件 |
public void push (物件 鍵、物件 值)
將鍵/值組合推送至資料層。這只是呼叫 push(DataLayer.mapOf(key, value))
的便利方法。