ชั้นข้อมูลเป็นแผนที่ที่มีข้อมูลทั่วไปเกี่ยวกับแอปพลิเคชัน โดยใช้ชุดคีย์มาตรฐานเพื่อให้ผู้ที่เข้าใจข้อกำหนดนี้อ่านได้ สถานะของชั้นข้อมูลจะอัปเดตผ่าน 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 | ค่าประเภทนี้ที่ใช้ในรายการทำให้ชุดรายการมีความกระจัดกระจายเมื่อรวมเข้าด้วยกัน เสมือนว่าไม่มีองค์ประกอบที่ดัชนีนั้น |
สรุปวิธีการสาธารณะ
ออบเจ็กต์ |
get(สตริง คีย์)
|
List<Object> แบบคงที่ |
listOf(ออบเจ็กต์... ออบเจ็กต์)
|
static Map<Object, Object> |
mapOf(ออบเจ็กต์... ออบเจ็กต์)
|
void |
push(Map<Object, Object> update)
|
void |
ช่อง
สาธารณะ แบบคงที่ ขั้นสุดท้าย ออบเจ็กต์ OBJECT_NOT_PRESENT
ค่าประเภทนี้ที่ใช้ในรายการทำให้ชุดรายการมีความกระจัดกระจายเมื่อรวมเข้าด้วยกัน เสมือนว่าไม่มีองค์ประกอบที่ดัชนีนั้น
วิธีการสาธารณะ
สาธารณะ ออบเจ็กต์ get (สตริงคีย์)
แสดงผลออบเจ็กต์ในโมเดลที่เชื่อมโยงกับคีย์ที่ระบุ หากไม่พบคีย์ ระบบจะแสดงผล null
คีย์อาจมีจุดที่ฝังอยู่ได้ ตัวอย่างเช่น คีย์ของ "a.b.c"
จะแสดงผลแผนที่ที่มีคีย์ "c"
ในแผนที่ที่มีคีย์ "b"
ในแผนที่ที่มีคีย์ "a"
ในโมเดล
สาธารณะ static List<Object> listOf (ออบเจ็กต์... ออบเจ็กต์)
ยูทิลิตีที่สร้างรายการ
ตัวอย่างต่อไปนี้สร้างรายการที่มี "object1"
และ "object2"
List<Object> list = DataLayer.listOf("object1", "object2");
สาธารณะ static Map<Object, Object> mapOf (ออบเจ็กต์... ออบเจ็กต์)
วิธีการยูทิลิตีที่สร้างแผนที่ พารามิเตอร์ควรเป็นคู่ของคีย์-ค่า
ตัวอย่างต่อไปนี้สร้างการแมปแผนที่ "key1"
กับ "value1"
และ "key2"
กับ "value2"
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
การขว้าง
IllegalArgumentException | หากมีพารามิเตอร์จำนวนคี่ |
สาธารณะ void push (แมป<ออบเจ็กต์, ออบเจ็กต์> อัปเดต)
ผสานออบเจ็กต์ update
ที่ระบุลงในโมเดลข้อมูลที่มีอยู่ ซึ่งจะเรียกใช้ Listener ที่มีการอัปเดต (หลังจากทำการผสานแล้ว)
หากต้องการแสดงค่าที่ขาดหายไป (เช่น ดัชนีว่างเปล่าในรายการ) ให้ใช้ออบเจ็กต์ OBJECT_NOT_PRESENT
หากเทรดอื่นกําลังดําเนินการพุช การเรียกนี้จะบล็อกจนกว่าเทรดจะเสร็จสิ้น
ซึ่งโดยปกติจะเป็นการเรียกแบบพร้อมกัน อย่างไรก็ตาม ขณะที่เทรดกำลังดำเนินการพุชอยู่ แต่มีพุชอีกรายการเกิดขึ้นจากเทรดเดียวกัน และพุชครั้งที่ 2 นั้นเป็นแบบไม่พร้อมกัน (การพุชครั้งที่ 2 จะแสดงผลก่อนที่จะมีการเปลี่ยนแปลงในชั้นข้อมูล) การพุชครั้งที่ 2 นี้จากเทรดเดียวกันอาจเกิดขึ้น เช่น เมื่อมีการพุชชั้นข้อมูลเพื่อตอบสนองต่อการเริ่มทํางานของแท็ก
หาก update
มีคีย์ event
ระบบจะประเมินกฎและแท็กที่ตรงกันจะเริ่มทำงาน
พารามิเตอร์
อัปเดต | อัปเดตออบเจ็กต์เพื่อประมวลผล |
สาธารณะ void push (Object key, Object value)
พุชคู่คีย์/ค่าไปยังชั้นข้อมูล นี่เป็นเพียงวิธีอำนวยความสะดวกที่โทรไปที่ push(DataLayer.mapOf(key, value))