שכבת הנתונים היא מפה שמכילה מידע כללי על האפליקציה. הוא משתמש בקבוצה סטנדרטית של מפתחות, כך שכל גורם יכול לקרוא אותו שמבין את המפרט. המצב של שכבת הנתונים מתעדכן באמצעות ה-API שלה. לדוגמה, אפליקציה עשויה להתחיל עם ה-dataLayer הבא:
{ 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(אובייקט... אובייקטים)
|
ריק |
push(מפה<אובייקט, אובייקט> עדכון)
|
ריק |
שדות
ציבורי סטטי סופי אובייקט 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 | אם יש מספר אי-זוגי של פרמטרים |
ציבורי ריק התראות (מפה<אובייקט, אובייקט> עדכון)
ממזג את האובייקט update
הנתון עם מודל הנתונים הקיים, קריאה
מאזינים עם העדכון (לאחר ביצוע המיזוג).
אם אתם רוצים לייצג ערך חסר (כמו אינדקס ריק ברשימה),
משתמשים באובייקט OBJECT_NOT_PRESENT
.
אם מתבצעת דחיפה לשרשור אחר, הקריאה הזו תיחסם עד שהשרשור הזה הסתיים.
בדרך כלל זוהי שיחה מסונכרנת. עם זאת, אם, בזמן שהשרשור מתבצע הדחיפה, דחיפה נוספת מתרחשת מאותו השרשור, ואז הדחיפה השנייה היא אסינכרונית (הדחיפה השנייה תחזור לפני ביצוע השינויים בשכבת הנתונים). השלב השני הזה דחיפה מאותו שרשור יכולה להתרחש, לדוגמה, אם מתבצעת דחיפה של שכבת נתונים בתגובה להפעלת תג.
אם update
מכיל את המפתח event
, הכללים יעברו הערכה
התגים התואמים יופעלו.
פרמטרים
עדכון | אובייקט העדכון לעיבוד |
ציבורי ריק התראות (אובייקט מפתח, אובייקט ערך)
דוחפת צמד מפתח/ערך של נתונים לשכבת הנתונים. זו רק שיטה נוחה
קוראים לפונקציה push(DataLayer.mapOf(key, value))
.