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

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

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

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

المصطلحات

ويشمل هذا الدمج أنواع المجموعات الثلاثة التالية: اقتراحات ومتابعة وفيديوهات مميزة.

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

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

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

      الشكل 1. واجهة المستخدم في "مساحة الترفيه" تعرض مجموعة اقتراحات من شريك واحد
    • الكيان: كائن يمثّل عنصرًا واحدًا في مجموعة. يمكن أن يكون الكيان قائمة تشغيل أو كتابًا مسموعًا أو بودكاست أو غير ذلك. راجِع القسم تقديم بيانات الكيان للحصول على قائمة بأنواع الكيانات المتوافقة.

      الشكل 2. واجهة المستخدم في "مساحة الترفيه" تعرض كيانًا واحدًا ضمن مجموعة اقتراحات شريك واحد
  • تعرض مجموعة متابعة المحتوى الصوتي الذي تفاعل معه مؤخرًا مستخدمون من عدة شركاء من المطوّرين في مجموعة واحدة لواجهة المستخدم. سيُسمح لكل شريك من شركاء المطوّرين ببث 10 كيانات كحدّ أقصى في مجموعة المتابعة.

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

    الشكل 4. واجهة المستخدم في "مساحة الترفيه" تعرض مجموعة مميّزة مع اقتراحات من شركاء متعددين (لا يظهر حاليًا سوى اقتراح واحد).

ما قبل العمل

الحد الأدنى لمستوى واجهة برمجة التطبيقات: 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.0'
}

ملخّص

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

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

نوع المجموعة حدود المجموعة الحدود القصوى لعدد العناصر في المجموعة الواحدة
مجموعة أو مجموعات الاقتراحات 5 على الأكثر 50 كحد أقصى
مجموعة المتابعة 1 كحد أقصى 10 على الأكثر
مجموعة مميّزة 1 كحد أقصى 10 على الأكثر

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

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

  1. MusicAlbumEntity
  2. MusicArtistEntity
  3. MusicTrackEntity
  4. MusicVideoEntity
  5. PlaylistEntity
  6. PodcastSeriesEntity
  7. PodcastEpisodeEntity
  8. LiveRadioStationEntity
  9. AudiobookEntity

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

MusicAlbumEntity

يمثّل الكائن MusicAlbumEntity ألبومًا موسيقيًا (على سبيل المثال، Midnights للفنانة "تايلور سويفت").

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

رابط لصفحة معيّنة في تطبيق مقدّم الخدمة للاطّلاع على تفاصيل حول الألبوم الموسيقي

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

الفنانون مطلوبة قائمة الفنانين المشاركين في الألبوم الموسيقي
تشغيل معرّف الموارد المنتظم (URI) اختياري

رابط لصفحة في التطبيق يبدأ تشغيل الألبوم في تطبيق مقدّم الخدمة

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

الوصف اختياري يجب ألا يزيد عدد الأحرف عن 200 حرف إذا تم توفيرها.
عدد الأغاني اختياري عدد الأغاني في ألبوم الموسيقى
الأنواع الموسيقية اختياري قائمة بأنواع المحتوى في ألبوم الموسيقى
تنسيق الألبوم اختياري

الألبوم (يتضمّن LP وLP المزدوج)

أسطوانة مطوَلة

أغنية منفردة

شريط الأغاني

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

قيمة منطقية تشير إلى ما إذا كان المحتوى فاضحًا أم لا

يجب ضبط القيمة على "صحيح" للعناصر التي تحتوي على مواد فاضحة أو تتضمّن تحذيرًا بشأن مخالفة الوالدَين. تظهر العناصر الفاضحة مع العلامة "E".

تاريخ الإصدار اختياري تاريخ إصدار الألبوم بالمللي ثانية.
المدة اختياري مدة الألبوم بالمللي ثانية.
آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

اكتملت النسبة المئوية للتقدم اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة.

عدد صحيح بين 0 و100

MusicArtistEntity

يمثّل العنصر MusicArtistEntity مُشاهدًا للموسيقى (مثل أديل).

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

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

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

تشغيل معرّف الموارد المنتظم (URI) اختياري

الرابط لصفحة في التطبيق يبدأ تشغيل أغاني الفنّان في تطبيق مقدّم الخدمة.

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

الوصف اختياري يجب ألا يزيد عدد الأحرف عن 200 حرف إذا تم توفيرها.
آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

MusicTrackEntity

يمثّل الكائن MusicTrackEntity مقطعًا موسيقيًا (على سبيل المثال، Yellow للفنانين Coldplay).

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

رابط لصفحة في التطبيق يبدأ تشغيل المقطع الموسيقي في تطبيق مقدّم الخدمة.

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

معرّف الموارد المنتظم (URI) لصفحة المعلومات اختياري

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

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

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

قيمة منطقية تشير إلى ما إذا كان المحتوى فاضحًا أم لا

