डेटा लेयर एक मैप है, जिसमें ऐप्लिकेशन के बारे में सामान्य जानकारी होती है. इसमें कुंजियों के स्टैंडर्ड सेट का इस्तेमाल किया जाता है. इसलिए, इसे ऐसा कोई भी पक्ष पढ़ सकता है जो खास जानकारी को समझता है. डेटा लेयर का स्टेटस, एपीआई की मदद से अपडेट होता है. उदाहरण के लिए, कोई ऐप्लिकेशन नीचे दिए गए 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(ऑब्जेक्ट... ऑब्जेक्ट)
|
स्टैटिक Maps<Object, ऑब्जेक्ट> |
mapOf(ऑब्जेक्ट... ऑब्जेक्ट)
|
void |
push(मैप<ऑब्जेक्ट, ऑब्जेक्ट> अपडेट)
|
void |
फ़ील्ड
सार्वजनिक स्टैटिक फ़ाइनल ऑब्जेक्ट OBJECT_NOT_PRESENT
सूची में इस तरह की वैल्यू का इस्तेमाल करने से, मर्ज करते समय सूची में जानकारी थोड़ी बड़ी हो जाती है. ऐसा लगता है कि उस इंडेक्स में कोई एलिमेंट मौजूद नहीं है.
सार्वजनिक तरीके
सार्वजनिक ऑब्जेक्ट get (स्ट्रिंग कुंजी)
दी गई कुंजी से जुड़े मॉडल में ऑब्जेक्ट की जानकारी देता है. अगर कुंजी नहीं मिलती है, तो
null
वापस कर दिया जाता है.
कुंजी में एम्बेड किए गए पीरियड हो सकते हैं. उदाहरण के लिए:
"a.b.c"
की कुंजी, मैप में "c"
कुंजी वाला मैप दिखाती है.
इसके लिए, मैप में "b"
कुंजी के साथ, मॉडल में "a"
कुंजी होती है.
सार्वजनिक स्टैटिक List<Object> listOf (ऑब्जेक्ट... ऑब्जेक्ट)
सुविधा का ऐसा तरीका जो सूची बनाता है.
उदाहरण के लिए, यह "object1"
और
"object2"
वाली सूची बनाता है:
List<Object> list = DataLayer.listOf("object1", "object2");
सार्वजनिक स्टैटिक Map<Object, Object> mapOf (ऑब्जेक्ट... ऑब्जेक्ट)
उपयोगिता पद्धति जो मैप बनाता है. पैरामीटर, कुंजी वैल्यू के जोड़े होने चाहिए.
उदाहरण के लिए, यह मैप "key1"
से "value1"
और "key2"
से "value2"
के लिए मैप बनाता है:
Map<Object, Object> map = DataLayer.mapOf("key1", "value1", "key2", "value2");
थ्रो
IllegalArgumentException | जब पैरामीटर की संख्या विषम हो |
सार्वजनिक शून्य push (Map<Object, Object> अपडेट)
दिए गए update
ऑब्जेक्ट को मौजूदा डेटा मॉडल में मर्ज करता है. साथ ही, अपडेट के साथ किसी भी लिसनर को कॉल करता है (मर्ज होने के बाद).
अगर आपको कोई ऐसी वैल्यू दिखानी है जो मौजूद नहीं है (जैसे कि किसी सूची में खाली इंडेक्स),
तो OBJECT_NOT_PRESENT
ऑब्जेक्ट का इस्तेमाल करें.
अगर कोई दूसरा थ्रेड पुश परफ़ॉर्म कर रहा है, तो यह कॉल उस थ्रेड के खत्म होने तक ब्लॉक हो जाता है.
आम तौर पर, यह कॉल सिंक्रोनस कॉल होता है. हालांकि, अगर थ्रेड, पुश को एक्ज़ीक्यूट कर रहा है, तो उसी थ्रेड से एक और पुश किया जाता है. ऐसे में, वह दूसरा पुश एसिंक्रोनस होता है (डेटा लेयर में बदलाव होने से पहले, दूसरा पुश वापस आ जाएगा). उसी थ्रेड से दूसरा पुश नोटिफ़िकेशन तब भी चलाया जा सकता है, जब किसी टैग के ट्रिगर होने पर डेटा लेयर पुश किया जाता है.
अगर update
में event
कुंजी होगी, तो नियमों का आकलन किया जाएगा और
मिलते-जुलते टैग फ़ायर हो जाएंगे.
पैरामीटर
अपडेट करो | को प्रोसेस करने के लिए, अपडेट ऑब्जेक्ट |
सार्वजनिक शून्य push (ऑब्जेक्ट कुंजी, ऑब्जेक्ट वैल्यू)
डेटा लेयर में डेटा के की/वैल्यू पेयर को पुश करता है. यह push(DataLayer.mapOf(key, value))
को कॉल करने का सिर्फ़ एक आसान तरीका है.