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


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

يوضّح لك هذا الدليل كيفية دمج الإعلانات البينية في تطبيقات 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

فيديوهات تعليمية حول "منصة Google للتسويق"

قصص النجاح

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