Shopping عبر حِزم تطوير البرامج (SDK) لتفاعلات المستخدمين: تعليمات الدمج الفني التابعة لجهات خارجية

تنشئ Google سطحًا على الجهاز ينظم بيانات المستخدمين التطبيقات حسب المجالات وتوفّر تجربة غامرة جديدة لاستهلاك محتوى التطبيق المخصَّص والاكتشاف. توفِّر تجربة ملء الشاشة هذه للشركاء من المطوّرين فرصة لعرض أفضل المحتوى الوا��ي في قناة مخصصة خارج تطبيقها.

يتضمّن هذا الدليل تعليمات للشركاء من المطوّرين حول كيفية دمج لمحتوى التسوّق، باستخدام حزمة Engage SDK لملء المساحة الجديدة هذه ومساحات عرض Google الحالية، مثل "مساحة الترفيه".

تفاصيل عملية الدمج

المصطلحات

ويشمل هذا الدمج أنواع المجموعات الخمسة التالية: الاقتراح المميزة وسلة التسوق وقائمة التسوق وإعادة الطلب تتبع طلب Shopping.

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

    تأخذ توصياتك البنية التالية:

    • مجموعة الاقتراحات: طريقة عرض لواجهة مستخدم تحتوي على مجموعة من الاقتراحات من شريك المطوّرين نفسه

    • ShoppingEntity: كائن يمثل عنصرًا واحدًا في مجموعة.

  • تعرض المجموعة المميزة البطل ShoppingEntity الذي تم اختياره من بين العديد الشركاء من المطوّرين في مجموعة واحدة لواجهة المستخدم. يكون هناك رابط واحد مميز التي تظهر بالقرب من أعلى واجهة المستخدم، مع تحديد أولوية موضع الإعلان في أعلى كل مجموعات الاقتراحات يُعد كل شريك مطوِّر يُسمح بنشر كيان Shopping واحد في المجموعة المميّزة.

  • تعرض مجموعة سلة التسوّق لمحة سريعة عن سلات التسوّق من العديد شركائك من المطوّرين في مجموعة واحدة لواجهة المستخدم، لتشجيع المستخدمين على إكمال والعربات المعلقة. هناك مجموعة واحدة لسلة التسوق، وهي بالقرب من أعلى واجهة المستخدم، مع وضع أولوية أعلى من كل شيء مجموعات الاقتراحات: يُسمح لكل شريك مطوّر ببث ShoppingCart في مجموعة سلة التسوق.

    تكون سلة التسوق بالبنية التالية:

    • مجموعة سلة التسوّق: طريقة عرض واجهة مستخدم تحتوي على مجموعة من السلع معاينات سلة التسوق من العديد من شركاء المطورين.

    • ShoppingCart: كائنًا يمثّل معاينة سلة التسوّق لشريك مطوِّر واحد، ليتم عرضها في سلة التسوّق تجميع. يجب أن تُظهر السمة ShoppingCart العدد الإجمالي للعناصر في وقد تتضمن أيضًا صورًا لبعض العناصر في سلة التسوق الخا��ة بالمستخدم.

  • تعرض مجموعة قوائم التسوّق لمحة سريعة عن تجربة التسوّق. قوائم من عدة شركاء مطوِّرين في مجموعة واحدة لواجهة المستخدم، ما يشجع المستخدمين على الرجوع إلى التطبيق المقابل لتحديث قوائمهم وإكمالها. تتوفر مجموعة قوائم تسوق واحدة.

  • تعرض مجموعة إعادة الترتيب لمحة سريعة عن الطلبات السابقة من عدّة شركاء مطوّرين في مجموعة واحدة لواجهة المستخدم، ما يطلب من المستخدمين إعادة الطلب هناك مجموعة واحدة لإعادة ترتيب المجموعة.

    • ينبغي أن يعرض إعادة ترتيب المجموعة العدد الإجمالي للعناصر في طلب المستخدم السابق، ويجب أن يتضمن أيضًا أحد الطلبات التالية:

      • صور لـ X سلعة في الطلب السابق للمستخدم
      • تصنيفات العناصر X بترتيب المستخدم السابق.
  • تعرض مجموعة تتبُّع طلبات Shopping لمحة سريعة عن الطلبات التي تنتظر المراجعة. أو طلبات التسوّق المكتملة مؤخرًا من العديد من الشركاء المطوّرين في واجهة مستخدم واحدة التجميع، مما يسمح للمستخدمين بتتبع طلباتهم.

    هناك مجموعة واحدة من ShoppingOrderTracking تظهر بالقرب من أعلى واجهة المستخدم، مع وضع أولوية أعلى من كل الاقتراحات المجموعات العنقودية. يُسمح لكل شريك مطوّر ببث العديد من سلع ShoppingOrderTrackingEntity في مجموعة "تتبُّع طلبات Shopping".

    • تتخذ مجموعة ShoppingOrderTrackingCluster البنية التالية:

      • مجموعة ShoppingOrderTracking: طريقة عرض لواجهة مستخدم تحتوي على مجموعة من معاينات تتبع الطلبات من العديد من شركاء المطوّرين
      • ShoppingOrderTrackingEntity: عنصر يمثّل طلب تسوّق معاينة التتبُّع لشريك مطوِّر واحد، لعرضها في مجموعة تتبع طلبات Shopping. يجب أن يعرض كيان ShoppingOrderTrackingEntity. حالة الطلب ووقت الطلب. ننصحك بشدة لملء مدة التسليم المتوقّعة لـ ShoppingOrderTrackingEntity، يتم عرضه للمستخدمين عند توفيره.

