الإعلانات بمكافأة

الإعلانات بمكافأة هي إعلانات يملك المستخدمون خيار التفاعل معها مقابل الحصول على مكافآت داخل التطبيق. يوضح لك هذا الدليل كيفية دمج الإعلانات بمكافأة من AdMob في تطبيق Unity. اقرأ بعض قصص نجاح العملاء: دراسة الحالة 1 ، دراسة الحالة 2 .

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

  • البرنامج المساعد Unity 3.16.0 أو أعلى.
  • أكمل ابدأ . من المفترض أن يحتوي تطبيق Unity على المكوّن الإضافي Google Mobile Ads Unity الذي تم استيراده بالفعل.

إنشاء كائن إعلان بمكافأة

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

لتسهيل تكامل الإعلانات باستخدام Unity Editor ، جرب الإصدار التجريبي الجديد من Ad Placements .

using UnityEngine.Events;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine.UI;
using System;
using System.Collections.Generic;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);
    }
}

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

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

تتمثل أسهل طريقة لتحميل الإعلانات التجريبية في استخدام معرفات الوحدة الإعلانية التجريبية المخصصة للإعلانات بمكافأة على Android و iOS:

ذكري المظهر

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

لمزيد من المعلومات حول كيفية عمل الإعلانات الاختبارية لـ SDK لإعلانات الجوال ، راجع الإعلانات الاختبارية .

تحميل إعلان

لتحميل إعلان بمكافأة ، قم باستدعاء طريقة RewardedAd loadAd() . تتطلب هذه الطريقة مثيل AdRequest كوسيطة.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }
}

الأحداث الإعلانية

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

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        string adUnitId;
        #if UNITY_ANDROID
            adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        // Called when an ad request has successfully loaded.
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Called when an ad request failed to load.
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // Called when an ad is shown.
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // Called when an ad request failed to show.
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // Called when the user should be rewarded for interacting with the ad.
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        // Called when the ad is closed.
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdLoaded event received");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToLoad event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdOpening event received");
    }

    public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToShow event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdClosed event received");
    }

    public void HandleUserEarnedReward(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardedAdRewarded event received for "
                        + amount.ToString() + " " + type);
    }
}

يوفر الحدث OnUserEarnedReward حدث خاص. يمرر مثيل للمكافأة Type Amount الذي يصف Reward الممنوحة للمستخدم:

public void HandleUserEarnedReward(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
     MonoBehaviour.print(
          "HandleRewardedAdRewarded event received for "
              + amount.ToString() + " " + type);
}

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

OnAdLoaded
يتم استدعاؤه عند انتهاء تحميل الإعلان.
OnAdFailedToLoad
يتم استدعاؤه عند فشل تحميل أحد الإعلانات. تصف خاصية Message الخاصة بـ AdErrorEventArgs المتوفرة نوع الفشل الذي حدث.
OnAdOpening
يتم استدعاؤه عند عرض الإعلان ، ويغطي شاشة الجهاز. يعد هذا مكانًا جيدًا لإيقاف إخراج الصوت للتطبيق أو حلقة اللعبة مؤقتًا ، إذا لزم الأمر.
OnAdFailedToShow
يتم استدعاؤه عند فشل عرض الإعلان. تصف خاصية Message الخاصة بـ AdErrorEventArgs المتوفرة نوع الفشل الذي حدث.
OnUserEarnedReward
يتم الاستدعاء عندما يجب مكافأة المستخدم على مشاهدة مقطع فيديو. تصف معلمة Reward المكافأة التي سيتم تقديمها للمستخدم.
OnAdClosed
يتم استدعاؤه عند إغلاق إعلان الفيديو بمكافأة بسبب نقر المستخدم على أيقونة الإغلاق أو استخدام زر الرجوع. إذا أوقف تطبيقك مؤقتًا إخراج الصوت أو حلقة اللعبة ، فهذا مكان رائع لاستئنافه.

اعرض الإعلان

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

لعرض إعلان بمكافأة ، تحقق من طريقة IsLoaded() للتحقق من انتهاء التحميل ، ثم اتصل بـ show() . فيما يلي مثال على كيفية القيام بذلك:

private void UserChoseToWatchAd()
{
  if (this.rewardedAd.IsLoaded()) {
    this.rewardedAd.Show();
  }
}

