الإعلانات البينية مقابل مكافأة (إصدار تجريبي)

اختيار النظام الأساسي: Android iOS Unity Flutter Android (الإصدار القديم)

الإعلان البيني مقابل مكافأة هو نوع من أشكال الإعلانات المحفَّزة، حيث يمكنك تقديم مكافآت مقابل الإعلانات التي تظهر تلقائيًا خلال الانتقالات الطبيعية داخل التطبيق. وعلى عكس الإعلانات بمكافأة، لا يُطلب من المستخدمين الموافقة على عرض إعلان بيني بمكافأة.

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

قبل المتابعة، عليك إعداد Google Mobile Ads Unity Plugin.

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

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

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

/21775744923/example/interstitial

إعداد Google Mobile Ads Unity Plugin

قبل تحميل الإعلانات، يجب أن يُعدّ تطبيقك Google Mobile Ads Unity Plugin من خلال استدعاء MobileAds.Initialize(). يجب إجراء ذلك مرة واحدة فقط، ويُفضّل أن يكون عند تشغيل التطبيق.

using GoogleMobileAds;
using GoogleMobileAds.Api;

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

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

التنفيذ

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

  1. تحميل "الإعلان البيني مقابل مكافأة"
  2. [اختياري] التحقّق من عمليات معاودة الاتصال من جهة الخادم (SSV)
  3. عرض "الإعلان البيني مقابل مكافأة" مع معاودة الاتصال بالمكافأة
  4. الاستماع إلى أحداث "الإعلان البيني مقابل مكافأة"
  5. تنظيف "الإعلان البيني مقابل مكافأة"
  6. التحميل المُسبق لـ "الإعلان البيني مقابل مكافأة" التالي

تحميل "الإعلان البيني مقابل مكافأة"

يتم تحميل "الإعلان البيني مقابل مكافأة" باستخدام الطريقة الثابتة Load() في فئة RewardedInterstitialAd. تتطلّب طريقة التحميل رقم تعريف وحدة إعلانية وكائن AdManagerAdRequest ومعالج إكمال يتم استدعاؤه عند نجاح تحميل الإعلان أو فشله. يتم توفير كائن RewardedInterstitialAd الذي تم تحميله كمعلَمة في معالج الإكمال. يوضّح المثال أدناه كيفية تحميل RewardedInterstitialAd.


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

  private RewardedInterstitialAd _rewardedInterstitialAd;

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

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

      // create our request used to load the ad.
      var adRequest = new AdManagerAdRequest();
      adRequest.Keywords.Add("unity-admob-sample");

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

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

              _rewardedInterstitialAd = ad;
          });
  }

[اختياري] التحقّق من عمليات معاودة الاتصال من جهة الخادم (SSV)

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

توضّح عينة الرمز البرمجي التالية كيفية ضبط خيارات معاودة الاتصال من جهة الخادم بعد تحميل "الإعلان البيني مقابل مكافأة".

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

        // If the operation completed successfully, no error is returned.
        Debug.Log("Rewarded interstitial ad loaded with response : " +
                   ad.GetResponseInfo());
        
        // Create and pass the SSV options to the rewarded ad.
        var options = new ServerSideVerificationOptions
                              .Builder()
                              .SetCustomData("SAMPLE_CUSTOM_DATA_STRING")
                              .Build()
        ad.SetServerSideVerificationOptions(options);
        
});

إذا أردت ضبط سلسلة المكافأة المخصّصة، عليك إجراء ذلك قبل عرض الإعلان.

عرض "الإعلان البيني مقابل مكافأة" مع معاودة الاتصال بالمكافأة

عند عرض إعلانك، عليك تقديم معاودة اتصال للتعامل مع المكافأة التي يحصل عليها المستخدم. لا يمكن عرض الإعلانات إلا مرة واحدة لكل عملية تحميل. استخدِم طريقة CanShowAd() للتأكّد من أنّ الإعلان جاهز للعرض.

يعرض الرمز البرمجي التالي أفضل طريقة لعرض "إعلان بيني مقابل مكافأة".

public void ShowRewardedInterstitialAd()
{
    const string rewardMsg =
        "Rewarded interstitial ad rewarded the user. Type: {0}, amount: {1}.";

    if (rewardedInterstitialAd != null && rewardedInterstitialAd.CanShowAd())
    {
        rewardedInterstitialAd.Show((Reward reward) =>
        {
            // TODO: Reward the user.
            Debug.Log(String.Format(rewardMsg, reward.Type, reward.Amount));
        });
    }
}

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

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

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

تنظيف "الإعلان البيني مقابل مكافأة"

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

_rewardedInterstitialAd.Destroy();

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

التحميل المُسبق لـ "الإعلان البيني مقابل مكافأة" التالي

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

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

private void RegisterReloadHandler(RewardedInterstitialAd ad)
{
    // Raised when the ad closed full screen content.
    ad.OnAdFullScreenContentClosed += ()
    {
        Debug.Log("Rewarded interstitial ad full screen content closed.");

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

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

مراجع إضافية

  • مثال HelloWorld: هو عملية تنفيذ بسيطة لجميع أشكال الإعلانات.