المرحلة التمهيدية

الحد الأدنى لمستوى واجهة برمجة التطبيقات: 19

إضافة مكتبة com.google.android.engage:engage-core إلى تطبيقك:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.5.2'
}

لمزيد من المعلومات، يمكنك الاطّلاع على مستوى رؤية الحِزم في نظام Android 11.

ملخّص

ويستند التصميم إلى تنفيذ معيار الخدمة.

تخضع البيانات التي يمكن للعميل نشرها للحدود التالية للحدود التالية أنواع المجموعات العنقودية:

نوع المجموعة حدود المجموعات الحدود القصوى لعدد العناصر في مجموعة
مجموعات الاقتراحات 5 على الأكثر ShoppingEntity 25 كحدّ أقصى
المجموعة المميزة 1 على الأكثر ShoppingEntity واحد كحدّ أقصى
مجموعة سلات التسوّق 1 على الأكثر ShoppingCart واحد كحدّ أقصى
مجموعة قوائم التسوّق 1 على الأكثر ShoppingListEntity واحد كحدّ أقصى
مجموعة إعادة ترتيب التسوّق 1 على الأكثر ReorderEntity واحد كحدّ أقصى
مجموعة تتبع طلبات التسوّق 3 على الأكثر ShoppingOrderTrackingEntity على الأكثر

الخطوة 1: تقديم بيانات الكيان

حدّدت حزمة SDK كيانات مختلفة لتمثيل كل نوع من أنواع العناصر. تشير رسالة الأشكال البيانية يمكن استخدام الكيانات التالية في فئة Shopping:

  1. ShoppingEntity
  2. ShoppingCart
  3. ShoppingList
  4. Reorder
  5. ShoppingOrderTracking

توضّح الرسوم البيانية أدناه السمات والمتطلبات المتاحة لكل نوع.

ShoppingEntity

يمثّل العنصر ShoppingEntity منتجًا أو عرضًا ترويجيًا أو صفقة أو اشتراك. أو حدث يرغب شركاء المطوّرين في نشره

ShoppingEntity
السمة المتطلب الوصف التنسيق
صور الملصق مطلوب يجب توفير صورة واحدة على الأقل. راجِع مواصفات الصور للحصول على إرشادات.
معرّف الموارد المنتظم (URI) الحركة مطلوب

الرابط لصفحة في التطبيق والتي تعرض تفاصيل حول .

ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة.

معرّف موارد منتظم (URI)
العنوان اختياري اسم الجهة.

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: أقل من 90 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف)

السعر - الحالي مطلوب بشكل مشروط

السعر الحالي للكيان.

يجب تقديم هذا الخيار في حال تقديم سعر مشطوب.

حقل التعبئة النصّية الحرّة
السعر - مشطوب اختياري تمثّل هذه السمة السعر الأصلي للكيان، والذي يتم تحديده في واجهة مستخدم حقل التعبئة النصّية الحرّة
وسيلة الشرح اختياري وسيلة شرح لعرض إعلان ترويجي أو حدث أو تعديل للكيان، إذا المتوفرة.

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف)

النص المكتوب بالأحرف اللاتينية الكبيرة في وسيلة الشرح اختياري النص المكتوب بخط دقيق لوسيلة الشرح

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف)

التقييم (اختياري) - ملاحظة: جميع التقييمات باستخدام نظام التقييم بالنجوم العادي.
التقييم - أقصى قيمة اختياري

تمثّل هذه السمة القيمة القصوى لمقياس التقييم.

يجب تقديمه إذا كانت القيمة الحالية للتقييم هي أيضًا المقدَّمة

العدد >= 0.0
التقييم - القيمة الحالية اختياري

القيمة الحالية لمقياس التقييم.

يجب تقديمه إذا كانت قيمة الحد الأقصى للتقييم أيضًا هي المقدَّمة

العدد >= 0.0
التقييم - العدد اختياري

تمثّل هذه السمة عدد تقييمات العنصر.

