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

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

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

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

  • أكمِل البدء.
  • (نظام التشغيل Android فقط) الدراية بالعمل باستخدام مراجع JNI jobject (راجِع نصائح Android JNI)

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

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

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

  • نظام تشغيل 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. العرض الرئيسي هو مرجع jobject من JNI لـ 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 للتسويق"

قصص النجاح

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