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

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

يشرح هذا الدليل كيفية دمج الإعلانات البينية في أحد تطبيقات Unity.

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

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

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

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

/6499/example/interstitial

إعداد حزمة تطوير البرامج (SDK) لعرض الإعلانات للأجهزة الجوّالة

قبل تحميل الإعلانات، اطلب من تطبيقك إعداد حزمة تطوير البرامج (SDK) لعرض الإعلانات للأجهزة الجوّالة من خلال استدعاء MobileAds.Initialize(). يجب إجراء ذلك مرة واحدة فقط، ومن المفضّل إجراء ذلك عند إطلاق التطبيق.

using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}

وإذا كنت تستخدِم التوسّط، انتظِر حتى يحدث معاودة الاتصال قبل تحميل الإعلانات، لأنّ ذلك سيضمن إعداد جميع محوِّلات التوسّط.

التنفيذ

الخطوات الأساسية لدمج الإعلانات البينية هي:

  1. تحميل الإعلان البيني
  2. عرض الإعلان البيني
  3. الاستماع إلى أحداث الإعلانات البينية
  4. تنظيف الإعلان البيني
  5. التحميل المسبق للإعلان البيني التالي

تحميل الإعلان البيني

يتم تحميل إعلان بيني باستخدام طريقة Load() الثابتة في فئة InterstitialAd. تتطلب طريقة التحميل رقم تعريف وحدة إعلانية، وكائن AdManagerAdRequest، ومعالج الإكمال الذي يتم استدعاءه عند نجاح تحميل الإعلان أو تعذُّر تحميله. يتم توفير الكائن AdManagerInterstitialAd الذي تم تحميله كمعلمة في معالج الإكمال. يوضح المثال أدناه كيفية تحميل AdManagerInterstitialAd.


  // This ad unit is configured to always serve test ads.
  private string _adUnitId = "/6499/example/interstitial";

  private InterstitialAd _interstitialAd;

  /// <summary>
  /// Loads the interstitial ad.
  /// </summary>
  public void LoadInterstitialAd()
  {
      // Clean up the old ad before loading a new one.
      if (_interstitialAd != null)
      {
            _interstitialAd.Destroy();
            _interstitialAd = null;
      }

      Debug.Log("Loading the interstitial ad.");

      // create our request used to load the ad.
      var adRequest = new AdManagerAdRequest();

      // send the request to load the ad.
      AdManagerInterstitialAd.Load(_adUnitId, adRequest,
          (InterstitialAd ad, LoadAdError error) =>
          {
              // if error is not null, the load request failed.
              if (error != null || ad == null)
              {
                  Debug.LogError("interstitial ad failed to load an ad " +
                                 "with error : " + error);
                  return;
              }

              Debug.Log("Interstitial ad loaded with response : "
                        + ad.GetResponseInfo());

              _interstitialAd = ad;
          });
  }

عرض الإعلان البيني

لعرض إعلان بيني تم تحميله، يمكنك استدعاء طريقة Show() على المثيل AdManagerInterstitialAd. ويمكن عرض الإعلانات مرة واحدة لكل تحميل. استخدِم طريقة CanShowAd() للتحقّق من أنّ الإعلان جاهز للعرض.

/// <summary>
/// Shows the interstitial ad.
/// </summary>
public void ShowInterstitialAd()
{
    if (_interstitialAd != null && _interstitialAd.CanShowAd())
    {
        Debug.Log("Showing interstitial ad.");
        _interstitialAd.Show();
    }
    else
    {
        Debug.LogError("Interstitial ad is not ready yet.");
    }
}

الاستماع إلى أحداث الإعلانات البينية

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

