تصمم Google مساحة على الجهاز لتنظيم تطبيقات المستخدمين حسب الفئات وتقديم تجربة غامرة وجديدة تتيح لهم الاطّلاع على محتوى التطبيقات واستكشافه بطريقة مخصصة. توفّر تجربة ملء الشاشة هذه للشركاء المطوّرين فرصة لعرض أفضل محتوى وافٍ في قناة مخصّصة خارج تطبيقاتهم.يتضمّن هذا الدليل تعليمات لشركائنا من المطوّرين حول دمج محتوى المواعدة الخاص بهم، وذلك باستخدام حزمة تطوير البرامج Engage SDK لملء هذه المساحة الجديدة.
تفاصيل عملية الدمج
المصطلحات
ويشمل هذا الدمج أنواع المجموعات الثلاثة التالية: اقتراحات ومميزة ومتابعة.
تعرض مجموعات الاقتراحات اقتراحات مخصّصة للمواعدة من شريك فردي للمطوّرين. يمكن تخصيص هذه الاقتراحات للمستخدم
- يمكن أن تتألف مجموعة الاقتراحات من
ArticleEntity
أوPersonEntity
أوEventEntity
، ولكن لا يمكن أن تتألف من مزيج من أنواع مختلفة من الكيانات.
تأخذ توصياتك البنية التالية:
مجموعة الاقتراحات: عرض واجهة مستخدم يحتوي على مجموعة من الاقتراحات من شريك المطوّرين نفسه.
الكيان: كائن يمثّل عنصرًا واحدًا في مجموعة. يقدم هذا الدمج بعض الكيانات التي قد تظهر باستخدام مجموعة التوصيات:
ArticleEntity: يشير ArticleEntity إلى اقتراح للمحتوى النصي المرتبط بالمواعدة. يتيح عنصر ArticleEntity للمطورين توفير مجموعة متنوعة من محتوى النصوص والصور مع المزيد من بيانات التعريف لتوضيح المعلومات للمستخدمين.
PersonEntity: يمثل PersonEntity شخصًا. يمكن أن تكون الاقتراحات هي تسليط الضوء على شخص في احتمالات المواعدة.
EventEntity: يمثل EventEntity حدثًا يجري في المستقبل. يعد وقت بدء الحدث جزءًا مهمًا من المعلومات التي يجب نقلها إلى المستخدمين.
- يمكن أن تتألف مجموعة الاقتراحات من
تعرض مجموعة متابعة المحتوى الذي تفاعل معه مؤخرًا مستخدمون من عدة شركاء من المطوّرين في مجموعة واحدة لواجهة المستخدم. سيُسمح لكل شريك من المطوّرين ببث 10 كيانات كحد أقصى في مجموعة المتابعة.
يمكن أن يتخذ محتوى المواصلات البنية التالية:
ArticleEntity: يشير ArticleEntity إلى اقتراح للمحتوى النصي المرتبط بالمواعدة. ويمكن استخدام هذا الكيان لتمثيل المقالات الإخبارية غير المكتملة أو المحتوى الآخر الذي يريد المستخدم مواصلة الاطّلاع عليه من حيث توقّف.
EventحجزEntity: يمثل EventحجزEntity: الحجز لفعالية، ويساعد المستخدمين في تتبع حجوزات المواعدة والفعاليات المقبلة أو المستمرة.
مجموعة المميّزة هي عرض واجهة مستخدم تُظهر الصورة الرئيسية
GenericFeaturedEntity
التي تم اختيارها من بين العديد من شركاء المطوّرين في مجموعة واحدة لواجهة المستخدم. هناك مجموعة "مميزة" واحدة تظهر بالقرب من أعلى واجهة المستخدم، مع وضع أولوية أعلى من كل مجموعات الاقتراحات. يُسمح لكل شريك مطوّر ببث كيان واحد من نوع متوافق في "المحتوى المميّز"، مع العديد من الكيانات (التي يُحتمَل أن تكون من أنواع مختلفة) من مطوّري تطبيقات متعددين في المجموعة "المميزة".UniversalfeatureEntity: تختلف GenericFeaturedEntity عن عنصر الاقتراح في أنّه يجب استخدام العنصر المميّز لمحتوى فردي من أهم ما يقدِّمه المطوِّرون ويجب أن تمثّل المحتوى الفردي الأهم الذي سيكون مثيرًا للاهتمام وذا صلة بالمستخدمين.
ما قبل العمل
الحد الأدنى لمستوى واجهة برمجة التطبيقات: 19
إضافة مكتبة com.google.android.play:engage
إلى تطبيقك:
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.4.1'
}
الملخّص
ويعتمد التصميم على تنفيذ خدمة ربط.
تخضع البيانات التي يمكن للعميل نشرها للحدود التالية لأنواع المجموعات المختلفة:
نوع المجموعة | حدود المجموعة | الحدود الدنيا لعدد العناصر في المجموعة الواحدة | الحدود القصوى لعدد العناصر في المجموعة الواحدة |
---|---|---|---|
مجموعة أو مجموعات الاقتراحات | 5 على الأكثر | 5 على الأقل | 25 كحد أقصى (ArticleEntity أو PersonEntity أو
EventEntity ) |
مجموعة المتابعة | 1 كحد أقصى | 1 على الأقل | 10 بُلدان كحدّ أقصى (ArticleEntity أو
EventReservationEntity ) |
مجموعة مميّزة | 1 كحد أقصى | 1 على الأقل | 10 بُلدان كحدّ أقصى (GenericFeaturedEntity ) |
الخطوة 1: تقديم بيانات الكيان
حدّدت حزمة SDK عناصر مختلفة لتمثيل كل نوع عنصر. ندعم الكيانات التالية لفئة المواعدة:
GenericFeaturedEntity
ArticleEntity
PersonEntity
EventEntity
EventReservationEntity
توضّح الرسوم البيانية أدناه السمات والمتطلبات المتاحة لكل نوع.
GenericFeaturedEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
يوري أدنيش | مطلوبة |
رابط لصفحة معيّنة في تطبيق مقدّم الخدمة ملاحظة: يمكنك استخدام الروابط لصفحات في التطبيق من أجل تحديد المصدر. يُرجى الاطّلاع على هذا السؤال الشائع. |
معرّف موارد منتظم (URI) |
صور الملصق | مطلوبة | سنعرض صورة واحدة فقط عند تقديم عدة صور. نسبة العرض إلى الارتفاع التي يُنصح بها هي 16:9. ملاحظة: في حال توفير شارة، يُرجى التأكّد من توفير مساحة آمنة تبلغ 24 وحدة بكسل في الثانية في أعلى وأسفل الصورة |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
العنوان | اختياري | عنوان الكيان. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 50 حرفًا |
الوصف | اختياري | فقرة واحدة من النص لوصف الكيان. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 180 حرفًا |
قائمة الترجمة | اختياري | ما يصل إلى 3 ترجمات، كل عنوان فرعي، سطر واحد من النص. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح لكل عنوان فرعي: 50 حرفًا كحدّ أقصى |
الشارات | اختياري | تكون كل شارة نصًا مجانيًا (15 حرفًا بحد أقصى) أو صورة صغيرة. معالجة خاصة لتجربة المستخدم في أعلى الصورة أو الفيديو، على سبيل المثال، كتراكب شارة على الصورة
|
|
شارة - نص | اختياري | عنوان الشارة ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 15 حرفًا كحد أقصى |
الشارة - صورة | اختياري | صورة صغيرة معالجة خاصة لتجربة المستخدم، مثل تراكب الشارة على الصورة المصغّرة للفيديو/الصورة. ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
فئات المحتوى | اختياري | يُرجى وصف فئة المحتوى في الكيان. | قائمة التعداد راجِع قسم فئة المحتوى للحصول على إرشادات. |
ArticleEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
يوري أدنيش | مطلوبة |
رابط لصفحة معيّنة في تطبيق مقدّم الخدمة ملاحظة: يمكنك استخدام الروابط لصفحات في التطبيق من أجل تحديد المصدر. يُرجى الاطّلاع على هذا السؤال الشائع. |
معرّف موارد منتظم (URI) |
العنوان | مطلوبة | عنوان الكيان. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 50 حرفًا كحد أقصى |
صور الملصق | اختياري | سنعرض صورة واحدة فقط عند تقديم عدة صور. نسبة العرض إلى الارتفاع التي يُنصح بها هي 16:9. ملاحظة: ننصح بشدة باستخدام الصورة. في حال توفير شارة، يُرجى التأكّد من توفير مساحة آمنة تبلغ 24 وحدة بكسل في الثانية في أعلى وأسفل الصورة |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
المصدر - العنوان | اختياري | اسم المؤلف أو المؤسسة أو المبلِّغ | حقل التعبئة النصّية الحرّة حجم النص المقترَح: أقل من 25 حرفًا |
المصدر - الصور | اختياري | صورة للمصدر، مثل المؤلف أو المؤسسة أو المراسل الصحفي | يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
الوصف | اختياري | فقرة واحدة من النص لوصف الكيان. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 180 حرفًا |
قائمة الترجمة | اختياري | ما يصل إلى 3 ترجمات، كل عنوان فرعي، سطر واحد من النص. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح لكل عنوان فرعي: 50 حرفًا كحدّ أقصى |
الشارات | اختياري | تكون كل شارة نصًا مجانيًا (15 حرفًا بحد أقصى) أو صورة صغيرة. معالجة خاصة لتجربة المستخدم في أعلى الصورة أو الفيديو، على سبيل المثال، كتراكب شارة على الصورة
|
|
شارة - نص | اختياري | عنوان الشارة ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 15 حرفًا كحد أقصى |
الشارة - صورة | اختياري | صورة صغيرة معالجة خاصة لتجربة المستخدم، مثل تراكب الشارة على الصورة المصغّرة للفيديو/الصورة. ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
وقت نشر المحتوى | اختياري | يشير هذا إلى الطابع الزمني للفترة بالمللي ثانية من وقت نشر المحتوى أو تعديله في التطبيق. | الطابع الزمني للفترة بالمللي ثانية |
مدّة التفاعل الأخيرة | مطلوب بشروط | الطابع الزمني للفترة بالمللي ثانية عندما تفاعل المستخدِم مع هذا الكيان في المرة الأخيرة. ملاحظة: يجب ملء هذا الحقل إذا كان هذا الكيان جزءًا من مجموعة المتابعة. |
الطابع الزمني للفترة بالمللي ثانية |
النسبة المئوية لمستوى التقدُّم | مطلوب بشروط | النسبة المئوية للمحتوى الكامل الذي شاهده المستخدم حتى الآن. ملاحظة: يجب ملء هذا الحقل إذا كان هذا الكيان جزءًا من مجموعة المتابعة. |
قيمة عدد صحيح تتراوح من 0 إلى 100 ضمنًا. |
فئات المحتوى | اختياري | يُرجى وصف فئة المحتوى في الكيان. | قائمة التعداد راجِع قسم فئة المحتوى للحصول على إرشادات. |
PersonEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
يوري أدنيش | مطلوبة |
رابط لصفحة معيّنة في تطبيق مقدّم الخدمة ملاحظة: يمكنك استخدام الروابط لصفحات في التطبيق من أجل تحديد المصدر. يُرجى الاطّلاع على هذا السؤال الشائع. |
معرّف موارد منتظم (URI) |
الملف الشخصي - الاسم | مطلوبة | اسم الملف الشخصي أو رقم تعريفه، مثل "John Doe" أو "@TeamPixel" وما إلى ذلك | سلسلة حجم النص المقترَح: 50 حرفًا كحد أقصى |
الملف الشخصي - الصورة الرمزية | مطلوبة |
صورة الملف الشخصي أو الصورة الرمزية للمستخدم ملاحظة:يجب أن تكون صورة مربّعة بنسبة عرض إلى ارتفاع 1:1. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
الملف الشخصي - نص إضافي | اختياري | نص مجاني مثل الاسم المعرِّف للملف الشخصي | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 15 حرفًا كحد أقصى |
الملف الشخصي - صورة إضافية | اختياري | صورة صغيرة مثل شارة تمّ التحقّق منها | يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
صورة العنوان | اختياري | سنعرض صورة واحدة فقط عند تقديم عدة صور. نسبة العرض إلى الارتفاع التي يُنصح بها هي 16:9. ملاحظة: ننصح بشدة باستخدام الصورة. في حال توفير شارة، يُرجى التأكّد من توفير مساحة آمنة تبلغ 24 وحدة بكسل في الثانية في أعلى وأسفل الصورة |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
مدى الرواج - العدد | اختياري |
تمثل صورة العنوان. يجب أن تكون مختلفة عن صورة الملف الشخصي. يمكن استخدام هذه السمة في حال توفُّر صورة إضافية للمساعدة في إبراز الشخص مثل العمل الذي يؤديه. ملاحظة: يجب أن تكون الصورة بنسبة عرض إلى ارتفاع 16:9. في حال توفير شارة، يُرجى توفير مساحة آمنة تبلغ 24 وحدة بكسل في الثانية في أعلى وأسفل الصورة |
سلسلة حجم النص المقترَح: 20 حرفًا كحدّ أقصى للعدد + تصنيف مدمج. |
مدى الرواج - قيمة العدد | اختياري | عدد المتابعين أو قيمة الرواج. ملاحظة: قدم قيمة العدد إذا كان تطبيقك لا يريد التعامل مع المنطق بشأن كيفية تحسين عدد كبير لأحجام العرض المختلفة. إذا تم تقديم كل من قيمة "العدد" و"العدد"، سيتم استخدام "العدد". |
الصيغة الطويلة |
مدى الرواج - التصنيف | اختياري | وضح ما هو التصنيف الرواج، مثل "أعجبني". | سلسلة حجم النص المقترَح: 20 حرفًا كحدّ أقصى للعدد + تصنيف مدمج. |
مدى الرواج - المحتوى المرئي | اختياري |
وضّح الغرض من التفاعل. على سبيل المثال، صورة تعرض رمز الإعجاب والرموز التعبيرية يمكنها تقديم أكثر من صورة واحدة، ولكن قد لا يتم عرض جميعها على جميع أشكال الأجهزة. ملاحظة: يجب أن تكون الصورة مربّعة بنسبة عرض إلى ارتفاع 1:1. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
التقييم - الحدّ الأقصى للقيمة | عنصر مطلوب | تمثّل هذه السمة القيمة القصوى لمقياس التقييم. يجب تقديمها في حال تقديم القيمة الحالية للتقييم أيضًا. |
الرقم >= 0.0 |
التقييم - القيمة الحالية | عنصر مطلوب | القيمة الحالية لمقياس التقييم. يجب تقديمها في حال تقديم الحد الأقصى لقيمة التقييم أيضًا. |
الرقم >= 0.0 |
التقييم - العدد | اختياري | تمثّل هذه السمة عدد التقييمات للكيان. ملاحظة: قدِّم هذا الحقل إذا كان تطبيقك يريد التحكّم في كيفية عرضه للمستخدمين. يُرجى تقديم السلسلة الموجزة التي يمكن عرضها للمستخدم. على سبيل المثال، إذا كان العدد 1,000,000، ننصحك باستخدام اختصارات مثل مليون كلمة، لكي لا يتم اقتطاعه عند استخدام أحجام شاشات صغيرة. |
سلسلة |
التقييم - قيمة العدد | اختياري | تمثّل هذه السمة عدد التقييمات للكيان. ملاحظة: أدخِل هذا الحقل إذا كنت لا تريد التعامل مع منطق اختصار العرض بنفسك. في حال وجود كل من قيمة "العدد" و"العدد"، سنستخدم العدد لعرضها للمستخدمين. |
الصيغة الطويلة |
الموقع - البلد | اختياري | البلد الذي يقيم فيه الشخص أو يقدم الخدمة فيه. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - المدينة | اختياري | تمثّل هذه السمة المدينة التي يقع فيها الشخص أو يقدم الخدمة فيه. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - العنوان المعروض | اختياري | وسيعرض للمستخدم العنوان الذي يتواجد فيه الشخص أو يعرضه. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - عنوان الشارع | اختياري | تمثّل هذه السمة عنوان الشارع (إذا كان ذلك منطبقًا) حيث يقع الشخص أو يقدّم الخدمة. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - الولاية | اختياري | الولاية (إن وُجدت) التي يقيم فيها الشخص أو يقدّم الخدمة فيه | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - الرمز البريدي | اختياري | تمثّل هذه السمة الرمز البريدي (إذا كان ذلك منطبقًا) حيث يقع الشخص أو يقدّم الخدمة. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - الحي | اختياري | الحي (إن أمكن) الذي يقع فيه الشخص أو يقدم الخدمة فيه. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الشارات | اختياري |
تكون كل شارة نصًا مجانيًا (15 حرفًا بحد أقصى) أو صورة صغيرة. |
|
شارة - نص | اختياري | عنوان الشارة ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 15 حرفًا كحد أقصى |
الشارة - صورة | اختياري | صورة صغيرة معالجة خاصة لتجربة المستخدم، مثل تراكب الشارة على الصورة المصغّرة للفيديو/الصورة. ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
الوصف | اختياري | فقرة واحدة من النص لوصف الكيان. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 180 حرفًا |
قائمة الترجمة | اختياري | ما يصل إلى 3 ترجمات، كل عنوان فرعي، سطر واحد من النص. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح لكل عنوان فرعي: 50 حرفًا كحدّ أقصى |
فئات المحتوى | اختياري | يُرجى وصف فئة المحتوى في الكيان. | قائمة التعدادات المؤهَّلة
راجِع قسم فئة المحتوى للحصول على إرشادات. |
EventEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
يوري أدنيش | مطلوبة |
رابط لصفحة معيّنة في تطبيق مقدّم الخدمة ملاحظة: يمكنك استخدام الروابط لصفحات في التطبيق من أجل تحديد المصدر. يُرجى الاطّلاع على هذا السؤال الشائع. |
معرّف موارد منتظم (URI) |
العنوان | مطلوبة | عنوان الكيان. | سلسلة حجم النص المقترَح: 50 حرفًا كحد أقصى |
وقت البدء | مطلوبة |
الطابع الزمني للفترة التي يُتوقّع فيها بدء الحدث. ملاحظة: سيتم تمثيل ذلك بالمللي ثانية. |
الطابع الزمني للفترة بالمللي ثانية |
وضع الحدث | مطلوبة | حقل للإشارة إلى ما إذا كانت الفعالية افتراضية أو بالحضور الشخصي أو كليهما. |
التعداد: VIRTUAL أو IN_PERSON أو HYBRID |
صور الملصق | مطلوبة | سنعرض صورة واحدة فقط عند تقديم عدة صور. نسبة العرض إلى الارتفاع التي يُنصح بها هي 16:9. ملاحظة: ننصح بشدة باستخدام الصورة. في حال توفير شارة، يُرجى التأكّد من توفير مساحة آمنة تبلغ 24 وحدة بكسل في الثانية في أعلى وأسفل الصورة |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
الموقع - البلد | مطلوب بشروط | البلد الذي ستقام فيه الفعالية. ملاحظة: هذا الإجراء مطلوب للأحداث التي تحمل IN_PERSON أو HYBRID. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - المدينة | مطلوب بشروط | المدينة التي ينعقد فيها الحدث ملاحظة: هذا الإجراء مطلوب للأحداث التي تحمل IN_PERSON أو HYBRID. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - العنوان المعروض | مطلوب بشروط | تمثّل هذه السمة العنوان أو اسم المكان الذي ستقام فيه الفعالية والذي يجب عرضه للمستخدم. ملاحظة: هذا الإجراء مطلوب للأحداث التي تحمل IN_PERSON أو HYBRID. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - عنوان الشارع | اختياري | تمثّل هذه السمة عنوان الشارع (إذا كان ذلك منطبقًا) للموقع الجغرافي الذي ستقام فيه الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - الولاية | اختياري | تمثّل هذه السمة الولاية أو المقاطعة (إذا كان ذلك منطبقًا) التي تستضيف الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - الرمز البريدي | اختياري | تمثّل هذه السمة الرمز البريدي (إذا كان ذلك منطبقًا) للموقع الجغرافي الذي يستضيف الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - الحي | اختياري | الحي (إذا كان ذلك منطبقًا) الذي يستضيف الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
وقت الانتهاء | اختياري |
الطابع الزمني للفترة التي يكون من المتوقّع فيها انتهاء الحدث ملاحظة: سيتم تمثيل ذلك بالمللي ثانية. |
الطابع الزمني للفترة بالمللي ثانية |
الوصف | اختياري | فقرة واحدة من النص لوصف الكيان. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 180 حرفًا |
قائمة الترجمة | اختياري | ما يصل إلى 3 ترجمات، كل عنوان فرعي، سطر واحد من النص. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح لكل عنوان فرعي: 50 حرفًا كحدّ أقصى |
الشارات | اختياري |
تكون كل شارة نصًا مجانيًا (15 حرفًا بحد أقصى) أو صورة صغيرة. |
|
شارة - نص | اختياري | عنوان الشارة ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 15 حرفًا كحد أقصى |
الشارة - صورة | اختياري | صورة صغيرة معالجة خاصة لتجربة المستخدم، مثل تراكب الشارة على الصورة المصغّرة للفيديو/الصورة. ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
السعر - السعر الحالي | مطلوب بشكل مشروط |
السعر الحالي للتذكرة أو التذكرة الخاصة بالفعالية. يجب توفير هذه السمة إذا تم تقديم سعر يتوسطه خط. |
حقل التعبئة النصّية الحرّة |
السعر - StrikethroughPrice | اختياري | السعر الأصلي للتذكرة أو التذكرة الخاصة بالفعالية. | حقل التعبئة النصّية الحرّة |
وسيلة شرح للسعر | اختياري | وسيلة شرح للسعر لعرض عرض ترويجي أو حدث أو خصم للمشتركين في حال توفّرها. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: أقل من 45 حرفًا (قد يعرض النص الطويل جدًا علامات حذف) |
فئات المحتوى | اختياري | يُرجى وصف فئة المحتوى في الكيان. | قائمة التعدادات المؤهَّلة
راجِع قسم فئة المحتوى للحصول على إرشادات. |
EventReservationEntity
السمة | المتطلب | الوصف | التنسيق |
---|---|---|---|
يوري أدنيش | مطلوبة |
رابط لصفحة معيّنة في تطبيق مقدّم الخدمة ملاحظة: يمكنك استخدام الروابط لصفحات في التطبيق من أجل تحديد المصدر. يُرجى الاطّلاع على هذا السؤال الشائع. |
معرّف موارد منتظم (URI) |
العنوان | مطلوبة | عنوان الكيان. | سلسلة حجم النص المقترَح: 50 حرفًا كحد أقصى |
وقت البدء | مطلوبة |
الطابع الزمني للفترة التي يُتوقّع فيها بدء الحدث. ملاحظة: سيتم تمثيل ذلك بالمللي ثانية. |
الطابع الزمني للفترة بالمللي ثانية |
وضع الحدث | مطلوبة | حقل للإشارة إلى ما إذا كانت الفعالية افتراضية أو بالحضور الشخصي أو كليهما. |
التعداد: VIRTUAL أو IN_PERSON أو HYBRID |
الموقع - البلد | مطلوب بشروط | البلد الذي ستقام فيه الفعالية. ملاحظة: هذا الإجراء مطلوب للأحداث التي تحمل IN_PERSON أو HYBRID. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - المدينة | مطلوب بشروط | المدينة التي ينعقد فيها الحدث ملاحظة: هذا الإجراء مطلوب للأحداث التي تحمل IN_PERSON أو HYBRID. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - العنوان المعروض | مطلوب بشروط | تمثّل هذه السمة العنوان أو اسم المكان الذي ستقام فيه الفعالية والذي يجب عرضه للمستخدم. ملاحظة: هذا الإجراء مطلوب للأحداث التي تحمل IN_PERSON أو HYBRID. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - عنوان الشارع | اختياري | تمثّل هذه السمة عنوان الشارع (إذا كان ذلك منطبقًا) للموقع الجغرافي الذي ستقام فيه الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع - الولاية | اختياري | تمثّل هذه السمة الولاية أو المقاطعة (إذا كان ذلك منطبقًا) التي تستضيف الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - الرمز البريدي | اختياري | تمثّل هذه السمة الرمز البريدي (إذا كان ذلك منطبقًا) للموقع الجغرافي الذي يستضيف الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
الموقع الجغرافي - الحي | اختياري | الحي (إذا كان ذلك منطبقًا) الذي يستضيف الفعالية. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: 20 حرفًا تقريبًا |
صور الملصق | اختياري | سنعرض صورة واحدة فقط عند تقديم عدة صور. نسبة العرض إلى الارتفاع التي يُنصح بها هي 16:9. ملاحظة: ننصح بشدة باستخدام الصورة. في حال توفير شارة، يُرجى التأكّد من توفير مساحة آمنة تبلغ 24 وحدة بكسل في الثانية في أعلى وأسفل الصورة |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
وقت الانتهاء | اختياري |
الطابع الزمني للفترة التي يكون من المتوقّع فيها انتهاء الحدث ملاحظة: سيتم تمثيل ذلك بالمللي ثانية. |
الطابع الزمني للفترة بالمللي ثانية |
مقدِّم الخدمة - الاسم | اختياري |
اسم مقدّم الخدمة ملاحظة: يُطلب توفير نص أو صورة لمقدّم الخدمة. |
نص حُرّ على سبيل المثال، اسم منظم الفعالية/جولة |
مقدم الخدمة - صورة | اختياري |
شعار/صورة مقدّم الخدمة ملاحظة: يُطلب توفير نص أو صورة لمقدّم الخدمة. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
الوصف | اختياري | فقرة واحدة من النص لوصف الكيان. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 180 حرفًا |
قائمة الترجمة | اختياري | ما يصل إلى 3 ترجمات، كل عنوان فرعي، سطر واحد من النص. ملاحظة: سيتم عرض إما قائمة الوصف أو الترجمة للمستخدم، وليس كليهما. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح لكل عنوان فرعي: 50 حرفًا كحدّ أقصى |
الشارات | اختياري |
تكون كل شارة نصًا مجانيًا (15 حرفًا بحد أقصى) أو صورة صغيرة. |
|
شارة - نص | اختياري | عنوان الشارة ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
حقل التعبئة النصّية الحرّة حجم النص المقترَح: 15 حرفًا كحد أقصى |
الشارة - صورة | اختياري | صورة صغيرة معالجة خاصة لتجربة المستخدم، مثل تراكب الشارة على الصورة المصغّرة للفيديو/الصورة. ملاحظة: يجب إضافة نص أو صورة إلى الشارة. |
يمكنك الاطّلاع على مواصفات الصور للحصول على إرشادات. |
رقم تعريف الحجز | اختياري | رقم تعريف الحجز لحجز الحدث. | حقل التعبئة النصّية الحرّة |
السعر - السعر الحالي | مطلوب بشكل مشروط |
السعر الحالي للتذكرة أو التذكرة الخاصة بالفعالية. يجب توفير هذه السمة إذا تم تقديم سعر يتوسطه خط. |
حقل التعبئة النصّية الحرّة |
السعر - StrikethroughPrice | اختياري | السعر الأصلي للتذكرة أو التذكرة الخاصة بالفعالية. | حقل التعبئة النصّية الحرّة |
وسيلة شرح للسعر | اختياري | وسيلة شرح للسعر لعرض عرض ترويجي أو حدث أو خصم للمشتركين في حال توفّرها. | حقل التعبئة النصّية الحرّة حجم النص المقترَح: أقل من 45 حرفًا (قد يعرض النص الطويل جدًا علامات حذف) |
التقييم - الحدّ الأقصى للقيمة | اختياري | تمثّل هذه السمة القيمة القصوى لمقياس التقييم. يجب تقديمها في حال تقديم القيمة الحالية للتقييم أيضًا. |
الرقم >= 0.0 |
التقييم - القيمة الحالية | اختياري | القيمة الحالية لمقياس التقييم. يجب تقديمها في حال تقديم الحد الأقصى لقيمة التقييم أيضًا. |
الرقم >= 0.0 |
التقييم - العدد | اختياري | تمثّل هذه السمة عدد تقييمات الفعالية. ملاحظة: قدِّم هذا الحقل إذا كان تطبيقك يريد التحكّم في كيفية عرضه للمستخدمين. يُرجى تقديم السلسلة الموجزة التي يمكن عرضها للمستخدم. على سبيل المثال، إذا كان العدد 1,000,000، ننصحك باستخدام اختصارات مثل مليون كلمة، لكي لا يتم اقتطاعه عند استخدام أحجام شاشات صغيرة. |
سلسلة |
التقييم - قيمة العدد | اختياري | تمثّل هذه السمة عدد تقييمات الفعالية. ملاحظة: أدخِل هذا الحقل إذا كنت لا تريد التعامل مع منطق اختصار العرض بنفسك. في حال وجود كل من قيمة "العدد" و"العدد"، سنستخدم العدد لعرضها للمستخدمين. |
الصيغة الطويلة |
فئات المحتوى | اختياري | يُرجى وصف فئة المحتوى في الكيان. | قائمة التعدادات المؤهَّلة
راجِع قسم فئة المحتوى للحصول على إرشادات. |
مواصفات الصور
يتضمّن هذا الجدول المواصفات المطلوبة لمواد عرض الصور:
نسبة العرض إلى الارتفاع | الحدّ الأدنى لوحدات البكسل | وحدات البكسل التي ننصح بها |
---|---|---|
مربّع (1x1) الخيار المفضّل |
300×300 | 1200 × 1200 |
أفقي (1.91x1) | 600×314 | 1200 × 628 |
العمودية (4×5) | 480×600 | 960×1200 |
يجب استضافة الصور على شبكات توصيل المحتوى (CDN) العامة لكي تتمكّن Google من الوصول إليها.
تنسيقات الملفات
PNG أو JPG أو GIF ثابت أو WebP
الحد الأقصى لحجم الملف
5120 كيلوبايت
اقتراحات إضافية
- المساحة الآمنة للصور: ضَع المحتوى المهم في الوسط بحيث يشغل 80% من الصورة.
- استخدِم خلفية شفافة حتى يمكن عرض الصورة بشكل صحيح في إعدادات المظهرَين الداكن والفاتح.
فئة المحتوى
تسمح فئة المحتوى للتطبيقات بنشر محتوى ينتمي إلى فئات متعددة. يؤدي هذا إلى تعيين المحتوى مع بعض الفئات المحددة مسبقًا وهي:
TYPE_EDUCATION
TYPE_SPORTS
TYPE_MOVIES_AND_TV_SHOWS
TYPE_BOOKS
TYPE_AUDIOBOOKS
TYPE_MUSIC
TYPE_DIGITAL_GAMES
TYPE_TRAVEL_AND_LOCAL
TYPE_HOME_AND_AUTO
TYPE_BUSINESS
TYPE_NEWS
TYPE_FOOD_AND_DRINK
TYPE_SHOPPING
TYPE_HEALTH_AND_FITENESS
TYPE_MEDICAL
TYPE_PARENTING
TYPE_DATING
يجب استضافة الصور على شبكات توصيل المحتوى (CDN) العامة لكي تتمكّن Google من الوصول إليها.
إرشادات استخدام فئات المحتوى
- تُعد بعض الكيانات مثل ArticleEntity وGenericFeaturedEntity مؤهلة لاستخدام أي من فئات المحتوى. بالنسبة إلى الكيانات الأخرى، مثل EventEntity وEventحجزEntity وPersonEntity، فإن مجموعة فرعية فقط من هذه الفئات مؤهَّلة. تحقق من قائمة الفئات المؤهلة لنوع كيان قبل تعبئة القائمة.
استخدم نوع الكيان المحدد لبعض فئات المحتوى بدلاً من مجموعة من الكيانات العامة وContentCategory:
- TYPE_VIDEOS_AND_TV_SHOWS - يمكنك الاطّلاع على الكيانات في مشاهدة دليل الدمج قبل استخدام العناصر العامة.
- TYPE_DOCUMENT - راجع EbookEntity قبل استخدام العناصر العامة.
- TYPE_AUDIO Books - راجِع AudiobookEntity قبل استخدام الكيانات العامة.
- TYPE_SHOPPING: يُرجى مراجعة ShoppingEntity قبل استخدام الكيانات العامة.
- TYPE_FOOD_AND_DRINK - يمكنك الاطّلاع على الكيانات في دليل دمج الطعام قبل استخدام الكيانات العامة.
يعد حقل ContentCategory اختياريًا ويجب تركه فارغًا إذا كان المحتوى لا ينتمي إلى أي من الفئات المذكورة سابقًا.
في حال توفير عدة فئات محتوى، قدِّمها بالترتيب حسب صلتها بالمحتوى مع وضع فئة المحتوى الأكثر صلة في المرتبة الأولى في القائمة.
الخطوة 2: توفير بيانات المجموعة
من المستحسن تنفيذ مهمة نشر المحتوى في الخلفية (على سبيل المثال، باستخدام WorkManager) وتحديد موعدها بشكل منتظم أو على أساس حدث (على سبيل المثال، في كل مرة يفتح فيها المستخدم التطبيق أو عندما يضيف شيئًا إلى سلة التسوق).
AppEngagePublishClient
مسؤول عن نشر المجموعات.
هناك واجهات برمجة التطبيقات التالية لنشر المجموعات في البرنامج:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
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
عنصرًا.
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
عندما تتلقى الخدمة الطلب، يتم اتخاذ الإجراءات التالية ضمن معاملة واحدة:
- تمت إزالة بيانات
RecommendationCluster
الحالية من شريك المطوّر. - يتم تحليل البيانات الواردة من الطلب وتخزينها في مجموعة الاقتراحات المعدّلة.
وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الحفاظ على الحالة الحالية.
publishFeaturedCluster
يتم استخدام واجهة برمجة التطبيقات هذه لنشر قائمة تضم FeaturedCluster
عنصرًا.
Kotlin
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishFeaturedCluster( new PublishFeaturedClustersRequest.Builder() .addFeaturedCluster( new FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
عندما تتلقى الخدمة الطلب، يتم اتخاذ الإجراءات التالية ضمن معاملة واحدة:
- تمت إزالة بيانات
FeaturedCluster
الحالية من شريك المطوّر. - ويتم تحليل البيانات الواردة من الطلب وتخزينها في المجموعة المميّزة المعدّلة.
وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الحفاظ على الحالة الحالية.
publishContinuationCluster
يتم استخدام واجهة برمجة التطبيقات هذه لنشر عنصر ContinuationCluster
.
Kotlin
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishContinuationCluster( new PublishContinuationClusterRequest.Builder() .setContinuationCluster( new ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
عندما تتلقى الخدمة الطلب، يتم اتخاذ الإجراءات التالية ضمن معاملة واحدة:
- تمت إزالة بيانات
ContinuationCluster
الحالية من شريك المطوّر. - يتم تحليل البيانات من الطلب وتخزينها في مجموعة المتابعة المحدثة.
وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الحفاظ على الحالة الحالية.
publishUserAccountManagementRequest
تُستخدم واجهة برمجة التطبيقات هذه لنشر بطاقة تسجيل الدخول . يوجّه إجراء تسجيل الدخول المستخدمين إلى صفحة تسجيل الدخول في التطبيق حتى يتمكّن التطبيق من نشر المحتوى (أو تقديم محتوى مخصّص أكثر)
تشكّل البيانات الوصفية التالية جزءًا من بطاقة تسجيل الدخول -
السمة | المتطلب | الوصف |
---|---|---|
يوري أدنيش | عنصر مطلوب | رابط لموضع معيّن يؤدي إلى إجراء (أي الانتقال إلى صفحة تسجيل الدخول إلى التطبيق) |
صورة | اختياري: يجب تقديم العنوان في حال عدم تقديمه. |
الصورة التي تظهر على البطاقة صور بنسبة عرض إلى ارتفاع تبلغ 16x9 بدقة 1264x712 |
العنوان | اختياري - إذا لم يتم توفير الصورة، يجب تقديم الصورة | العنوان على البطاقة |
نص الإجراء | اختياري | النص الذي يظهر في عبارة الحث على اتخاذ إجراء (أي تسجيل الدخول) |
العنوان الفرعي | اختياري | عنوان فرعي اختياري على البطاقة |
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_publishED)، يمكن أن تتجنّب 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_publishED_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();
وعندما تتلقى الخدمة الطلب، تزيل البيانات الحالية من المجموعة المميزة. وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الاحتفاظ بالحالة الحالية.
deleteContinuationCluster
يتم استخدام واجهة برمجة التطبيقات هذه لحذف محتوى مجموعة المتابعة.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
عندما تتلقى الخدمة الطلب، تزيل البيانات الحالية من مجموعة المتابعة. وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الحفاظ على الحالة الحالية.
deleteUserManagementCluster
وتُستخدم واجهة برمجة التطبيقات هذه لحذف محتوى مجموعة UserAccountManagement.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
وعندما تتلقى الخدمة الطلب، تزيل البيانات الحالية من مجموعة UserAccountManagement. في حالة حدوث خطأ، يتم رفض الطلب بالكامل ويتم الاحتفاظ بالحالة الحالية.
deleteClusters
وتُستخدم واجهة برمجة التطبيقات هذه لحذف محتوى نوع مجموعة معين.
Kotlin
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .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
لتلقّي طلب نشر المحتوى.
إن الهدف من أغراض البث بشكل أساسي هو إعادة تفعيل التطبيق وفرض مزامنة البيانات. لم يتم تصميم أغراض البث كي يتم إرسالها بشكل متكرر. ولا يتمّ بدء المراجعة إلّا عندما تحدّد خدمة التفاعل أنّ المحتوى قد يكون قديمًا (على سبيل المثال، منذ أسبوع). بهذه الطريقة، يكون هناك المزيد من الثقة في أن المستخدم يمكن أن يحصل على تجربة محتوى جديدة، حتى إذا لم يتم تنفيذ التطبيق لفترة زمنية طويلة.
يجب إعداد 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 continuation cluster publish when PUBLISH_CONTINUATION 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 Continuation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION)) }
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 continuation cluster publish when PUBLISH_CONTINUATION 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 Continuation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION)); }
- أعلِن بشكل ثابت عن عملية تنفيذ باستخدام علامة
<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.PUBLISH_CONTINUATION" />
</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.PUBLISH_CONTINUATION
يُنصح ببدء مكالمةpublishContinuationCluster
عند تلقّي هذا الهدف.
سير عمل عملية الدمج
للحصول على دليل مفصّل حول التحقّق من عملية الدمج بعد اكتمالها، يُرجى الاطّلاع على خطوات دمج المطوّرين المرتبطة بالتفاعل.
الأسئلة الشائعة
اطّلِع على الأسئلة الشائعة حول التفاعل مع حزمة تطوير البرامج (SDK) للحصول على الأسئلة الشائعة.
Contact
يُرجى التواصل معنا على engagement-developers@google.com إذا كانت لديك أي أسئلة خلال عملية الدمج.
الخطوات التالية
بعد إتمام عملية الدمج هذه، ستكون خطواتك التالية على النحو التالي:
- يمكنك إرسال رسالة إلكترونية إلى engagement-developers@google.com وإرفاق حزمة APK المدمَجة بها الجاهزة للاختبار من Google.
- تُجري Google عملية تحقق وتراجعها داخليًا للتأكد من أنّ عملية الدمج تعمل على النحو المتوقّع. وفي حال الحاجة إلى إجراء أي تغييرات، سيتواصل معك فريق Google لإطلاعك على أي تفاصيل ضرورية.
- عند اكتمال الاختبار وعدم الحاجة إلى إجراء أي تغييرات، تتصل بك Google لإبلاغك بأنّه يمكنك بدء نشر حِزمة APK المعدّلة والمدمجة على متجر Play.
- بعد أن تؤكّد Google نشر حزمة APK المُحدّثة على "متجر Play"، قد يتم نشر مجموعات الاقتراحات والمميزة والمتابعة وجعلها مرئية للمستخدمين.