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


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

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

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

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

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

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

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

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

لمزيد من المعلومات عن آلية عمل الإعلانات الاختبارية لحزمة "SDK لإعلانات Google على الأجهزة الجوّالة"، اطّلِع على مقالة الإعلانات الاختبارية.

التنفيذ

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

  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. عرض الصفحة الرئيسية هو jobject JNI يشير إلى 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، اطّلِع على مقالة استخدام العقود الآجلة لرصد حالة اكتمال طلبات معالجة الطلبات.

تحميل إعلان

يتم تحميل الإعلان باستخدام الطريقة 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 المثبَّت الذي سيتم استدعاؤه عندما ينتهي المستخدم من التفاعل مع الإعلان. بالإضافة إلى ذلك، ننصحك بالتوقف مؤقتًا عن تنفيذ أي مهام حسابية مكثفة (مثل حلقة لعبة) أثناء عرض الإعلان. سيضمن ذلك عدم ظهور رسومات بطيئة أو غير متجاوبة أو فيديو متقطّع للمستخدم.
يجب الانتظار لفترة كافية لتحميل المحتوى.
تمامًا كما أنّه من المهم التأكّد من عرض الإعلانات البينية في وقت مناسب، من المهم أيضًا التأكّد من أنّ المستخدم لا ينتظر loading لتحميلها. يمكن أن يؤدي تحميل الإعلان مسبقًا قبل أن تنوي عرضه إلى ضمان أنّ تطبيقك يحتوي على إعلان بيني محمَّل بالكامل وجاهز للعرض عند حلول وقته.
لا تغمر المستخدم بالإعلانات.
على الرغم من أنّ زيادة معدّل تكرار الإعلانات البينية في تطبيقك قد تبدو كطريقة رائعة لزيادة الأرباح، إلا أنّها يمكن أن تؤدي أيضًا إلى خفض تجربة المستخدم وانخفاض معدّلات النقر إلى المحتوى. تأكَّد من عدم انقطاع عملية استخدام المستخدمين لتطبيقك بشكل متكرر
.
لا تستخدِم المستقبل المرتبط باكتمال التحميل لعرض الإعلان البيني.
يمكن أن يؤدي ذلك إلى ترك انطباع سيئ لدى المستخدم. بدلاً من ذلك، حمِّل الإعلان مسبقًا قبل الحاجة إلى عرضه.

مراجع إضافية

مثال في GitHub

الأدلة التعليمية بالفيديو في "متجر الإعلانات على الأجهزة الجوّالة"

قصص النجاح

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