ملاحظة: يُرجى إدخال هذا الحقل إذا كان تطبيقك للتحكم في كيفية عرض العدد للمستخدمين. استخدِم سلسلة موجزة. على سبيل المثال، إذا كان العدد 1,000,000، ننصحك باستخدام اختصار. مثل 1 ميغاهرتز بحيث لا يتم اقتطاع العدد على شاشات العرض الأصغر.

سلسلة
التقييم - قيمة العدد اختياري

تمثّل هذه السمة عدد تقييمات العنصر.

ملاحظة: يُرجى إدخال هذا الحقل إذا لم تتمكّن من استخدامه. منطق عرض اختصار العرض بنفسك. إذا كانت قيمة العدّ والعدد موجودة، يتم عرض العدد للمستخدمين.

الصيغة الطويلة
DisplayTimeWindow (اختياري) - تحديد فترة زمنية لعرض المحتوى في نتائج البحث
الطابع الزمني للبدء اختياري

الطابع الزمني للحقبة الذي يجب أن يظهر المحتوى بعده على السطح.

وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض.

الطابع الزمني للحقبة بالمللي ثانية
الطابع الزمني للانتهاء اختياري

الطابع الزمني للحقبة الذي لن يظهر المحتوى بعده السطح.

وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض.

الطابع الزمني للحقبة بالمللي ثانية

ShoppingCart

السمة المتطلب الوصف التنسيق
معرّف الموارد المنتظم (URI) الحركة مطلوب

الرابط لصفحة في التطبيق إلى سلّة التسوّق في تطبيق الشريك.

ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة.

معرّف موارد منتظم (URI)
عدد العناصر مطلوب

عدد السلع (وليس فقط عدد المنتجات) في سلّة التسوّق

على سبيل المثال: إذا كان هناك 3 قمصان متطابقة وقبعة واحدة في عربة التسوق، يجب أن يكون هذا الرقم 4.

عدد صحيح >= 1
نص الإجراء اختياري

نص عبارة الحث على اتخاذ إجراء للزر في سلة التسوق (على سبيل المثال، حقيبة التسوّق).

إذا لم يوفّر المطوّر نص إجراء، عرض سلة التسوّق هو الخيار التلقائي.

تتوفّر هذه السمة في ��ل��ص��ا�� 1.1.0 والإصدارات اللاحقة.

سلسلة
العنوان اختياري

عنوان سلة التسوّق (على سبيل المثال، كيس التسوّق).

إذا لم يقدّم المطوِّر أي عنوان، ستظهر سلّة التسوّق. هو الخيار التلقائي.

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: أقل من 25 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف)

صور سلة التسوّق اختياري

صور لكل منتج في سلة التسوّق.

يمكن تقديم ما يصل إلى 10 صور حسب الأولوية؛ الـ يعتمد العدد الفعلي للصور المعروضة على شكل الجهاز

راجِع مواصفات الصور للحصول على إرشادات.
تصنيفات العناصر اختياري

قائمة تصنيفات السلع في قائمة التسوّق.

العدد الفعلي للتصنيفات المعروضة تعتمد على شكل الجهاز.

قائمة التصنيفات النصية المجانية

حجم النص الموصى به: أقل من 20 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف)

DisplayTimeWindow (اختياري) - تحديد فترة زمنية لعرض المحتوى في نتائج البحث
الطابع الزمني للبدء اختياري

الطابع الزمني للحقبة الذي يجب أن يظهر المحتوى بعده على السطح.

وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض.

الطابع الزمني للحقبة بالمللي ثانية
الطابع الزمني للانتهاء اختياري

الطابع الزمني للحقبة الذي لن يظهر المحتوى بعده السطح.

وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض.

الطابع الزمني للحقبة بالمللي ثانية

ShoppingList

السمة المتطلب الوصف التنسيق
معرّف الموارد المنتظم (URI) الحركة مطلوب

الرابط لصفحة في التطبيق إلى قائمة التسوّق في تطبيق الشريك

ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة.

معرّف موارد منتظم (URI)
عدد العناصر مطلوب عدد السلع في قائمة التسوّق عدد صحيح >= 1
العنوان اختياري

عنوان القائمة (على سبيل المثال، قائمة البقالة).

إذا لم يوفّر المطوّر أي عنوان، قائمة التسوّق هي الخيار التلقائي.

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: أقل من 25 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف)

تصنيفات العناصر مطلوب

قائمة تصنيفات السلع في قائمة التسوّق.

يجب تقديم تصنيف واحد على الأقل، ويمكن إضافة ما يصل إلى 10 تصنيفات. يتم تقديمها حسب الأولوية؛ العدد الفعلي للتصنيفات المعروضة تعتمد على شكل الجهاز.

قائمة التصنيفات النصية المجانية

حجم النص الموصى به: أقل من 20 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف)

ShoppingReorderCluster

السمة المتطلب الوصف التنسيق
معرّف الموارد المنتظم (URI) الحركة مطلوب

الرابط لصفحة في التطبيق المطلوب إعادة ترتيبه في تطبيق الشريك.

ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة.