استخدام OnAdClosed للتحميل المسبق للإعلان التالي بمكافأة

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

من أفضل الممارسات تحميل إعلان بمكافأة آخر في حدث إعلان OnAdClosed بحيث يبدأ تحميل الإعلان بمكافأة التالي بمجرد رفض الإعلان السابق:

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void CreateAndLoadRewardedAd()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

...

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        this.CreateAndLoadRewardedAd();
    }
}

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

لتحميل عدة إعلانات بمكافأة ، اتبع الخطوات الموضحة في إنشاء كائن إعلان بمكافأة وتحميل أقسام إعلانية لكل إعلان تنوي تحميله. يوضح مقتطف الشفرة أدناه كيفية تحميل إعلانين بمكافأة في موضعين مختلفين للإعلان.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;
    ...
    public void Start()
    {
        ...

        this.gameOverRewardedAd = CreateAndLoadRewardedAd(adUnitId);
        this.extraCoinsRewardedAd = CreateAndLoadRewardedAd(adUnitId);
    }

    public RewardedAd CreateAndLoadRewardedAd(string adUnitId)
    {
        RewardedAd rewardedAd = new RewardedAd(adUnitId);

        rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        rewardedAd.LoadAd(request);
        return rewardedAd;
    }
}

عينات

  • مثال HelloWorld - الحد الأدنى من تنفيذ جميع أشكال الإعلانات
و

الإعلانات بمكافأة هي إعلانات يملك المستخدمون خيار التفاعل معها مقابل الحصول على مكافآت داخل التطبيق. يوضح لك هذا الدليل كيفية دمج الإعلانات بمكافأة من AdMob في تطبيق Unity. اقرأ بعض قصص نجاح العملاء: دراسة الحالة 1 ، دراسة الحالة 2 .

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

  • البرنامج المساعد Unity 3.16.0 أو أعلى.
  • أكمل ابدأ . من المفترض أن يحتوي تطبيق Unity على المكوّن الإضافي Google Mobile Ads Unity الذي تم استيراده بالفعل.

إنشاء كائن إعلان بمكافأة

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

لتسهيل تكامل الإعلانات باستخدام Unity Editor ، جرب الإصدار التجريبي الجديد من Ad Placements .

using UnityEngine.Events;
using UnityEngine;
using GoogleMobileAds.Api;
using GoogleMobileAds.Common;
using UnityEngine.UI;
using System;
using System.Collections.Generic;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);
    }
}

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

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

تتمثل أسهل طريقة لتحميل الإعلانات التجريبية في استخدام معرفات الوحدة الإعلانية التجريبية المخصصة للإعلانات بمكافأة على Android و iOS:

ذكري المظهر

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

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

لمزيد من المعلومات حول كيفية عمل الإعلانات الاختبارية لـ SDK لإعلانات الجوال ، راجع الإعلانات الاختبارية .

تحميل إعلان

لتحميل إعلان بمكافأة ، قم باستدعاء طريقة RewardedAd loadAd() . تتطلب هذه الطريقة مثيل AdRequest كوسيطة.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        ...

        this.rewardedAd = new RewardedAd(adUnitId);

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }
}

الأحداث الإعلانية

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

using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void Start()
    {
        string adUnitId;
        #if UNITY_ANDROID
            adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        // Called when an ad request has successfully loaded.
        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        // Called when an ad request failed to load.
        this.rewardedAd.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
        // Called when an ad is shown.
        this.rewardedAd.OnAdOpening += HandleRewardedAdOpening;
        // Called when an ad request failed to show.
        this.rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
        // Called when the user should be rewarded for interacting with the ad.
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        // Called when the ad is closed.
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

    public void HandleRewardedAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdLoaded event received");
    }

    public void HandleRewardedAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToLoad event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdOpening(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdOpening event received");
    }

    public void HandleRewardedAdFailedToShow(object sender, AdErrorEventArgs args)
    {
        MonoBehaviour.print(
            "HandleRewardedAdFailedToShow event received with message: "
                             + args.Message);
    }

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleRewardedAdClosed event received");
    }

    public void HandleUserEarnedReward(object sender, Reward args)
    {
        string type = args.Type;
        double amount = args.Amount;
        MonoBehaviour.print(
            "HandleRewardedAdRewarded event received for "
                        + amount.ToString() + " " + type);
    }
}

