資料層

公用類別 DataLayer

資料層是存放應用程式一般資訊的地圖。這項功能使用一組標準的金鑰,因此瞭解規格的任何第三方都能讀取金鑰。資料層狀態會透過其 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
push(物件, 物件 )

欄位

公開靜態 最終 物件 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)) 的便利方法。