معرّف موارد منتظم (URI)
نص الإجراء اختياري

نص عبارة الحث على اتخاذ إجراء للزر في إعادة الترتيب (على سبيل المثال، اطلب مرة أخرى).

إذا لم يوفّر المطوّر نص إجراء، يكون خيار إعادة الترتيب هو الخيار التلقائي.

تتوفّر هذه السمة في الإصدار 1.1.0 والإصدارات اللاحقة.

سلسلة
عدد العناصر مطلوب

عدد السلع (وليس فقط عدد المنتجات) في الفترة السابقة طلبك.

على سبيل المثال: إذا كان هناك 3 أنواع قهوة صغيرة وكرواسون واحد في الطلب السابق، يجب أن يكون هذا الرقم 4.

عدد صحيح >= 1
العنوان مطلوب عنوان العنصر المُعاد ترتيبه.

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: أقل من 40 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف)

تصنيفات العناصر

اختياري

(إذا لم يتم تقديمه، يجب تقديم صور الملصق)

تمثّل هذه السمة تصنيفات العناصر للطلب السابق.

يمكن تقديم ما يصل إلى 10 تصنيفات حسب الأولوية؛ الـ يعتمد العدد الفعلي للتصنيفات المعروضة على شكل الجهاز

قائمة النصوص الحرة

حجم النص المقترَح لكل تصنيف: أقل من 20 حرفًا (قد تظهر علامات حذف في النص الطويل جدًا.)

صور الملصق

اختياري

(يجب تقديم تصنيفات السلع إذا لم يتمّ توفيرها)

صور للسلع في الطلب السابق

يمكن تقديم ما يصل إلى 10 صور حسب الأولوية؛ الـ يعتمد العدد الفعلي للصور المعروضة على شكل الجهاز

راجِع مواصفات الصور للحصول على إرشادات.

ShoppingOrderTrackingCluster

السمة المتطلب الوصف التنسيق
العنوان مطلوب

عنوان قصير للطرد/العناصر التي يتم تتبّعها أو عملية التتبّع الصف.

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: 50 حرفًا (النص الطويل جدًا سوف إظهار القطع الناقصة)

نوع الطلب مطلوب

عنوان قصير للطرد/العناصر التي يتم تتبّعها أو عملية التتبّع الصف.

التعداد: IN_STORE_PICKUP، SAME_DAY_DELIVERY، MULTI_DAY_DELIVERY

الحالة مطلوب

الحالة الحالية للطلب.

على سبيل المثال: "سيتأخر" أو "في وسيلة نقل عام" أو "متأخر" أو "تم الشحن"، "تم التسليم"، "غير متوفّر"، "الطلب جاهز"

حقل التعبئة النصّية الحرّة

حجم النص الموصى به: 25 حرفًا (النص الطويل جدًا سوف إظهار القطع الناقصة)

وقت الطلب مطلوب

الطابع الزمني للحقبة بالمللي ثانية التي تمّ فيها تقديم الطلب

سيتم عرض مدة الطلب في حال كانت الفترة الزمنية المتوقّعة للتسليم. غير موجود

الطابع الزمني للحقبة بالمللي ثانية
معرّف الموارد المنتظم (URI) الحركة مطلوب

رابط ينقل إلى صفحة تتبُّع الطلب في تطبيق الشريك

معرّف موارد منتظم (URI)
OrderDeliveryTimeWindow (اختياري) - تحديد وقت نافذة للطلب الذي يتم تتبعه من وقت تقديم الطلب في وقت التسليم المتوقّع أو الفعلي
OrderdeliveryyTimeWindow - وقت البدء اختياري

الطابع الزمني للحقبة بالمللي ثانية والتي سيتم بعدها إرسال الطلب للتسليم أو أن يكون جاهزًا للاستلام.

الطابع الزمني للحقبة بالمللي ثانية
طلب DeliveryTimeWindow - وقت الانتهاء اختياري

الطابع الزمني للحقبة بالمللي ثانية التي سيتم إرسال الطلب إليها أو قبلها للتسليم أو أن يكون جاهزًا للاستلام.

الطابع الزمني للحقبة بالمللي ثانية
صور الملصق اختياري

صورة لسلعة أو منتجات واحدة تشكّل جزءًا من الطلب

نسبة العرض إلى الارتفاع المقترَحة هي 1:1.

راجِع مواصفات الصور للحصول على إرشادات.
عدد العناصر اختياري عدد السلع في الطلب عدد صحيح >= 1
الوصف اختياري

فقرة واحدة من النص لوصف السلع الواردة في الطلب.

ملاحظة: سيتم استخدام قائمة الوصف أو قائمة الترجمة للمستخدم وليس كليهما.

حقل التعبئة النصّية الحرّة

حجم النص المقترَح: 180 حرفًا

قائمة الترجمة اختياري

