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


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

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

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

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

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

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

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

مراجع إضافية

مثال في GitHub

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

قصص النجاح

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