الإعلانات البينية


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

يوضّح لك هذا الدليل كيفية دمج الإعلانات البينية في تطبيقات Android وiOS باستخدام حزمة تطوير البرامج (SDK) الخاصة بلغة C++‎ في "إعلانات Google على الأجهزة الجوّالة".

المتطلبات الأساسية

اختبار الإعلانات دائمًا باستخدام الإعلانات الاختبارية

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

أسهل طريقة لتحميل الإعلانات الاختبارية هي استخدام رقم تعريف وحدة الإعلانات الاختبارية المخصّصة للإعلانات البينية، والذي يختلف حسب نظام تشغيل الجهاز:

  • نظام تشغيل Android:‏ ca-app-pub-3940256099942544/1033173712
  • نظام تشغيل iOS:‏ ca-app-pub-3940256099942544/4411468910

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

لمزيد من المعلومات عن طريقة عمل الإعلانات الاختبارية في حزمة تطوير البرامج (SDK) لإعلانات الأجهزة الجوّالة، يُرجى الاطّلاع على مقالة الإعلانات الاختبارية.

التنفيذ

في ما يلي الخطوات الرئيسية لدمج الإعلانات البينية:

  1. تحميل إعلان
  2. التسجيل لتلقّي مكالمات ردّ
  3. عرض الإعلان والتعامل مع أحداث مراحل نشاطه

إعداد InterstitialAd

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

  1. أضِف العنوان التالي إلى رمز C++ لتطبيقك:

     #include "firebase/gma/interstial_ad.h"

  2. الإعلان عن كائن InterstitialAd وإنشاؤه:

     firebase::gma::InterstitialAd* interstitial_ad;
     interstitial_ad = new firebase::gma::InterstitialAd();

  3. ابدأ بتهيئة مثيل InterstitialAd باستخدام عملية تحويل نوع العرض الرئيسي إلى النوع AdParent. عرض العنصر الأب هو مرجع JNI jobject إلى Activity Android أو مؤشر إلى 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);
    
  4. كبديل للاحتفاظ بالمستقبل كمتغير، يمكنك التحقّق بشكل دوري من حالة عملية التهيئة عن طريق استدعاء 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، يُرجى الاطّلاع على استخدام Futures لتتبُّع حالة اكتمال طلبات الطرق.

تحميل إعلان

يتم تحميل الإعلان باستخدام الطريقة 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

فيديوهات تعليمية من Mobile Ads Garage

قصص النجاح

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