ما يصل إلى 3 ترجمات، مع كل عنوان فرعي يحتوي على سطر واحد من النص.

ملاحظة: سيتم استخدام قائمة الوصف أو قائمة الترجمة للمستخدم وليس كليهما.

حقل التعبئة النصّية الحرّة

حجم النص المقترَح لكل عنوان فرعي: الحدّ الأقصى 50 حرفًا

قيمة طلب الشراء - السعر الحالي اختياري القيمة الحالية للطلب. حقل التعبئة النصّية الحرّة
رقم الطلب اختياري رقم/معرّف الطلب الذي يمكن استخدامه لتعريف الطلب بشكل فريد.

حقل التعبئة النصّية الحرّة

حجم النص المقترَح: 25 حرفًا كحد أقصى

رقم التتبع اختياري رقم تتبُّع الطلب أو الطرد في حال كان الطلب توصيل الطلب.

حقل التعبئة النصّية الحرّة

حجم النص المقترَح: 25 حرفًا كحد أقصى

مواصفات الصور

في ما يلي المواصفات المطلوبة لمواد عرض الصور:

نسبة العرض إلى الارتفاع الحد الأدنى لعدد وحدات البكسل وحدات البكسل المقترَحة

مربّع (1x1)

يُفضَّل استخدامه للمجموعات غير المميّزة

300 × 300 1200 × 1200

أفقي (1.91x1)

يُفضَّل استخدامها مع المجموعات المميّزة

600 × 314 1200 × 628
العمودية (4×5) 480×600 960 × 1200

تنسيقات الملفات

PNG أو JPG أو GIF ثابت أو WebP

الحد الأقصى لحجم الملف

5120 كيلوبايت

اقتراحات إضافية

  • المنطقة الآمنة للصور: ضَع المحتوى المهم في الوسط بحيث يشغل% 80 من .
  • استخدام خلفية شفافة بحيث يمكن عرض الصورة بشكل صحيح في إعدادات المظهرَين الداكن والفاتح

الخطوة 2: تقديم بيانات المجموعة

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

تقع على عاتق "AppEngageShoppingClient" مسؤولية نشر مجموعات التسوّق.

يتم عرض واجهات برمجة التطبيقات التالية لنشر المجموعات في البرنامج:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishShoppingCart
  • publishShoppingList
  • publishShoppingReorderCluster
  • publishShoppingOrderTrackingCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteShoppingCartCluster
  • deleteShoppingListCluster
  • deleteShoppingReorderCluster
  • deleteShoppingOrderTrackingCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

تُستخدم واجهة برمجة التطبيقات هذه للتحقق مما إذا كانت الخدمة متاحة للدمج ما إذا كان من الممكن عرض المحتوى على الجهاز أم لا.

Kotlin

client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java

client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content
          // publish calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

تُستخدَم واجهة برمجة التطبيقات هذه لنشر قائمة تتضمّن عناصر RecommendationCluster.

يمكن أن يتضمّن الكائن RecommendationCluster السمات التالية:

السمة المتطلب الوصف
قائمة ShoppingEntity مطلوب قائمة بعناصر ShoppingEntity التي تشكّل التوصيات مجموعة الاقتراحات هذه
العنوان مطلوب

عنوان مجموعة الاقتراحات.

حجم النص الموصى به: أقل من 25 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف)

العنوان الفرعي اختياري العنوان الفرعي لمجموعة الاقتراحات.
معرّف الموارد المنتظم (URI) الحركة اختياري

الرابط لصفحة في تطبيق الشريك حيث يمكن للمستخدمين الاطّلاع على قائمة كاملة بالتوصيات.

ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة.

Kotlin

client.publishRecommendationClusters(
            PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build())

Java

client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Black Friday Deals")
                        .build())
                .build());

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • تتم إزالة جميع بيانات مجموعة الاقتراحات الحالية.
  • يتم تحليل البيانات الواردة من الطلب وتخزينها في مجموعات الاقتراحات الجديدة.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

publishFeaturedCluster

تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر FeaturedCluster.

Kotlin

