डेटा लेयर एक मैप है, जिसमें ऐप्लिकेशन के बारे में सामान्य जानकारी होती है. इसमें कुंजियों के स्टैंडर्ड सेट का इस्तेमाल किया जाता है, ताकि कोई भी पक्ष इसे पढ़ सके जो स्पेसिफ़िकेशन को समझ सके. डेटा लेयर की स्थिति, एपीआई की मदद से अपडेट की जाती है. उदाहरण के लिए, कोई ऐप्लिकेशन नीचे दिए गए लेवल के साथ शुरू हो सकता है:
{
title: "Original screen title"
}
dataLayer.push(DataLayer.mapOf("title", "New screen title"));
{
title: "New screen title"
}
dataLayer.push(DataLayer.mapOf("xyz", 3));
{
"title": "New screen title",
"xyz": 3
}
{
"items": ["item1", null, "item2", {"a": "aValue", "b": "bValue"}]
}
dataLayer.push("items", DataLayer.listOf(null, "item6", DataLayer.OBJECT_NOT_PRESENT,
DataLayer.mapOf("a", null)));
{
"items": [null, "item6", "item2", {"a": null, "b": "bValue"}]
}
पुश डेटा सिंक करने के लिए किए जाते हैं; बदलाव होने के बाद, मॉडल में बदलाव दिखने लगते हैं.
जब event कुंजी को डेटा लेयर में पुश किया जाता है, तो टैग के नियमों का आकलन किया जाता है. इसके अलावा,
इस इवेंट से मेल खाने वाले टैग सक्रिय हो जाएंगे.
उदाहरण के लिए, दिए गए टैग वाला एक कंटेनर, जिसका सक्रिय नियम वह "इवेंट" है इसके बराबर है
"openScreen", इस पुश के बाद:
dataLayer.push("event", "openScreen");
फ़ील्ड की खास जानकारी
| सार्वजनिक स्टैटिक फ़ाइनल ऑब्जेक्ट | OBJECT_NOT_PRESENT | सूची में इस्तेमाल की गई इस तरह की वैल्यू की वजह से मर्ज करते समय, सूची छोटी हो जाती है; यह ऐसा है उस इंडेक्स में कोई एलिमेंट नहीं था. |
सार्वजनिक तौर पर उपलब्ध तरीके के बारे में खास जानकारी
| ऑब्जेक्ट |
get(स्ट्रिंग कुंजी)
|
| स्टैटिक सूची<ऑब्जेक्ट> |
listOf(ऑब्जेक्ट... ऑब्जेक्ट)
|
| स्टैटिक मैप<ऑब्जेक्ट, ऑब्जेक्ट> |
mapOf(ऑब्जेक्ट... ऑब्जेक्ट)
|
| अमान्य |
पुश(Map<Object, ऑब्जेक्ट> अपडेट करें)
|
| अमान्य |
फ़ील्ड
सार्वजनिक स्टैटिक फ़ाइनल ऑब्जेक्ट OBJECT_NOT_PRESENT
सूची में इस्तेमाल की गई इस तरह की वैल्यू की वजह से मर्ज करते समय, सूची छोटी हो जाती है; यह ऐसा है उस इंडेक्स में कोई एलिमेंट नहीं था.
सार्वजनिक तरीके
सार्वजनिक ऑब्जेक्ट पाएं (स्ट्रिंग की)
दी गई कुंजी से जुड़े मॉडल में ऑब्जेक्ट दिखाता है. अगर कुंजी नहीं मिलती है,
null लौटाया गया.
कुंजी में एम्बेड किए गए पीरियड हो सकते हैं. जैसे:
"a.b.c" की कुंजी, मैप में "c" कुंजी के साथ मैप दिखाती है
मॉडल में कुंजी "a" के साथ मैप में "b" कुंजी के साथ.
सार्वजनिक स्टैटिक सूची<ऑब्जेक्ट> 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 ऑब्जेक्ट का इस्तेमाल करें.
अगर कोई दूसरा थ्रेड पुश एक्ज़ीक्यूट कर रहा है, तो यह कॉल तब तक ब्लॉक हो जाता है, जब तक वह थ्रेड खत्म हुआ.
आम तौर पर, यह एक सिंक्रोनस कॉल होता है. हालांकि, अगर थ्रेड एक्ज़ीक्यूट हो रहा है, तो दूसरा पुश इसी थ्रेड से होता है, फिर दूसरा पुश एसिंक्रोनस होता है (डेटा लेयर में बदलाव करने से पहले, दूसरी बार भेजा जाएगा). इस सेकंड एक ही थ्रेड से पुश किया जा सकता है. उदाहरण के लिए, अगर रिस्पॉन्स में डेटा लेयर पुश किया जाता है ट्रिगर हुए हैं.
अगर update में कुंजी event है, तो नियमों का मूल्यांकन किया जाएगा और
मेल खाने वाले टैग सक्रिय हो जाएंगे.
पैरामीटर
| अपडेट करें | प्रोसेस करने के लिए अपडेट ऑब्जेक्ट |
सार्वजनिक अमान्य पुश (ऑब्जेक्ट की, ऑब्जेक्ट वैल्यू)
डेटा लेयर में डेटा का की/वैल्यू पेयर पुश करता है. यह तो बस एक आसान तरीका है
जो push(DataLayer.mapOf(key, value)) पर कॉल करता है.