طبقة البيانات

الفئة العامة DataLayer

طبقة البيانات هي خريطة تحتوي على معلومات عامة حول التطبيق. ويستخدم مجموعة مفاتيح عادية حتى يتمكّن أي طرف يفهم المواصفات من الاطّلاع عليها. ويتم تحديث حالة طبقة البيانات من خلال واجهة برمجة التطبيقات الخاصة بها. على سبيل المثال، قد يبدأ تطبيق بطبقة 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 إلى طبقة البيانات، يتم تقييم قواعد العلامات وسيتم تنشيط أي علامات مطابقة لهذا الحدث. على سبيل المثال، إذا كانت حاوية تتضمّن علامة تساوي قاعدة التنشيط "الحدث" "فتح الشاشة"، سيتم تنشيط هذه العلامة بعد هذه الدفعة:

 dataLayer.push("event", "openScreen");

ملخّص الحقل

كائن نهائي عام OBJECT_NOT_PRESENT يؤدي استخدام قيم من هذا النوع في "القائمة" إلى تناثر القائمة عند دمجها، كما لو لم يكن هناك عنصر في ذلك الفهرس.

ملخّص الطريقة العلنية

الكائن
get(مفتاح السلسلة)
static List<Object>
listOf(Object... objects)
static Map<Object, Object>
mapOf(Object... objects)
void
push(خريطة<كائن، كائن> تحديث)
void
push(مفتاح كائن، قيمة العنصر)

الحقول

نهائي ثابت عام الكائن OBJECT_NOT_PRESENT

يؤدي استخدام قيم من هذا النوع في "القائمة" إلى تناثر القائمة عند دمجها، كما لو لم يكن هناك عنصر في ذلك الفهرس.

الطرق العامة

public كائن get (مفتاح مفتاح)

لعرض الكائن في النموذج المرتبط بالمفتاح المحدد. إذا لم يتم العثور على المفتاح، سيتم عرض null.

يمكن أن يحتوي المفتاح على نقاط مضمَّنة. على سبيل المثال: يؤدي مفتاح "a.b.c" إلى عرض خريطة تحتوي على المفتاح "c" في خريطة تحتوي على المفتاح "b" في خريطة تحتوي على المفتاح "a" في النموذج.

public static List<Object> listOf (Object... objects)

تنشئ القائمة.

على سبيل المثال، في ما يلي قائمة تتضمّن "object1" و"object2":

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

public static Map<Object, Object> mapOf (كائن... كائنات)

إنشاء خريطة. ويجب أن تكون المَعلمات أزواجًا من القيم الأساسية.

على سبيل المثال، يؤدي ما يلي إلى إنشاء تعيين للخريطة من "key1" إلى "value1" ومن "key2" إلى "value2":

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

الرميات
IllegalArgumentException إذا كان هناك عدد فردي من المعاملات

عامة إلغاء push (خريطة<كائن، كائن> update)

تدمج كائن update المحدّد في نموذج البيانات الحالي، مع استدعاء أي أدوات معالجة مع التحديث (بعد حدوث الدمج).

إذا كنت تريد تمثيل قيمة غير متوفّرة (مثل فهرس فارغ في قائمة)، استخدِم الكائن OBJECT_NOT_PRESENT.

إذا كانت سلسلة المحادثات الأخرى قيد التنفيذ، سيتم حظر هذه المكالمة إلى أن تنتهي سلسلة المحادثات هذه.

عادةً ما تكون هذه مكالمة متزامنة. ومع ذلك، أثناء تنفيذ سلسلة التعليمات للدفع، يتم إجراء عملية دفع أخرى من سلسلة المحادثات نفسها، وتكون الدفعة الثانية غير متزامنة (سيتم عرض الدفعة الثانية قبل إجراء تغييرات على طبقة البيانات). يمكن أن تحدث الدفعة الثانية من سلسلة التعليمات نفسها، على سبيل المثال، إذا تم إرسال دفعة من طبقة بيانات استجابةً لتنشيط علامة.

إذا كانت السمة update تحتوي على المفتاح event، سيتم تقييم القواعد وتنشيط العلامات المطابقة.

المَعلمات
تحديث كائن التحديث لمعالجة

عامة إلغاء push (مفتاح الكائن, قيمة الكائن)

يدفع زوج مفتاح/قيمة من البيانات إلى طبقة البيانات. وهذه الطريقة هي فقط طريقة سهلة الاستخدام تتطلّب push(DataLayer.mapOf(key, value)).