client.publishFeaturedCluster(
            PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    FeaturedCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFeaturedCluster(
            new PublishFeaturedClusterRequest.Builder()
                .setFeaturedCluster(
                    new FeaturedCluster.Builder()
                        ...
                        .build())
                .build());

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • وستتم إزالة بيانات FeaturedCluster الحالية من الشريك المطوّر.
  • يتم تحليل البيانات من الطلب وتخزينها في "المجموعة المميزة" المعدّلة.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

publishShoppingCart

تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر ShoppingCartCluster.

Kotlin

client.publishShoppingCart(
            PublishShoppingCartRequest.Builder()
                .setShoppingCart(
                    ShoppingCart.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingCart(
            new PublishShoppingCartRequest.Builder()
                .setShoppingCart(
                    new ShoppingCart.Builder()
                        ...
                        .build())
                .build())

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • وستتم إزالة بيانات ShoppingCart الحالية من الشريك المطوّر.
  • يتم تحليل البيانات الواردة من الطلب وتخزينها في سلة التسوّق المحدثة المجموعة.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

publishShoppingList

تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر FoodShoppingList.

Kotlin

client.publishFoodShoppingList(
            PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build())

Java

client.publishFoodShoppingList(
            new PublishFoodShoppingListRequest.Builder()
                .setFoodShoppingList(
                    new FoodShoppingListEntity.Builder()
                        ...
                        .build())
                .build());

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • وستتم إزالة بيانات FoodShoppingList الحالية من الشريك المطوّر.
  • يتم تحليل البيانات الواردة من الطلب وتخزينها في قائمة التسوق المحدَّثة المجموعة.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

publishShoppingReorderCluster

تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر ShoppingReorderCluster.

Kotlin

client.publishShoppingReorderCluster(
            PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingReorderCluster(
            new PublishShoppingReorderClusterRequest.Builder()
                .setReorderCluster(
                    new ShoppingReorderCluster.Builder()
                        ...
                        .build())
                .build());

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • وستتم إزالة بيانات ShoppingReorderCluster الحالية من الشريك المطوّر.
  • يتم تحليل البيانات من الطلب وتخزينها في مجموعة إعادة الترتيب المعدّلة.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

publishShoppingOrderTrackingCluster

تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر ShoppingOrderTrackingCluster.

Kotlin

client.publishShoppingOrderTrackingCluster(
            PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build())

Java

client.publishShoppingOrderTrackingCluster(
            new PublishShoppingOrderTrackingClusterRequest.Builder()
                .setShoppingOrderTrackingCluster(
                    new ShoppingOrderTrackingCluster.Builder()
                        ...
                        .build())
                .build());

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • بيانات ShoppingOrderTrackingCluster الحالية من الشريك المطوّر هي تمت إزالته.
  • يتم تحليل البيانات الواردة من الطلب وتخزينها في طلب Shopping المعدَّل. مجموعة التتبع.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

publishUserAccountManagementRequest

تُستخدم واجهة برمجة التطبيقات هذه لنشر بطاقة تسجيل الدخول . يوجه إجراء تسجيل الدخول المستخدمين إلى صفحة تسجيل الدخول إلى التطبيق حتى يتمكن التطبيق من نشر المحتوى (أو تقديم المزيد من محتوى مخصّص)

البيانات الوصفية التالية هي جزء من بطاقة تسجيل الدخول:

السمة المتطلب الوصف
معرّف الموارد المنتظم (URI) الحركة مطلوب رابط لصفحة في التطبيق (أي الانتقال إلى صفحة تسجيل الدخول إلى التطبيق)
صورة اختياري - يجب توفير العنوان في حال عدم تقديمه

الصورة المعروضة على البطاقة

صور بنسبة عرض إلى ارتفاع تبلغ 16×9 بدقة 1264×712

العنوان اختياري - يجب تقديم الصورة إذا لم يتم توفيرها العنوان على البطاقة
نص الإجراء اختياري النص المعروض في عبارة الحث على اتخاذ إجراء (أي تسجيل الدخول)
العنوان الفرعي اختياري عنوان فرعي اختياري على البطاقة

Kotlin

var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java

SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:

  • بيانات UserAccountManagementCluster الحالية من الشريك المطوّر هي تمت إزالته.
  • يتم تحليل البيانات الواردة من الطلب وتخزينها في ملف المجموعة UserAccountManagementCluster.

في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.

updatePublishStatus

إذا لم يتم نشر أي من المجموعات لأي سبب داخلي لنشاطك التجاري، ننصحك بشدة بتعديل حالة النشر باستخدام updatePublishStatus في واجهة برمجة التطبيقات. وهذا أمر مهم للأسباب التالية :

  • توفير حالة المحتوى في جميع الحالات، حتى عند نشر المحتوى (الحالة == تم النشر)، أمر بالغ الأهمية لتعبئة لوحات البيانات التي تستخدم هذه والحالة الصريحة لتوضيح حالة الدمج والمقاييس الأخرى.
  • إذا لم يتم نشر أي محتوى ولكن لم تكن حالة الدمج معطّلة (STATUS == NOT_HOSTED)، يمكن أن تتجنب Google تشغيل التنبيهات في التطبيق ولوحات معلومات الصحة. وهي تؤكّد عدم نشر المحتوى بسبب المتوقع من وجهة نظر مقدّم الخدمة.
  • تساعد المطوّرين على تقديم إحصاءات حول وقت نشر البيانات مقابل لا.
  • يجوز أن تستخدم Google رموز الحالة لحث المستخدم على اتخاذ إجراءات معينة في حتى يتمكنوا من الاطلاع على محتوى التطبيق أو التغلب عليه.

قائمة رموز حالة النشر المؤهّلة هي :

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

إذا لم يتم نشر المحتوى لأنّ المستخدم لم يسجّل الدخول، تنصح Google بنشر بطاقة تسجيل الدخول. في حال تعذّر على مقدّمي الخدمات نشر "بطاقة تسجيل الدخول" لأي سبب من الأسباب ننصحك باستدعاء واجهة برمجة التطبيقات updatePublishStatus برم�� ��لحالة NOT_MANAGEED_REQUIRES_SIGN_IN

Kotlin

client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java

client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

تُستخدَم واجهة برمجة التطبيقات هذه لحذف محتوى مجموعات الاقتراحات.

Kotlin

client.deleteRecommendationClusters()

Java

client.deleteRecommendationClusters();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعات الاقتراحات: في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.

deleteFeaturedCluster

يتم استخدام واجهة برمجة التطبيقات هذه لحذف محتوى "المجموعة المميزة".

Kotlin

client.deleteFeaturedCluster()

Java

client.deleteFeaturedCluster();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من المجموعة المميزة. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.

deleteShoppingCartCluster

يتم استخدام واجهة برمجة التطبيقات هذه لحذف محتوى مجموعة سلة التسوّق.

Kotlin

client.deleteShoppingCartCluster()

Java

client.deleteShoppingCartCluster();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعة سلة التسوّق. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.

deleteShoppingListCluster

يتم استخدام واجهة برمجة التطبيقات هذه لحذف محتوى مجموعة قوائم التسوق.

Kotlin

client.deleteShoppingListCluster()

Java

client.deleteShoppingListCluster();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعة قوائم التسوّق. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.

deleteShoppingReorderCluster

تُستخدَم واجهة برمجة التطبيقات هذه لحذف محتوى "مجموعة إعادة ترتيب Shopping".

Kotlin

client.deleteShoppingReorderCluster()

Java

client.deleteShoppingReorderCluster();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعة إعادة ترتيب التسوّق. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.

deleteShoppingOrderTrackingCluster

يتم استخدام واجهة برمجة التطبيقات هذه لح��ف محتوى مجموعة تتبّع طلبات Shopping.

Kotlin

client.deleteShoppingOrderTrackingCluster()

Java

client.deleteShoppingOrderTrackingCluster();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعة تتبع طلبات Shopping. في حالة حدوث خطأ، يتم التعامل مع الطلب بأكمله الرفض والحفاظ على الحالة الحالية.

deleteUserManagementCluster

يتم استخدام واجهة برمجة التطبيقات هذه لحذف محتوى مجموعة UserAccountManagement.

Kotlin

client.deleteUserManagementCluster()

Java

client.deleteUserManagementCluster();

عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من المجموعة UserAccountManagement. في حالة حدوث خطأ، يتم التعامل مع الطلب بأكمله الرفض والحفاظ على الحالة الحالية.

deleteClusters

تُستخدَم واجهة برمجة التطبيقات هذه لحذف محتوى نوع مجموعة معيّن.

Kotlin

client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      ...
      .build())

Java

client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                ...
                .build());

عندما تتلقى الخدمة الطلب، تزيل البيانات الحالية من المجموعات العنقودية المطابقة لأنواع المجموعات العنقودية المحددة. يمكن للعملاء اختيار تمرير أحد أو والعديد من أنواع المجموعات العنقودية. في حالة حدوث خطأ، يتم رفض الطلب بأكمله الاحتفاظ بحالته الحالية.

خطأ أثناء المعالجة

ننصحك بشدّة بالاستماع إلى نتيجة المَهمّة من واجهات برمجة التطبيقات الخاصة بالنشر، مثل يمكن اتخاذ إجراء متابعة لاسترداد مهمة ناجحة وإعادة إرسالها.

Kotlin

client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java

client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

يتم عرض الخطأ على أنّه AppEngageException مع تضمين السبب رمز الخطأ.

رمز الخطأ ملاحظة
SERVICE_NOT_FOUND الخدمة غير متوفّرة على الجهاز المحدّد.
SERVICE_NOT_AVAILABLE الخدمة متوفّرة على الجهاز المحدّد، ولكنّها غير متاحة وقت المكالمة (على سبيل المثال، تم إيقافه بشكل صريح).
SERVICE_CALL_EXECUTION_FAILURE تعذّر تنفيذ المهمة بسبب حدوث مشاكل في سلاسل المحادثات. في هذه الحالة، يمكنه إعادة المحاولة.
SERVICE_CALL_PERMISSION_DENIED غير مسموح للمتصل بإجراء اتصال الخدمة.
SERVICE_CALL_INVALID_ARGUMENT يحتوي الطلب على بيانات غير صالحة (على سبيل المثال، تتجاوز القيمة المسموح بها عدد المجموعات العنقودية).
SERVICE_CALL_INTERNAL حدث خطأ من جانب الخدمة.
SERVICE_CALL_RESOURCE_EXHAUSTED يتم إجراء استدعاء الخدمة بشكل متكرر جدًا.

الخطوة 3: التعامل مع أهداف البث

وبالإضافة إلى إجراء طلبات البيانات من واجهة برمجة التطبيقات للمحتوى المنشور من خلال إحدى المهام، يتم أيضًا مطلوبة لإعداد BroadcastReceiver لاستلام الإشعارات طلب نشر المحتوى.

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

يجب إعداد جهاز BroadcastReceiver بالطريقتَين التاليتَين:

  • تسجيل نسخة افتراضية من فئة BroadcastReceiver ديناميكيًا باستخدام Context.registerReceiver() ويتيح ذلك التواصل من خلال التطبيقات. التي لا تزال حية في الذاكرة.

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION
  // broadcast is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is
  // received
  // Trigger shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast
  // is received
  // Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast
  // is received
  // Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
  // received
  // Trigger shopping order tracking cluster publish when
  // PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER broadcast is received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION))

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED))

