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

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

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

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

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

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

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

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

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

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

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

إعداد 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 لعملية معاودة الاتصال من جهة الخادم. إذا لم يتم ضبط قيمة بيانات مخصّصة، لن تظهر قيمة مَعلمة طلب البحث 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.
    });
};

مراجع إضافية