ชั้นข้อมูล

คลาสสาธารณะ 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 ค่าประเภทนี้ที่ใช้ในรายการทำให้ชุดรายการมีความกระจัดกระจายเมื่อรวมเข้าด้วยกัน เสมือนว่าไม่มีองค์ประกอบที่ดัชนีนั้น

สรุปวิธีการสาธารณะ

ออบเจ็กต์
get(สตริง คีย์)
List<Object> แบบคงที่
listOf(ออบเจ็กต์... ออบเจ็กต์)
static Map<Object, Object>
mapOf(ออบเจ็กต์... ออบเจ็กต์)
void
push(Map<Object, Object> update)
void
push(Object key, Object value)

ช่อง

สาธารณะ แบบคงที่ ขั้นสุดท้าย ออบเจ็กต์ 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))