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

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

يمكنك الاطّلاع على بعض قصص نجاح العملاء: دراسة الحالة 1، دراسة الحالة 2.

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

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

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

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

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

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

Android

ca-app-pub-3940256099942544/1033173712

iOS

ca-app-pub-3940256099942544/4411468910

إعداد 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.
        });
    }
}

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

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

يتم تحميل "إعلان مقابل مكافأة" باستخدام الإجراء الثابت Load() في الفئة RewardedAd. يتم توفير عنصر RewardedAd الذي تم تحميله كمَعلمة في معالج الإكمال. يعرض المثال التالي كيفية تحميل "إعلان مقابل مكافأة":

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

// Send the request to load the ad.
RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd ad, LoadAdError error) =>
{
    if (error != null)
    {
        // The ad failed to load.
        return;
    }
    // The ad loaded successfully.
});

استبدِل AD_UNIT_ID بمعرّف الوحدة الإعلانية.

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

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

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

// Create and pass the SSV options to the rewarded ad.
var options = new ServerSideVerificationOptions
{
    CustomData = ""SAMPLE_CUSTOM_DATA_STRING""
};

rewardedAd.SetServerSideVerificationOptions(options);

استبدِل SAMPLE_CUSTOM_DATA_STRING ببياناتك المخصّصة.

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

عرض "الإعلان مقابل مكافأة" مع استدعاء المكافأة

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

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

if (rewardedAd != null && rewardedAd.CanShowAd())
{
    rewardedAd.Show((Reward reward) =>
    {
        // The ad was showen and the user earned a reward.
    });
}

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

لتخصيص سلوك إعلانك بشكل أكبر، يمكنك ربط عدد من الأحداث في مراحل نشاط الإعلان. يستمع الرمز التالي إلى أحداث الإعلانات:

rewardedAd.OnAdPaid += (AdValue adValue) =>
{
    // Raised when the ad is estimated to have earned money.
};
rewardedAd.OnAdImpressionRecorded += () =>
{
    // Raised when an impression is recorded for an ad.
};
rewardedAd.OnAdClicked += () =>
{
    // Raised when a click is recorded for an ad.
};
rewardedAd.OnAdFullScreenContentOpened += () =>
{
    // Raised when the ad opened full screen content.
};
rewardedAd.OnAdFullScreenContentClosed += () =>
{
    // Raised when the ad closed full screen content.
};
rewardedAd.OnAdFullScreenContentFailed += (AdError error) =>
{
    // Raised when the ad failed to open full screen content.
};

إزالة "الإعلان مقابل مكافأة"

عند الانتهاء من استخدام RewardedAd، تأكَّد من استدعاء الطريقة Destroy() قبل إسقاط مرجعك إليها:

if (rewardedAd != null)
{
    rewardedAd.Destroy();
}

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

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

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

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

rewardedAd.OnAdFullScreenContentClosed += () =>
{
    // Reload the ad so that we can show another as soon as possible.
    var adRequest = new AdRequest();
    RewardedAd.Load("AD_UNIT_ID", adRequest, (RewardedAd ad, LoadAdError error) =>
    {
        // Handle ad loading here.
    });
};

موارد إضافية