ชั้นข้อมูล

ชั้นเรียนสาธารณะ 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(คีย์ สตริง)
คงที่ แสดงรายการ<ออบเจ็กต์>
listOf(ออบเจ็กต์... ออบเจ็กต์)
คงที่ แมป<วัตถุ, วัตถุ>
mapOf(ออบเจ็กต์... ออบเจ็กต์)
เป็นโมฆะ
push(Map<Object, Object> อัปเดต)
เป็นโมฆะ
push(คีย์ออบเจ็กต์ ออบเจ็กต์ value)

ช่อง

สาธารณะ คงที่ รอบชิงชนะเลิศ วัตถุ OBJECT_NOT_PRESENT

ค่าประเภทนี้ที่ใช้ในรายการจะทำให้ลิสต์รายการมีขนาดเล็กเมื่อรวม เหมือนกับว่า ไม่มีองค์ประกอบในดัชนีนั้น

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

สาธารณะ วัตถุ ดาวน์โหลด (สตริงคีย์)

แสดงผลออบเจ็กต์ในโมเดลที่เชื่อมโยงกับคีย์ที่ระบุ หากไม่พบคีย์ ส่งคืน null แล้ว

คีย์อาจมีจุดแบบฝังได้ ดังตัวอย่างต่อไปนี้ คีย์ "a.b.c" จะแสดงแผนที่ที่มีคีย์ "c" ในแผนที่ ด้วยคีย์ "b" ในแผนที่ ที่มีคีย์ "a" ในโมเดล

สาธารณะ คงที่ แสดงรายการ<ออบเจ็กต์> listOf (ออบเจ็กต์... ออบเจ็กต์)

วิธียูทิลิตีที่สร้างรายการ

ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะสร้างรายการที่มี "object1" และ "object2":

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

สาธารณะ คงที่ แมป<วัตถุ, วัตถุ> mapOf (ออบเจ็กต์... ออบเจ็กต์)

วิธียูทิลิตีที่สร้างแผนที่ พารามิเตอร์ควรเป็นคู่ของคีย์

ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะสร้างการจับคู่แผนที่ "key1" กับ "value1" และ "key2" ถึง "value2":

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

การขว้าง
IllegalArgumentException หากมีพารามิเตอร์จำนวนคี่

สาธารณะ เป็นโมฆะ พุช (Map<Object, Object> อัปเดต)

ผสานออบเจ็กต์ update ที่ระบุเข้ากับโมเดลข้อมูลที่มีอยู่ โดยเรียกใช้ ผู้ฟังทั้งหมดที่มีการอัปเดต (หลังจากเกิดการรวม)

หากคุณต้องการแสดงค่าที่ขาดหายไป (เช่น ดัชนีว่างเปล่าในรายการ) ใช้ออบเจ็กต์ OBJECT_NOT_PRESENT

หากเทรดอื่นกำลังดำเนินการพุช การเรียกนี้จะบล็อกจนกว่าเทรดนั้นจะ เสร็จสิ้นแล้ว

โดยปกติจะเป็นการโทรแบบซิงโครนัส แต่หากขณะที่เทรดทำงานอยู่ การพุชอีกรายการเกิดขึ้นจากชุดข้อความเดียวกัน จากนั้นการพุชครั้งที่ 2 จะเป็นแบบไม่พร้อมกัน (การพุชครั้งที่ 2 จะกลับมาก่อนการเปลี่ยนแปลงชั้นข้อมูล) วินาทีนี้ การพุชจากเธรดเดียวกันสามารถเกิดขึ้นได้ ตัวอย่างเช่น ถ้ามีการพุชชั้นข้อมูลเพื่อตอบสนอง ให้แท็กเริ่มทำงาน

หาก update มีคีย์ event ระบบจะประเมินกฎและ แท็กที่ตรงกันจะเริ่มทำงาน

พารามิเตอร์
อัปเดต ออบเจ็กต์อัปเดตที่จะประมวลผล

สาธารณะ เป็นโมฆะ พุช (คีย์ออบเจ็กต์, ค่าของออบเจ็กต์)

พุชคู่คีย์/ค่าของข้อมูลไปยังชั้นข้อมูล นี่เป็นเพียงวิธีอำนวยความสะดวก ที่โทรหา push(DataLayer.mapOf(key, value))