DataLayer

パブリック クラス 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"}]
   }

push は同期的に行われます。push 後、変更がモデルに反映されます。

event キーがデータレイヤーにプッシュされると、タグのルールが評価され、このイベントに一致するすべてのタグが配信されます。 たとえば、コンテナの呼び出しルールが「event」が「openScreen」と等しい場合、このプッシュの後、

 dataLayer.push("event", "openScreen");
そのタグが配信されます。

フィールドの概要

public static final オブジェクト OBJECT_NOT_PRESENT この型の値をリストで使用すると、マージ時にリストがスパースになり、あたかもそのインデックスに要素が存在しないかのように見えます。

パブリック メソッドの概要

オブジェクト(object)
get(String key)
static List<Object>
listOf(Object... objects)
static Map<Object, Object>
mapOf(Object... objects)
void
pushMap<Object, Object> update
void
pushオブジェクト keyオブジェクト value

フィールド

public static final オブジェクト OBJECT_NOT_PRESENT

この型の値をリストで使用すると、マージ時にリストがスパースになり、あたかもそのインデックスに要素が存在しないかのように動作します。

パブリック メソッド

public オブジェクト get 文字列 キー

指定されたキーに関連付けられているモデルのオブジェクトを返します。鍵が見つからない場合は、null が返されます。

キーにピリオドを埋め込むことができます。たとえば、キー "a.b.c" は、モデルでキー "a" を持つマップ内でキー "b" を持つマップ内で、キー "c" を持つマップを返します。

public static List<Object> listOf Object... objects

リストを作成するユーティリティ メソッド。

たとえば、次の例では "object1""object2" を含むリストを作成します。

   List<Object> list = DataLayer.listOf("object1", "object2");
 

public static Map<Object, Object> mapOf (Object... objects)

地図を作成するユーティリティ メソッド。パラメータは、Key-Value ペアにする必要があります。

たとえば、以下では、"key1" から "value1" に、"key2" から "value2" にマッピングする地図を作成しています。

   Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
 

例外
IllegalArgumentException パラメータの数が奇数の場合、

public void push (Map<Object, Object> update)

指定された update オブジェクトを既存のデータモデルにマージし、更新によりリスナーを呼び出します(マージの実行後)。

欠損値(List の空のインデックスなど)を表す場合は、OBJECT_NOT_PRESENT オブジェクトを使用します。

別のスレッドが push を実行している場合、この呼び出しはそのスレッドが終了するまでブロックされます。

通常、これは同期呼び出しです。ただし、プッシュの実行中に同じスレッドから別のプッシュが発生すると、その 2 回目のプッシュは非同期となります(2 回目のプッシュはデータレイヤーが変更される前に戻ります)。同じスレッドから 2 回目のプッシュが行われるのは、タグの配信に応答してデータレイヤーのプッシュが行われた場合などです。

update にキー event が含まれている場合、ルールが評価され、一致するタグが配信されます。

パラメータ
update 処理する更新オブジェクト

public void push オブジェクト キーオブジェクト

データの Key-Value ペアをデータレイヤーにプッシュします。これは、push(DataLayer.mapOf(key, value)) を呼び出す便利なメソッドです。