الإعلانات البينية هي إعلانات بملء الشاشة تغطي واجهة التطبيق إلى أن يغلقه المستخدم. وتُعرض عادةً في نقاط انتقال مناسبة خلال مسار عرض التطبيق، على سبيل المثال بين الأنشطة أو في الوقت الفاصل بين مستويَين في لعبة. وعندما يعرض التطبيق إعلانًا بينيًا، يتمكّن المستخدم من النقر على الإعلان والمتابعة إلى وجهته أو إغلاقه ثم العودة إلى التطبيق. دراسة حالة
يوضّح لك هذا الدليل كيفية دمج الإعلانات البينية في تطبيقات Android وiOS باستخدام حزمة SDK لإعلانات Google على الأجهزة الجوّالة C++.
المتطلبات الأساسية
- أكمِل مقالة البدء.
- (Android فقط) معرفة آلية العمل مع مراجع JNI
jobject
(راجِع نصائح Android JNI)
الاختبار دائمًا باستخدام الإعلانات التجريبية
عند إنشاء تطبيقاتك واختبارها، تأكَّد من استخدام الإعلانات التجريبية بدلاً من إعلانات الإنتاج المنشورة. وقد يؤدي عدم الالتزام بذلك إلى تعليق حسابك.
وأسهل طريقة لتحميل الإعلانات التجريبية هي استخدام رقم تعريف الوحدة الإعلانية الاختبارية للإعلانات البينية الذي يختلف باختلاف النظام الأساسي للجهاز:
- نظام تشغيل Android:
ca-app-pub-3940256099942544/1033173712
- نظام تشغيل iOS:
ca-app-pub-3940256099942544/4411468910
لقد تم ضبطها بشكل خاص لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامها في تطبيقاتك الخاصة أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى التأكد من استبداله برقم تعريف وحدتك الإعلانية قبل نشر تطبيقك.
لمزيد من المعلومات عن آلية عمل الإعلانات التجريبية لحزمة تطوير البرامج (SDK) للإعلانات على الأجهزة الجوّالة، اطّلِع على إعلانات تجريبية.
التنفيذ
الخطوات الرئيسية لدمج الإعلانات البينية هي:
- حمِّل إعلانًا.
- التسجيل للحصول على معاودة الاتصال
- عرض الإعلان والتعامل مع أحداث مراحل نشاطه.
ضبط InterstitialAd
يتم عرض الإعلانات البينية في كائن InterstitialAd
، لذا فإن الخطوة الأولى
لدمج الإعلانات البينية في تطبيقك هي إنشاء
كائن InterstitialAd
وإعداده.
أضِف الرأس التالي إلى رمز C++ لتطبيقك:
#include "firebase/gma/interstial_ad.h"
الإعلان عن عنصر
InterstitialAd
وإنشاء مثيل له:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
يمكنك إعداد المثيل
InterstitialAd
باستخدام البث على طريقة العرض الرئيسي إلى نوعAdParent
. يُعد العرض الرئيسي مرجعًا لنظام التشغيل JNIjobject
للإشارة إلى نظام التشغيل AndroidActivity
أو مؤشّرًا إلىUIView
لنظام التشغيل iOS.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
كبديل للاحتفاظ بالمستقبل كمتغيّر، يمكنك فحص حالة عملية الإعداد بشكل دوري من خلال استدعاء
InitializeLastResult()
على الكائنInterstitialAd
. وقد يكون هذا مفيدًا في تتبع عملية الإعداد في حلقة الألعاب العالمية.// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
لمزيد من المعلومات حول استخدام firebase::Future
، يُرجى الاطّلاع على
استخدام العقود الآجلة لمراقبة حالة اكتمال طلبات
الطريقة.
تحميل إعلان
يتم تحميل الإعلان باستخدام الإجراء LoadAd()
على العنصر InterstitialAd
. تتطلّب طريقة التحميل إعداد
كائن InterstitialAd
، وأن يكون لديك رقم تعريف الوحدة الإعلانية وكائن AdRequest
. يتم عرض السمة firebase::Future
التي يمكنك استخدامها لمراقبة الحالة ونتيجة عملية التحميل.
يوضّح الرمز التالي كيفية تحميل إعلان بعد إعداد InterstitialAd
بنجاح:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
التسجيل للردّ على المكالمات
يجب توسيع فئة FullScreenContentListener
لتلقّي
إشعارات بشأن عرض الإعلانات البينية وأحداث مراحل النشاط. يمكن تسجيل الفئة الفرعية
FullScreenContentListener
المخصَّصة لديك من خلال
InterstitialAd::SetFullScreenContentListener()
، وسيتم تلقّي "ردّ اتصال"
عند عرض الإعلان بنجاح أو غير ناجحة، وكذلك
عند رفضه.
يوضّح الرمز التالي كيفية توسيع الصف ومنحه للإعلان:
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd
هو عنصر يُستخدم لمرة واحدة. وهذا يعني أنه بعد عرض الإعلان البيني، لا يمكن عرضه مرة أخرى. ومن أفضل الممارسات تحميل إعلان بيني آخر بالطريقة OnAdDismissedFullScreenContent()
من
FullScreenContentListener
بحيث يبدأ تحميل الإعلان البيني التالي قريبًا
كحيث يتم إغلاق الإعلان السابق.
عرض الإعلان
يجب عرض الإعلانات البينية أثناء عمليات الإيقاف المؤقت الطبيعية ضمن تدفق التطبيق.
ومن بين المستويات في اللعبة مثال جيد، أو بعد إكمال المستخدم لمهمة معيّنة.
يمكن استخدام FullScreenContentListener
لتحديد وقت عرض الإعلان
بملء الشاشة، كما أنّ المستقبل الذي يعرضه Show()
سيشير أيضًا
عند عرض الإعلان بنجاح.
firebase::Future<void> result = interstitial_ad->Show();
أفضل الممارسات
- فكِّر في ما إذا كانت الإعلانات البينية هي نوع الإعلان المناسب لتطبيقك أم لا.
- تعمل الإعلانات البينية بشكل أفضل في التطبيقات التي تحتوي على نقاط انتقال طبيعية. يتم إنشاء مثل هذه النقطة في نهاية مهمة ضمن تطبيق، مثل مشاركة صورة أو إكمال مستوى لعبة. وبما أن المستخدم يتوقّع حدوث فاصل في الإجراء، من السهل عرض إعلان بيني بدون التأثير سلبًا على تجربته. يُرجى الحرص على مراعاة النقاط في سير عمل تطبيقك والتي ستعرض الإعلانات البينية وكيفية استجابة المستخدم.
- لا تنسَ إيقاف الإجراء مؤقتًا عند عرض إعلان بينيّ.
- هناك عدد من أنواع الإعلانات البينية المختلفة، وهي: الإعلانات النصية والإعلانات المصوّرة وإعلانات الفيديو وغير ذلك. من المهم التأكد من أنه عندما يعرض تطبيقك إعلانًا بينيًا، سيتم أيضًا تعليق استخدامه لبعض الموارد للسماح له بالاستفادة منها. على سبيل المثال، عند إجراء مكالمة لعرض إعلان بيني، تأكّد مؤقتًا من إيقاف أي نتائج صوتية نتجت عن تطبيقك. ويمكنك استئناف تشغيل الأصوات وفقًا لطريقة
OnAdDismissedFullScreenContent
فيFullScreenContentListener
المثبّت الذي سيتم استدعاؤه عند انتهاء المستخدم من التفاعل مع الإعلان. إضافةً إلى ذلك، ننصحك بإيقاف أي مهام حسابية مكثفة (مثل تكرار اللعبة) مؤقتًا أثناء عرض الإعلان. ويضمن ذلك عدم عرض المستخدم الرسومات البطيئة أو غير المتجاوبة أو الفيديو المتقطّع. - اسمح بمدة تحميل كافية.
- من المهم التأكّد من عرض الإعلانات البينية في وقت مناسب، من المهم أيضًا عدم انتظار المستخدم تحميل المحتوى. ويمكن أن يضمن تحميل الإعلان مسبقًا قبل نيتك عرضه أن يكون تطبيقك يحتوي على إعلان بيني مُحمَّل بالكامل في الوقت المناسب لعرض ذلك.
- لا تملأ المستخدم بالإعلانات.
- قد يبدو زيادة معدّل تكرار الإعلانات البينية في تطبيقك طريقة رائعة لزيادة الأرباح، ولكن يمكن أن يؤدي أيضًا إلى خفض تجربة المستخدم وتقليل نسب النقر إلى الظهور. احرص على عدم مقاطعة المستخدمين بشكل متكرر لدرجة عدم توقفهم عن استخدام تطبيقك.
- لا تستخدِم تاريخ انتهاء التحميل في المستقبل لعرض الإعلان البيني.
- يمكن أن يؤدي ذلك إلى تجربة مستخدم سيئة. بدلاً من ذلك، يمكنك تحميل الإعلان مسبقًا قبل أن تحتاج إلى عرضه.
مصادر إضافية
مثال في GitHub
- يمكنك عرض رمز المصدر الخاص بمثال تطبيق البدء السريع في GitHub.
برامج تعليمية للفيديو في "إعلانات Google" على الأجهزة الجوّالة
قصص النجاح
الخطوات التالية
- أنشئ وحدة إعلانية بينية خاصة بك في واجهة مستخدم AdMob إذا لم تكن قد فعلت ذلك بعد.
- اطّلِع على مزيد من المعلومات عن استهداف الإعلانات وإرشادات الإعلانات البينية.