private void RegisterEventHandlers(InterstitialAd interstitialAd)
{
    // Raised when the ad is estimated to have earned money.
    interstitialAd.OnAdPaid += (AdValue adValue) =>
    {
        Debug.Log(String.Format("Interstitial ad paid {0} {1}.",
            adValue.Value,
            adValue.CurrencyCode));
    };
    // Raised when an impression is recorded for an ad.
    interstitialAd.OnAdImpressionRecorded += () =>
    {
        Debug.Log("Interstitial ad recorded an impression.");
    };
    // Raised when a click is recorded for an ad.
    interstitialAd.OnAdClicked += () =>
    {
        Debug.Log("Interstitial ad was clicked.");
    };
    // Raised when an ad opened full screen content.
    interstitialAd.OnAdFullScreenContentOpened += () =>
    {
        Debug.Log("Interstitial ad full screen content opened.");
    };
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += () =>
    {
        Debug.Log("Interstitial ad full screen content closed.");
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);
    };
}

تنظيف الإعلان البيني

عندما تنتهي من استخدام AdManagerInterstitialAd، احرص على استدعاء طريقة Destroy() قبل إسقاط الإشارة إليها:

_interstitialAd.Destroy();

يؤدي ذلك إلى إعلام المكون الإضافي بأن الكائن لم يعد قيد الاستخدام ويمكن استرداد الذاكرة التي يشغلها هذا العنصر. يؤدي عدم طلب هذه الطريقة إلى حدوث تسرُّب للذاكرة.

التحميل المسبق للإعلان البيني التالي

الإعلانات البينية هي عنصر يُستخدم لمرة واحدة. ويعني هذا أنّه بعد عرض الإعلان البيني، لن تتمكّن من استخدام العنصر مرة أخرى. لطلب إعلان بيني آخر، أنشئ كائن AdManagerInterstitialAd جديد.

لإعداد إعلان بيني من أجل فرصة الظهور التالية، عليك تحميل الإعلان البيني مسبقًا بعد زيادة حدث الإعلان OnAdFullScreenContentClosed أو OnAdFullScreenContentFailed.

private void RegisterReloadHandler(InterstitialAd interstitialAd)
{
    // Raised when the ad closed full screen content.
    interstitialAd.OnAdFullScreenContentClosed += ()
    {
        Debug.Log("Interstitial Ad full screen content closed.");

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
    // Raised when the ad failed to open full screen content.
    interstitialAd.OnAdFullScreenContentFailed += (AdError error) =>
    {
        Debug.LogError("Interstitial ad failed to open full screen content " +
                       "with error : " + error);

        // Reload the ad so that we can show another as soon as possible.
        LoadInterstitialAd();
    };
}

أحداث التطبيقات

تتيح لك أحداث التطبيقات إنشاء إعلانات يمكنها إرسال رسائل إلى رمز التطبيق. يمكن للتطبيق بعد ذلك اتخاذ إجراءات بناءً على هذه الرسائل.

يمكنك الاطّلاع على أحداث التطبيقات الخاصة بـ "مدير الإعلانات" باستخدام AppEvent. يمكن أن تقع هذه الأحداث في أيّ وقت خلال دورة حياة الإعلان، حتى قبل طلب التحميل.

namespace GoogleMobileAds.Api.AdManager;

/// The App event message sent from the ad.
public class AppEvent
{
    // Name of the app event.
    string Name;
    // Argument passed from the app event.
    string Value;
}

تزيد قيمة OnAppEventReceived عند وقوع حدث تطبيق في إعلان. فيما يلي مثال على كيفية التعامل مع هذا الحدث في التعليمات البرمجية:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
    Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};

إليك مثال يوضح كيفية تغيير لون خلفية تطبيقك بناءً على حدث تطبيق باسم اللون:

_interstitialAd.OnAppEventReceived += (AppEvent args) =>
{
  if (args.Name == "color")
  {
    Color color;
    if (ColorUtility.TryParseColor(arg.Value, out color))
    {
      gameObject.GetComponent<Renderer>().material.color = color;
    }
  }
};

وإليك تصميم الإعلان المقابل الذي يُرسل حدث تطبيق ملون:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

أفضل الممارسات

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

مصادر إضافية