يجب ضبط القيمة على "صحيح" للعناصر التي تحتوي على مواد فاضحة أو تتضمّن تحذيرًا بشأن مخالفة الوالدَين. تظهر العناصر الفاضحة مع العلامة "E".

آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

اكتملت النسبة المئوية للتقدم اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة.

عدد صحيح بين 0 و100

MusicVideoEntity

يمثّل العنصر MusicVideoEntity فيديو موسيقيًا (مثلاً The Weeknd - Take My Breath (الفيديو الموسيقي الرسمي)).

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

رابط لصفحة في التطبيق يبدأ تشغيل الفيديو الموسيقي في تطبيق مقدّم الخدمة.

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

معرّف الموارد المنتظم (URI) لصفحة المعلومات اختياري

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

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

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

قيمة منطقية تشير إلى ما إذا كان المحتوى فاضحًا أم لا

يجب ضبط القيمة على "صحيح" للعناصر التي تحتوي على مواد فاضحة أو تتضمّن تحذيرًا بشأن مخالفة الوالدَين. تظهر العناصر الفاضحة مع العلامة "E".

آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

اكتملت النسبة المئوية للتقدم اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة.

عدد صحيح بين 0 و100

PlaylistEntity

يمثّل العنصر PlaylistEntity قائمة تشغيل محتوى موسيقي (مثل قائمة تشغيل أفضل 10 أغانٍ في الولايات المتحدة).

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

رابط لصفحة في التطبيق يبدأ تشغيل قائمة تشغيل الموسيقى في تطبيق مقدّم الخدمة.

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

معرّف الموارد المنتظم (URI) لصفحة المعلومات اختياري

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

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

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

قيمة منطقية تشير إلى ما إذا كان المحتوى فاضحًا أم لا

يجب ضبط القيمة على "صحيح" للعناصر التي تحتوي على مواد فاضحة أو تتضمّن تحذيرًا بشأن مخالفة الوالدَين. تظهر العناصر الفاضحة مع العلامة "E".

آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

اكتملت النسبة المئوية للتقدم اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة.

عدد صحيح بين 0 و100

PodcastSeriesEntity

يمثّل العنصر PodcastSeriesEntity سلسلة بودكاست (مثل This American Life).

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

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

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

تشغيل معرّف الموارد المنتظم (URI) اختياري

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

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

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

قيمة منطقية تشير إلى ما إذا كان المحتوى فاضحًا أم لا

يجب ضبط القيمة على "صحيح" للعناصر التي تحتوي على مواد فاضحة أو تتضمّن تحذيرًا بشأن مخالفة الوالدَين. تظهر العناصر الفاضحة مع العلامة "E".

آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

PodcastEpisodeEntity

يمثّل العنصر PodcastEpisodeEntity سلسلة بودكاست (مثل Spark Bird، Episode 754: This American Life).

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

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

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

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

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

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

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

قيمة منطقية تشير إلى ما إذا كان المحتوى فاضحًا أم لا

يجب ضبط القيمة على "صحيح" للعناصر التي تحتوي على مواد فاضحة أو تتضمّن تحذيرًا بشأن مخالفة الوالدَين. تظهر العناصر الفاضحة مع العلامة "E".

الاستماع إلى النوع التالي اختياري

يوصى بها للعناصر في مجموعة المتابعة

TYPE_FOLLOW - استئناف تشغيل عنصر صوتي غير مكتمل

TYPE_NEXT - المتابعة على سلسلة جديدة من سلسلة.

TYPE_NEW - تم إصداره حديثًا.

آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

اكتملت النسبة المئوية للتقدم اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة.

عدد صحيح بين 0 و100

LiveRadioStationEntity

يمثّل الكائن LiveRadioStationEntity محطة إذاعية مباشرة (على سبيل المثال، 98.1 The Preeze).

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

رابط لصفحة في التطبيق يبدأ تشغيل محطة الراديو في تطبيق موفّر الخدمة

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

معرّف الموارد المنتظم (URI) لصفحة المعلومات اختياري

رابط لصفحة في تطبيق مقدّم الخدمة للاطّلاع على تفاصيل حول محطة الراديو

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

التردد اختياري التردّد الذي تبثّ به المحطة الإذاعية (على سبيل المثال، "98.1 FM")
عنوان البرنامج التلفزيوني اختياري البرنامج الحالي الذي يتم تشغيله على محطة الراديو
المضيفون اختياري قائمة مضيفي المحطة الإذاعية
الوصف اختياري يجب ألا يزيد عدد الأحرف عن 200 حرف إذا تم توفيرها.
آخر مرة تفاعل اختياري

يوصى بها للعناصر الموجودة في مجموعة المتابعة. يمكن استخدام هذه البيانات في الترتيب.

بالمللي ثانية من الحقبة

AudiobookEntity

يمثّل الكائن AudiobookEntity كتابًا مسموعًا (على سبيل المثال، الكتاب المسموع بعنوان أن تصبح ميشيل أوباما).

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

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

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