يوفر الحدث OnUserEarnedReward حدث خاص. يمرر مثيل للمكافأة Type Amount الذي يصف Reward الممنوحة للمستخدم:

public void HandleUserEarnedReward(object sender, Reward args)
{
    string type = args.Type;
    double amount = args.Amount;
     MonoBehaviour.print(
          "HandleRewardedAdRewarded event received for "
              + amount.ToString() + " " + type);
}

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

OnAdLoaded
يتم استدعاؤه عند انتهاء تحميل الإعلان.
OnAdFailedToLoad
يتم استدعاؤه عند فشل تحميل أحد الإعلانات. تصف خاصية Message الخاصة بـ AdErrorEventArgs المتوفرة نوع الفشل الذي حدث.
OnAdOpening
يتم استدعاؤه عند عرض الإعلان ، ويغطي شاشة الجهاز. يعد هذا مكانًا جيدًا لإيقاف إخراج الصوت للتطبيق أو حلقة اللعبة مؤقتًا ، إذا لزم الأمر.
OnAdFailedToShow
يتم استدعاؤه عند فشل عرض الإعلان. تصف خاصية Message الخاصة بـ AdErrorEventArgs المتوفرة نوع الفشل الذي حدث.
OnUserEarnedReward
يتم الاستدعاء عندما يجب مكافأة المستخدم على مشاهدة مقطع فيديو. تصف معلمة Reward المكافأة التي سيتم تقديمها للمستخدم.
OnAdClosed
يتم استدعاؤه عند إغلاق إعلان الفيديو بمكافأة بسبب نقر المستخدم على أيقونة الإغلاق أو استخدام زر الرجوع. إذا أوقف تطبيقك مؤقتًا إخراج الصوت أو حلقة اللعبة ، فهذا مكان رائع لاستئنافه.

اعرض الإعلان

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

لعرض إعلان بمكافأة ، تحقق من طريقة IsLoaded() للتحقق من انتهاء التحميل ، ثم اتصل بـ show() . فيما يلي مثال على كيفية القيام بذلك:

private void UserChoseToWatchAd()
{
  if (this.rewardedAd.IsLoaded()) {
    this.rewardedAd.Show();
  }
}

استخدام OnAdClosed للتحميل المسبق للإعلان التالي بمكافأة

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

من أفضل الممارسات تحميل إعلان بمكافأة آخر في حدث إعلان OnAdClosed بحيث يبدأ تحميل الإعلان بمكافأة التالي بمجرد رفض الإعلان السابق:

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...

    public void CreateAndLoadRewardedAd()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/5224354917";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/1712485313";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        this.rewardedAd = new RewardedAd(adUnitId);

        this.rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        this.rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        this.rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        this.rewardedAd.LoadAd(request);
    }

...

    public void HandleRewardedAdClosed(object sender, EventArgs args)
    {
        this.CreateAndLoadRewardedAd();
    }
}

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

لتحميل عدة إعلانات بمكافأة ، اتبع الخطوات الموضحة في إنشاء كائن إعلان بمكافأة وتحميل أقسام إعلانية لكل إعلان تنوي تحميله. يوضح مقتطف الشفرة أدناه كيفية تحميل إعلانين بمكافأة في موضعين مختلفين للإعلان.

...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private RewardedAd gameOverRewardedAd;
    private RewardedAd extraCoinsRewardedAd;
    ...
    public void Start()
    {
        ...

        this.gameOverRewardedAd = CreateAndLoadRewardedAd(adUnitId);
        this.extraCoinsRewardedAd = CreateAndLoadRewardedAd(adUnitId);
    }

    public RewardedAd CreateAndLoadRewardedAd(string adUnitId)
    {
        RewardedAd rewardedAd = new RewardedAd(adUnitId);

        rewardedAd.OnAdLoaded += HandleRewardedAdLoaded;
        rewardedAd.OnUserEarnedReward += HandleUserEarnedReward;
        rewardedAd.OnAdClosed += HandleRewardedAdClosed;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();
        // Load the rewarded ad with the request.
        rewardedAd.LoadAd(request);
        return rewardedAd;
    }
}

عينات

  • مثال HelloWorld - الحد الأدنى من تنفيذ جميع أشكال الإعلانات