تنشئ Google سطحًا على الجهاز ينظم بيانات المستخدمين التطبيقات حسب المجالات وتوفّر تجربة غامرة جديدة لاستهلاك محتوى التطبيق المخصَّص والاكتشاف. توفِّر تجربة ملء الشاشة هذه للشركاء من المطوّرين فرصة لعرض أفضل المحتوى الوافي في قناة مخصصة خارج تطبيقها.
يتضمّن هذا الدليل تعليمات للشركاء من المطوّرين حول كيفية دمج نظامهم الغذائي. باستخدام حزمة Engage SDK لتعبئة كل من مساحة السطح الجديدة هذه مساحات عرض Google الحالية.
تفاصيل عملية الدمج
المصطلحات
ويشمل هذا الدمج أنواع المجموعات الخمسة التالية: الاقتراح معروض وسلة تسوّق الطعام وقائمة تسوّق الطعام وإعادة طلب المنتجات.
تعرض مجموعات الاقتراحات اقتراحات مخصَّصة ذات صلة بالطعام من شريك مطور فردي. يمكن تخصيص هذه الاقتراحات وفقًا مستخدم أو عام (على سبيل المثال، منتج جديد بسعر مخفَّض). ويمكنك استخدامها لعرض الوصفات المتاجر والأطباق ومنتجات البقالة وما إلى ذلك على النحو الذي تراه مناسبًا.
- يمكن أن تتألف مجموعة الاقتراحات من
ProductEntity
أوStoreEntity
أوRecipeEntity
بطاقة بيانات متجر، ولكن ليس مزيجًا من أنواع مختلفة من الكيانات.
الشكل :`ProductEntity` و"StoreEntity" و"RecipeEntity". (*واجهة المستخدم لأغراض التوضيح فقط) - يمكن أن تتألف مجموعة الاقتراحات من
تعرض المجموعة المميزة البطل
ProductEntity
الذي تم اختياره،StoreEntity
أوRecipeEntity
من العديد من شركاء المطوّرين في واجهة مستخدم واحدة التجميع. هناك مجموعة واحدة من الميزات تظهر بالقرب من في أعلى واجهة المستخدم، مع وضع أولوية أعلى من كل الاقتراحات المجموعات العنقودية. يُسمح لكل شريك مطوِّر ببث كيان واحد. من نوع متوافق في "المميزة"، مع العديد من الكيانات (التي من المحتمل أن تكون الأنواع) من عدة مطوري تطبيقات في المجموعة "المميزة".الشكل : مجموعة مميزة مع `RecipeEntity`. (*واجهة المستخدم لأغراض التوضيح فقط) تعرض مجموعة سلة تسوّق الطعام لمحة سريعة عن عمليات تسوّق منتجات البقالة. سلّات تسوّق من عدة شركاء مطوِّرين في مجموعة واحدة لواجهة المستخدم، ما يحث المستخدمين على لإكمال سلال التسوق المعلقة. هناك سلة تسوّق واحدة للطعام تجميع.
يجب أن تعرض "مجموعة سلات تسوّق الطعام" إجمالي عدد السلع في وقد يتضمن أيضًا صورًا لـ X من العناصر في سلة التسوق الخاصة بالمستخدم.
الشكل: مجموعة عربة تسوُّق طعام من مجموعة واحدة شريك. (*واجهة المستخدم لأغراض التوضيح فقط)
تعرض مجموعة قوائم تسوُّق الطعام لمحة سريعة عن مشتريات البقالة. قوائم من عدة شركاء مطوِّرين في مجموعة واحدة لواجهة المستخدم، ما يشجع المستخدمين على الرجوع إلى التطبيق المقابل لتحديث قوائمهم وإكمالها. تتوفر مجموعة واحدة لقوائم تسويق الطعام.
الشكل: مجموعة قوائم تسوُّق طعام من قائمة واحدة شريك. (*واجهة المستخدم لأغراض التوضيح فقط) تعرض مجموعة إعادة الترتيب لمحة سريعة عن الطلبات السابقة من عدّة شركاء مطوّرين في مجموعة واحدة لواجهة المستخدم، ما يطلب من المستخدمين إعادة الطلب هناك مجموعة واحدة لإعادة ترتيب المجموعة.
ينبغي أن يعرض إعادة ترتيب المجموعة العدد الإجمالي للعناصر في طلب المستخدم السابق، ويجب أن يتضمن أيضًا أحد الطلبات التالية:
- صور لـ X سلعة في الطلب السابق للمستخدم
- تصنيفات العناصر X بترتيب المستخدم السابق.
الشكل: إعادة ترتيب الطعام العنقودي من مجموعة شريك. (*واجهة المستخدم لأغراض التوضيح فقط)
المرحلة التمهيدية
الحد الأدنى لمستوى واجهة برمجة التطبيقات: 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'
}
ملخّص
ويستند التصميم إلى تنفيذ معيار الخدمة.
تخضع البيانات التي يمكن للعميل نشرها للحدود التالية للحدود التالية أنواع المجموعات العنقودية:
نوع المجموعة | حدود المجموعات | الحدود القصوى لعدد العناصر في مجموعة |
---|---|---|
مجموعات الاقتراحات | 5 على الأكثر | 25 شخصًا على الأكثر (ProductEntity ، أو RecipeEntity ، أو
StoreEntity ) |
المجموعة المميزة | 1 على الأكثر | 1 على الأكثر (ProductEntity ، أو RecipeEntity ، أو
StoreEntity ) |
مجموعة سلات تسوّق الطعام | 1 على الأكثر | ShoppingCartEntity واحد كحدّ أقصى |
مجموعة قوائم تسوّق الطعام | 1 على الأكثر | ShoppingListEntity واحد كحدّ أقصى |
مجموعة إعادة ترتيب الطعام | 1 على الأكثر | ReorderEntity واحد كحدّ أقصى |
الخطوة 1: تقديم بيانات الكيان
حدّدت حزمة SDK كيانات مختلفة لتمثيل كل نوع من أنواع العناصر. نحن ندعم الكيانات التالية لفئة "الأغذية":
ProductEntity
StoreEntity
RecipeEntity
FoodShoppingCart
FoodShoppingList
FoodReorderCluster
توضّح الرسوم البيانية أدناه السمات والمتطلبات المتاحة لكل نوع.
ProductEntity
يمثّل العنصر ProductEntity
سلعةً فردية (مثل متجر بقالة
أو طبق من مطعم أو عرض ترويجي) يريد شركاء المطوّرين
لنشرها.
ProductEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
صور الملصق | مطلوب | يجب توفير صورة واحدة على الأقل. | راجِع مواصفات الصور للحصول على إرشادات. |
معرّف الموارد المنتظم (URI) الحركة | مطلوب |
الرابط لصفحة في التطبيق والتي تعرض تفاصيل حول المنتج. ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة. |
معرّف موارد منتظم (URI) |
العنوان | اختياري | اسم المنتج | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 90 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
السعر - الحالي | مطلوب بشكل مشروط | السعر الحالي للمنتج. يجب تقديم هذا الخيار في حال تقديم سعر مشطوب. |
حقل التعبئة النصّية الحرّة |
السعر - مشطوب | اختياري | تمثّل هذه السمة السعر الأصلي للكيان، والذي يتم تحديده في واجهة مستخدم | حقل التعبئة النصّية الحرّة |
وسيلة الشرح | اختياري | وسيلة شرح لعرض إعلان ترويجي أو حدث أو تحديث للمنتج، إذا المتوفرة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
النص المكتوب بالأحرف اللاتينية الكبيرة في وسيلة الشرح | اختياري | النص المكتوب بخط دقيق لوسيلة الشرح | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
التقييم (اختياري) - ملاحظة: يتم عرض جميع التقييمات باستخدام نظام التقييم بالنجوم العادي. | |||
التقييم - أقصى قيمة | اختياري | تمثّل هذه السمة القيمة القصوى لمقياس التقييم. يجب تقديمه إذا كانت القيمة الحالية للتقييم هي أيضًا المقدَّمة |
العدد >= 0.0 |
التقييم - القيمة الحالية | اختياري | القيمة الحالية لمقياس التقييم. يجب تقديمه إذا كانت قيمة الحد الأقصى للتقييم أيضًا هي المقدَّمة |
العدد >= 0.0 |
التقييم - العدد | اختياري | تمثّل هذه السمة عدد تقييمات المنتج. ملاحظة: يُرجى إدخال هذا الحقل إذا كان تطبيقك للتحكم في كيفية عرض العدد للمستخدمين. استخدِم سلسلة موجزة. على سبيل المثال، إذا كان العدد 1,000,000، ننصحك باستخدام اختصار. مثل 1 ميغاهرتز بحيث لا يتم اقتطاع العدد على شاشات العرض الأصغر. |
سلسلة |
التقييم - قيمة العدد | اختياري | تمثّل هذه السمة عدد تقييمات المنتج. ملاحظة: يُرجى إدخال هذا الحقل إذا لم تتمكّن من استخدامه. منطق عرض اختصار العرض بنفسك. إذا كانت قيمة العدّ والعدد موجودة، يتم عرض العدد للمستخدمين. |
الصيغة الطويلة |
DisplayTimeWindow (اختياري) - تحديد فترة زمنية لعرض المحتوى في نتائج البحث | |||
الطابع الزمني للبدء | اختياري |
الطابع الزمني للحقبة الذي يجب أن يظهر المحتوى بعده على السطح. وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض. |
الطابع الزمني للحقبة بالمللي ثانية |
الطابع الزمني للانتهاء | اختياري |
الطابع الزمني للحقبة الذي لن يظهر المحتوى بعده السطح. وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض. |
الطابع الزمني للحقبة بالمللي ثانية |
StoreEntity
يمثّل العنصر StoreEntity
متجرًا فرديًا يشاركه المطوِّرون.
التي تريد نشرها، مثل
مطعم أو متجر بقالة.
StoreEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
صور الملصق | مطلوب | يجب توفير صورة واحدة على الأقل. | راجِع مواصفات الصور للحصول على إرشادات. |
معرّف الموارد المنتظم (URI) الحركة | مطلوب | الرابط لصفحة في التطبيق والتي تعرض تفاصيل حول المتجر. ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة. |
معرّف موارد منتظم (URI) |
العنوان | اختياري | اسم المتجر | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
الموقع الجغرافي | اختياري | الموقع الجغرافي للمتجر | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
وسيلة الشرح | اختياري | وسيلة شرح لعرض إعلان ترويجي أو حدث أو تحديث للمتجر، إذا المتوفرة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
النص المكتوب بالأحرف اللاتينية الكبيرة في وسيلة الشرح | اختياري | النص المكتوب بخط دقيق لوسيلة الشرح | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
الوصف | اختياري | وصف للمتجر | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 90 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
ملاحظة: يتم عرض جميع التقييمات باستخدام نظام تقييم عادي بالنجوم | |||
التقييم - أقصى قيمة | اختياري | تمثّل هذه السمة القيمة القصوى لمقياس التقييم. يجب تقديمه إذا كانت القيمة الحالية للتقييم هي أيضًا المقدَّمة |
العدد >= 0.0 |
التقييم - القيمة الحالية | اختياري | القيمة الحالية لمقياس التقييم. يجب تقديمه إذا كانت قيمة الحد الأقصى للتقييم أيضًا هي المقدَّمة |
العدد >= 0.0 |
التقييم - العدد | اختياري | تمثّل هذه السمة عدد تقييمات المتجر. ملاحظة: يُرجى إدخال هذا الحقل إذا كان تطبيقك يريد. للتحكم في كيفية عرضه للمستخدمين. تقديم السلسلة الموجزة التي يمكن عرضها للمستخدم. على سبيل المثال، إذا كان العد 1000000، ضع في اعتبارك استخدام اختصارات مثل 1M، بحيث لا تم اقتطاعه على أحجام العرض الأصغر. |
سلسلة |
التقييم - قيمة العدد | اختياري | تمثّل هذه السمة عدد تقييمات المتجر. ملاحظة: يُرجى إدخال هذا الحقل إذا كنت لا تريد التعامل مع هذا الحقل. منطق عرض اختصار العرض بنفسك. إذا كانت قيمة العدّ والعدد موجودة، سنستخدم العدد لعرضه للمستخدمين |
الصيغة الطويلة |
RecipeEntity
يمثل الكائن RecipeEntity
صنف طعام يريده شركاء المطوّرين
لنشرها.
RecipeEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
صور الملصق | مطلوب | يجب توفير صورة واحدة على الأقل. | راجِع مواصفات الصور للحصول على إرشادات. |
معرّف الموارد المنتظم (URI) الحركة | مطلوب | الرابط لصفحة في التطبيق والتي تعرض تفاصيل حول الوصفة. ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة. |
معرّف موارد منتظم (URI) |
العنوان | اختياري | تمثّل هذه السمة اسم الوصفة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
المؤلّف | اختياري | تمثّل هذه السمة مؤلف الوصفة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
وقت الطهي/التحضير | اختياري | تمثّل هذه السمة مدة طهي الوصفة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
وسيلة الشرح | اختياري | وسيلة شرح لعرض إعلان ترويجي أو حدث أو تحديث للوصفة، إذا المتوفرة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
الفئة | اختياري | تمثّل هذه السمة فئة الوصفة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 45 حرفًا (النص الذي طويلة جدًا قد تظهر علامات حذف) |
الوصف | اختياري | تمثل هذه السمة وصف الوصفة. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 90 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
ملاحظة: يتم عرض جميع التقييمات باستخدام نظام تقييم عادي بالنجوم | |||
التقييم - الحد الأقصى للقيمة | اختياري | تمثّل هذه السمة القيمة القصوى لمقياس التقييم. يجب تقديمه إذا كانت القيمة الحالية للتقييم هي أيضًا المقدَّمة |
العدد >= 0.0 |
التقييم - القيمة الحالية | اختياري | القيمة الحالية لمقياس التقييم. يجب تقديمه إذا كانت قيمة الحد الأقصى للتقييم أيضًا هي المقدَّمة |
العدد >= 0.0 |
التقييم - العدد | اختياري | تمثّل هذه السمة عدد تقييمات الوصفة. ملاحظة: يُرجى إدخال هذا الحقل إذا كان تطبيقك يريد. للتحكم في كيفية عرضه للمستخدمين. تقديم السلسلة الموجزة التي يمكن عرضها للمستخدم. على سبيل المثال، إذا كان العد 1000000، ضع في اعتبارك استخدام اختصارات مثل 1M، بحيث لا تم اقتطاعه على أحجام العرض الأصغر. |
سلسلة |
التقييم - قيمة العدد | اختياري | تمثّل هذه السمة عدد تقييمات الوصفة. ملاحظة: يُرجى إدخال هذا الحقل إذا كنت لا تريد التعامل مع هذا الحقل. منطق عرض اختصار العرض بنفسك. إذا كانت قيمة العدّ والعدد موجودة، سنستخدم العدد لعرضه للمستخدمين |
الصيغة الطويلة |
FoodShoppingCart
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
معرّف الموارد المنتظم (URI) الحركة | مطلوب |
الرابط لصفحة في التطبيق إلى سلّة التسوّق في تطبيق الشريك. ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. الاطّلاع على هذه الأسئلة الشائعة |
معرّف موارد منتظم (URI) |
عدد العناصر | مطلوب | عدد السلع (وليس فقط عدد المنتجات) في حملة التسوّق عربة التسوق. على سبيل المثال: إذا كان هناك 3 برتقال وتفاحة واحدة في سلة التسوق، يجب أن يكون هذا الرقم 4. |
عدد صحيح >= 1 |
العنوان | اختياري | عنوان سلة التسوّق (على سبيل المثال، سلّة التسوّق). إذا لم يقدّم المطوِّر أي عنوان، ستظهر سلّة التسوّق. هو الخيار التلقائي. |
حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 25 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
نص الإجراء | اختياري |
نص عبارة الحث على اتخاذ إجراء للزر في سلة التسوق (على سبيل المثال، حقيبة التسوّق). إذا لم يوفّر المطوّر نص إجراء، عرض سلة التسوّق هو الخيار التلقائي. تتوفّر هذه السمة في الإصدار 1.1.0 والإصدارات اللاحقة. |
سلسلة |
صور سلة التسوّق | اختياري | صور لكل منتج في سلة التسوّق. يمكن تقديم ما يصل إلى 10 صور حسب الأولوية؛ الـ يعتمد العدد الفعلي للصور المعروضة على شكل الجهاز |
راجِع مواصفات الصور للحصول على إرشادات. |
تصنيفات العناصر | اختياري | قائمة تصنيفات السلع في قائمة التسوّق. العدد الفعلي للتصنيفات المعروضة تعتمد على شكل الجهاز. |
قائمة التصنيفات النصية المجانية حجم النص الموصى به: أقل من 20 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
DisplayTimeWindow (اختياري) - تحديد فترة زمنية لعرض المحتوى في نتائج البحث | |||
الطابع الزمني للبدء | اختياري |
الطابع الزمني للحقبة الذي يجب أن يظهر المحتوى بعده على السطح. وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض. |
الطابع الزمني للحقبة بالمللي ثانية |
الطابع الزمني للانتهاء | اختياري |
الطابع الزمني للحقبة الذي لن يظهر المحتوى بعده السطح. وإذا لم يتم ضبط السياسة، سيكون المحتوى مؤهلاً للظهور على مساحات العرض. |
الطابع الزمني للحقبة بالمللي ثانية |
FoodShoppingList
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
معرّف الموارد المنتظم (URI) الحركة | مطلوب |
الرابط لصفحة في التطبيق إلى قائمة التسوّق في تطبيق الشريك ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة. |
معرّف موارد منتظم (URI) |
عدد العناصر | مطلوب | عدد السلع في قائمة التسوّق | عدد صحيح >= 1 |
العنوان | اختياري |
عنوان القائمة (على سبيل المثال، قائمة البقالة). إذا لم يوفّر المطوّر أي عنوان، قائمة التسوّق هي الخيار التلقائي. |
حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 25 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
تصنيفات العناصر | مطلوب | قائمة تصنيفات السلع في قائمة التسوّق. يجب تقديم تصنيف واحد على الأقل، ويمكن إضافة ما يصل إلى 10 تصنيفات. يتم تقديمها حسب الأولوية؛ العدد الفعلي للتصنيفات المعروضة تعتمد على شكل الجهاز. |
قائمة التصنيفات النصية المجانية حجم النص الموصى به: أقل من 20 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
FoodReorderCluster
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
معرّف الموارد المنتظم (URI) الحركة | مطلوب |
الرابط لصفحة في التطبيق المطلوب إعادة ترتيبه في تطبيق الشريك. ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. يُرجى مراجعة هذه الأسئلة الشائعة. |
معرّف موارد منتظم (URI) |
نص الإجراء | اختياري |
نص عبارة الحث على اتخاذ إجراء للزر في إعادة الترتيب (على سبيل المثال، اطلب مرة أخرى). إذا لم يوفّر المطوّر نص إجراء، يكون خيار إعادة الترتيب هو الخيار التلقائي. تتوفّر هذه السمة في الإصدار 1.1.0 والإصدارات اللاحقة. |
سلسلة |
عدد العناصر | مطلوب |
عدد السلع (وليس فقط عدد المنتجات) في الفترة السابقة طلبك. على سبيل المثال: إذا كان هناك 3 أنواع قهوة صغيرة وكرواسون واحد في للطلب السابق، يجب أن يكون هذا الرقم 4. |
عدد صحيح >= 1 |
العنوان | مطلوب | عنوان العنصر المُعاد ترتيبه. | حقل التعبئة النصّية الحرّة حجم النص الموصى به: أقل من 40 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
تصنيفات العناصر | اختياري (إذا لم يتم تقديمه، يجب تقديم صور الملصق) |
تمثّل هذه السمة تصنيفات العناصر للطلب السابق. يمكن تقديم ما يصل إلى 10 تصنيفات حسب الأولوية؛ الـ يعتمد العدد الفعلي للتصنيفات المعروضة على شكل الجهاز |
قائمة النصوص الحرة حجم النص المقترَح لكل تصنيف: أقل من 20 حرفًا (قد تظهر علامات حذف في النص الطويل جدًا.) |
صور الملصق | اختياري (يجب تقديم تصنيفات السلع إذا لم يتمّ توفيرها) |
صور للسلع في الطلب السابق يمكن تقديم ما يصل إلى 10 صور حسب الأولوية؛ الـ يعتمد العدد الفعلي للصور المعروضة على شكل الجهاز |
راجِع مواصفات الصور للحصول على إرشادات. |
مواصفات الصور
في ما يلي المواصفات المطلوبة لمواد عرض الصور:
نسبة العرض إلى الارتفاع | الحد الأدنى لعدد وحدات البكسل | وحدات البكسل المقترَحة |
---|---|---|
مربّع (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) وجدولتها بشكل منتظم أو على أساس حدث (على سبيل المثال، في كل مرة يفتح المستخدم التطبيق أو عندما يضيف المستخدم للتو شيئًا إلى سلة التسوق).
تقع على عاتق "AppEngageFoodClient
" مسؤولية نشر مجموعات الأغذية.
تتوفّر واجهات برمجة التطبيقات التالية لنشر المجموعات في الجهاز العميل:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishFoodShoppingCart
publishFoodShoppingList
publishReorderCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteFoodShoppingCartCluster
deleteFoodShoppingListCluster
deleteReorderCluster
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
السمات التالية:
السمة | المتطلب | الوصف |
---|---|---|
قائمة ProductEntity أو StoreEntity أو RecipeEntity | مطلوب | قائمة بالكيانات التي تشكّل الاقتراحات لهذا الغرض مجموعة الاقتراحات. يجب أن تكون الكيانات الموجودة في المجموعة العنقودية الواحدة متماثلة الكتابة. |
العنوان | مطلوب | عنوان مجموعة الاقتراحات (على سبيل المثال، مجموعة كبيرة التوفيرات في قائمة عيد الشكر). حجم النص الموصى به: أقل من 25 حرفًا (النص الذي يكون طويلة جدًا قد تظهر علامات حذف) |
العنوان الفرعي | اختياري | العنوان الفرعي لمجموعة الاقتراحات. |
معرّف الموارد المنتظم (URI) الحركة | اختياري |
الرابط لصفحة في تطبيق الشريك حيث يمكن للمستخدمين الاطّلاع على قائمة كاملة بالتوصيات. ملاحظة: يمكنك استخدام الروابط لصفحات معيّنة في عملية تحديد المصدر. الاطّلاع على هذه الأسئلة الشائعة |
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Big savings on Thanksgiving menu") .build()) .build())
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Big savings on Thanksgiving menu") .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
الحالية من الشريك المطوّر. - يتم تحليل البيانات من الطلب وتخزينها في "المجموعة المميزة" المعدّلة.
في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.
publishFoodShoppingCart
تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر FoodShoppingCart
.
Kotlin
client.publishFoodShoppingCart( PublishFoodShoppingCartClusterRequest.Builder() .setShoppingCart( FoodShoppingCart.Builder() ... .build()) .build())
Java
client.publishFoodShoppingCart( new PublishFoodShoppingCartClusterRequest.Builder() .setShoppingCart( new FoodShoppingCart.Builder() ... .build()) .build());
عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:
- وستتم إزالة بيانات
FoodShoppingCart
الحالية من الشريك المطوّر. - يتم تحليل البيانات الواردة من الطلب وتخزينها في سلة التسوّق المحدَّثة المجموعة.
في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.
publishFoodShoppingList
تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر FoodShoppingList
.
Kotlin
client.publishFoodShoppingList( PublishFoodShoppingListRequest.Builder() .setFoodShoppingList( FoodShoppingListEntity.Builder() ... .build()) .build())
Java
client.publishFoodShoppingList( new PublishFoodShoppingListRequest.Builder() .setFoodShoppingList( new FoodShoppingListEntity.Builder() ... .build()) .build());
عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:
- وستتم إزالة بيانات
FoodShoppingList
الحالية من الشريك المطوّر. - يتم تحليل البيانات الواردة من الطلب وتخزينها في قائمة التسوق المحدَّثة المجموعة.
في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.
publishReorderCluster
تُستخدَم واجهة برمجة التطبيقات هذه لنشر عنصر FoodReorderCluster
.
Kotlin
client.publishReorderCluster( PublishReorderClusterRequest.Builder() .setReorderCluster( FoodReorderCluster.Builder() ... .build()) .build())
Java
client.publishReorderCluster( new PublishReorderClusterRequest.Builder() .setReorderCluster( new FoodReorderCluster.Builder() ... .build()) .build());
عندما تتلقى الخدمة الطلب، يتم تنفيذ الإجراءات التالية خلال معاملة واحدة:
- وستتم إزالة بيانات
FoodReorderCluster
الحالية من الشريك المطوّر. - يتم تحليل البيانات من الطلب وتخزينها في مجموعة إعادة الترتيب المعدّلة.
في حالة حدوث خطأ، يتم رفض الطلب بأكمله وتكون الحالة الحالية هي وصيانته.
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();
عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من المجموعة المميزة. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.
deleteFoodShoppingCartCluster
تُستخدَم واجهة برمجة التطبيقات هذه لحذف محتوى "مجموعة سلات تسوّق الطعام".
Kotlin
client.deleteFoodShoppingCartCluster()
Java
client.deleteFoodShoppingCartCluster();
عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعة سلات تسوق الطعام. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.
deleteFoodShoppingListCluster
يتم استخدام واجهة برمجة التطبيقات هذه لحذف محتوى "مجموعة قوائم تسوّق الطعام".
Kotlin
client.deleteFoodShoppingListCluster()
Java
client.deleteFoodShoppingListCluster();
عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من مجموعة قوائم تسوُّق الطعام. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.
deleteReorderCluster
تُستخدَم واجهة برمجة التطبيقات هذه لحذف محتوى FoodReorderCluster.
Kotlin
client.deleteReorderCluster()
Java
client.deleteReorderCluster();
عندما تتلقّى الخدمة الطلب، تزيل البيانات الحالية من إعادة ترتيب المجموعة. في حال حدوث خطأ، يتم رفض الطلب بأكمله. ويتم الحفاظ على الحالة الحالية.
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());
عندما تتلقى الخدمة الطلب، تزيل البيانات الحالية من المجموعات العنقودية المطابقة لأنواع المجموعات العنقودية المحددة. يمكن للعملاء اختيار تمرير أحد أو والعديد من أنواع المجموعات العنقودية. في حالة حدوث خطأ، يتم رفض الطلب بأكمله الاحتفاظ بحالته الحالية.
خطأ أثناء المعالجة
ننصحك بشدّة بالاستماع إلى نتيجة المَهمّة من واجهات برمجة التطبيقات الخاصة بالنشر، مثل يمكن اتخاذ إجراء متابعة لاسترداد مهمة ناجحة وإعادة إرسالها.
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()
ويتيح ذلك التواصل من خلال التطبيقات. التي لا تزال حية في الذاكرة.
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_FOOD_SHOPPING_CART
// broadcast is received
// Trigger shopping list cluster publish when PUBLISH_FOOD_SHOPPING_LIST
// broadcast is received
// Trigger reorder cluster publish when PUBLISH_REORDER_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.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_CART));
// Register Shopping List Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_FOOD_SHOPPING_LIST));
// Register Reorder Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.food.service.Intents.ACTION_PUBLISH_REORDER_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.food.PUBLISH_FOOD_SHOPPING_CART" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.food.PUBLISH_REORDER_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.food.PUBLISH_FOOD_SHOPPING_CART
يوصى ببدء مكالمةpublishFoodShoppingCart
عند الاستلام هذا النية.com.google.android.engage.action.food.PUBLISH_FOOD_SHOPPING_LIST
يوصى ببدء مكالمةpublishFoodShoppingList
عند الاستلام هذا النية.com.google.android.engage.action.food.PUBLISH_REORDER_CLUSTER
من المستحسن بدء مكالمةpublishReorderCluster
عند تلقّي هذا والنية.
سير عمل عملية الدمج
للحصول على دليل مفصّل حول التحقّق من الدمج بعد اكتماله، يُرجى مراجعة التفاعل مع سير عمل دمج المطوّرين
الأسئلة الشائعة
يُرجى الاطّلاع على الأسئلة الشائعة حول Engage SDK لمعرفة الأسئلة الشائعة
Contact
معلومات التواصل Engage-developers@google.com إذا كانت هناك لأي أسئلة أثناء عملية الدمج. سيردّ فريقنا عليك في أقرب وقت ممكن. ممكن.
الخطوات التالية
بعد إكمال عملية الدمج هذه، ستكون خطواتك التالية هي التالية:
- إرسال رسالة إلكترونية إلى engagement-developers@google.com وإرفاق حِزمة APK المدمجة والجاهزة للاختبار من قِبل Google.
- ستُجري Google عملية تحقّق وتراجع داخليًا للتأكد من أنّ والتكامل كما هو متوقع. إذا لزم الأمر، ستتواصل معك Google. بأي تفاصيل ضرورية.
- عند اكتمال الاختبار وعدم الحاجة إلى إجراء أي تغييرات، ستتواصل معك Google من أجل يمكنك بدء نشر حزمة APK المعدّلة والمتكاملة على "متجر Play".
- بعد أن تتأكد Google من نشر ملف APK المُعدَّل على "متجر Play" والاقتراح والمحتوى المميّز وسلة التسوّق سيتم نشر مجموعات قوائم التسوّق وإعادة الترتيب وستكون مرئية لكل من المستخدمين.