تاريخ النشر اختياري بالمللي ثانية من البداية إذا تم توفيره.
الوصف اختياري يجب ألا يزيد عدد الأحرف عن 200 حرف إذا تم توفيرها.
السعر اختياري حقل التعبئة النصّية الحرّة
المدة اختياري يجب أن تكون قيمة موجبة إذا تم تقديمها.
النوع اختياري تمثّل هذه السمة قائمة بالأنواع المرتبطة بالكتاب.
اسم السلسلة اختياري اسم السلسلة التي ينتمي إليها الكتاب المسموع (على سبيل المثال، هاري بوتر)
فهرس وحدة السلسلة اختياري فهرس الكتاب المسموع في السلسلة، حيث يكون الرقم 1 هو أول كتاب مسموع في السلسلة. على سبيل المثال، إذا كان كتاب Harry Potter and the Prisoner of Azkaban هو الكتاب الثالث في السلسلة، يجب ضبط الكتاب على 3.
متابعة نوع الكتاب اختياري

TYPE_Follow - استئناف في كتاب غير مكتمل.

TYPE_NEXT - المتابعة على سلسلة جديدة من سلسلة.

TYPE_NEW - تم إصداره حديثًا.

مدّة التفاعل الأخيرة مطلوب بشكل مشروط

يجب توفيره عندما يكون العنصر في مجموعة المتابعة.

بالمللي ثانية من الحقبة

النسبة المئوية للتقدّم مطلوب بشكل مشروط

يجب توفيره عندما يكون العنصر في مجموعة المتابعة.

يمكن للكتب المسموعة *التي تم الحصول عليها حديثًا* أن تكون جزءًا من مجموعة "مواصلة القراءة".

يجب أن تكون القيمة أكبر من 0 وأقل من 100.

DisplayTimeWindow: ضبط فترة زمنية لعرض المحتوى على السطح
الطابع الزمني للبدء اختياري

الطابع الزمني للفترة التي يجب بعدها عرض المحتوى على مساحة العرض.

وفي حال تركها بدون ضبط، يكون المحتوى مؤهّلاً للظهور على سطح الفيديو.

بالمللي ثانية من الحقبة

الطابع الزمني للانتهاء اختياري

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

وفي حال تركها بدون ضبط، يكون المحتوى مؤهّلاً للظهور على سطح الفيديو.

بالمللي ثانية من الحقبة

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

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

نسبة العرض إلى الارتفاع المتطلب الحدّ الأدنى لوحدات البكسل وحدات البكسل التي ننصح بها
مربّع (1x1) مطلوبة 300×300 1200 × 1200
أفقي (1.91x1) اختياري 600×314 1200 × 628
العمودية (4×5) اختياري 480×600 960×1200

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

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

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

5120 كيلوبايت

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

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

أمثلة

MusicAlbumEntity musicAlbumEntity =
        new MusicAlbumEntity.Builder()
            .setName(NAME)
             .addPosterImage(new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(960)
                  .setImageWidthInPixel(408)
                  .build())
            .setPlayBackUri("https://play.google/album/play")
            .setInfoPageUri("https://play.google/album/info")
            .setDescription("A description of this album.")
            .addArtist("Artist")
            .addGenre("Genre")
            .addMusicLabel("Label")
            .addContentRating("Rating")
            .setSongsCount(960)
            .setReleaseDateEpochMillis(1633032895L)
            .setDurationMillis(1633L)
            .build();
AudiobookEntity audiobookEntity =
        new AudiobookEntity.Builder()
            .setName("Becoming")
            .addPosterImage(new Image.Builder()
                 .setImageUri(Uri.parse("http://www.x.com/image.png"))
                 .setImageHeightInPixel(960)
                 .setImageWidthInPixel(408)
                  .build())
            .addAuthor("Michelle Obama")
            .addNarrator("Michelle Obama")
            .setActionLinkUri(
               Uri.parse("https://play.google/audiobooks/1"))
            .setDurationMillis(16335L)
            .setPublishDateEpochMillis(1633032895L)
            .setDescription("An intimate, powerful, and inspiring memoir")
            .setPrice("$16.95")
            .addGenre("biography")
            .build();

الخطوة 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("Trending music")
                        .build())
                .build())

Java


client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Trending music")
                        .build())
                .build());

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

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

وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الحفاظ على الحالة الحالية.

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 الحالية من شريك المطوّر.
  • ويتم تحليل البيانات الواردة من الطلب وتخزينها في المجموعة المميّزة المعدّلة.

وفي حال حدوث خطأ، يتم رفض الطلب بالكامل ويتم الحفاظ على الحالة الحالية.

publishContinuationCluster

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

Kotlin


client.publishContinuationCluster(
            PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build())

Java


client.publishContinuationCluster(
            PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    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_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 لتلقّي طلب نشر المحتوى.

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

يجب إعداد 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 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"، سيتم نشر مجموعات الاقتراحات والمميزة ومتابعة وستكون مرئية للمستخدمين.