// Register Shopping Cart Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_CART))

// Register Shopping List Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_LIST))

// Register Reorder Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_REORDER_CLUSTER))

// Register Shopping Order Tracking Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER))
}

Java

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger shopping cart cluster publish when PUBLISH_SHOPPING_CART broadcast is
// received

// Trigger shopping list cluster publish when PUBLISH_SHOPPING_LIST broadcast is
// received

// Trigger reorder cluster publish when PUBLISH_REORDER_CLUSTER broadcast is
// received

// Trigger reorder cluster publish when PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER
// broadcast is received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION));

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));

// Register Shopping Cart Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_CART));

// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_LIST));

// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_REORDER_CLUSTER));

// Register Shopping Order Tracking Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.shopping.service.Intents.ACTION_PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER));

}
  • الإعلان بشكل ثابت عن عملية تنفيذ باستخدام العلامة <receiver> في ملف AndroidManifest.xml. يتيح هذا الإجراء للتطبيق تلقّي البث. عندما لا يكون قيد التشغيل، ويسمح أيضًا للتطبيق بالنشر المحتوى.
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_CART" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER" />
      </intent-filter>
   </receiver>
</application>

يتم إرسال الأهداف التالية من خلال الخدمة:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION من المستحسن بدء مكالمة publishRecommendationClusters عند هذا الهدف الذي تم استلامه.
  • com.google.android.engage.action.PUBLISH_FEATURED من المستحسن بدء مكالمة publishFeaturedCluster عندما يكون هذا الغرض هو المستلمة.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_CART من المستحسن بدء مكالمة publishShoppingCart عندما يكون هذا الغرض هو المستلمة.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_LIST من المستحسن بدء مكالمة publishShoppingList عندما يكون هذا الغرض هو المستلمة.
  • com.google.android.engage.action.shopping.PUBLISH_REORDER_CLUSTER من المستحسن بدء مكالمة publishReorderCluster عندما يكون هذا الغرض هو المستلمة.
  • com.google.android.engage.action.shopping.PUBLISH_SHOPPING_ORDER_TRACKING_CLUSTER يُنصَح ببدء مكالمة publishShoppingOrderTrackingCluster عندما تلقي هذا الغرض.

سير عمل عملية الدمج

للحصول على دليل مفصّل حول التحقّق من الدمج بعد اكتماله، يُرجى مراجعة التفاعل مع سير عمل دمج المطوّرين

الأسئلة الشائعة

يُرجى الاطّلاع على الأسئلة الشائعة حول Engage SDK لمعرفة الأسئلة الشائعة

Contact

معلومات التواصل Engage-developers@google.com إذا كانت هناك لأي أسئلة أثناء عملية الدمج. يردّ فريقنا بأسرع ما يمكن. ممكن.

الخطوات التالية

بعد إكمال عملية الدمج هذه، ستكون خطواتك التالية هي التالية:

  • إرسال رسالة إلكترونية إلى engagement-developers@google.com وإرفاق حِزمة APK المدمجة والجاهزة للاختبار من قِبل Google.
  • تُجري Google عملية تحقق وتراجع المراجعات داخليًا للتأكد من أنّ والتكامل كما هو متوقع. إذا لزم الأمر، سيتواصل معك فريق Google. بأي تفاصيل ضرورية.
  • عند اكتمال الاختبار وعدم الحاجة إلى إجراء أي تغييرات، تتواصل معك Google من أجل يمكنك بدء نشر حزمة APK المعدّلة والمتكاملة على "متجر Play".
  • بعد أن تتأكد Google من نشر ملف APK المُعدَّل على "متجر Play" والاقتراح والمحتوى المميّز وسلة التسوّق قائمة التسوق وإعادة ترتيب المجموعة ومجموعة تتبع طلبات التسوّق قد يتم نشر المجموعات العنقودية ومرئية للمستخدمين.