مواضع الإعلانات

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

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

إعداد حزمة "SDK لإعلانات Google على الأجهزة الجوّالة"

قبل تحميل الإعلانات، عليك إعداد حزمة تطوير البرامج (SDK) لـ "إعلانات Google على الأجهزة الجوّالة" من خلال استدعاء MobileAds.Initialize() مع معاودة الاتصال Action<InitializationStatus>. يجب تنفيذ هذا الإجراء مرة واحدة فقط، ويُفضّل أن يكون ذلك عند تشغيل التطبيق.

using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    ...
    public void Start()
    {
        // Initialize Google Mobile Ads SDK.
        MobileAds.Initialize((initStatus) =>
        {
            // SDK initialization is complete
        });
        ...
    }
}

إنشاء مواضع للإعلانات

تتمثّل الخطوة الأولى في عرض بانر باستخدام &quot;إعلانات Google على الأجهزة الجوّالة&quot; في إنشاء موضع إعلان وإعداده. يمكنك اختيار موضع إعلان من نوع "بانر" أو "إعلان بيني" أو "إعلان مقابل مكافأة" من مواد العرض > "إعلانات Google على الأجهزة الجوّالة" > مواضع الإعلانات في Unity Editor. بعد ذلك، يتم إعداد ثلاثة مواضع إعلانات تجريبية وتصبح جاهزة للاستخدام.

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

إعداد موضع الإعلان

يحتوي كل موضع إعلان على الخصائص التالية:

اسم الموضع
اسم موضع الإعلان: تُستخدَم لتحديد مواضع الإعلانات عند إعداد الإعلانات في مشهد.
شكل الإعلان
إعلانات البانر والإعلانات مقابل مكافأة والإعلانات البينية نوع الإعلان.
رقم تعريف الوحدة الإعلانية
قدِّم رقم تعريف وحدة إعلانات البانر على Android وiOS. يجب تقديم رقم تعريف وحدة إعلانية واحدة على الأقل.
ثابتة في جميع المَشاهد
في حال تحديد هذا الخيار، سيظل البانر معروضًا على الشاشة بغض النظر عن التغييرات في المشهد (وهو السلوك نفسه الذي يوفّره DontDestroyOnLoad).
تم تفعيل ميزة "التحميل التلقائي"
عند وضع علامة في هذا المربّع، سيتم تحميل إعلان تلقائيًا عند تحميل مشهد مرتبط بموضع الإعلان.

تعرض لقطة الشاشة التالية مثالاً على موضع إعلان باسم My Awesome Banner.

إضافة AdGameObject إلى المشهد

يمكنك إضافة AdGameObject إلى تنسيقات البانر أو الإعلانات البينية أو الإعلانات مقابل مكافآت في المشهد باستخدام GameObject > Google Mobile Ads في Unity Editor. اختَر التنسيق لإضافة موضع إعلان إلى المشهد النشط.

بعد إضافة AdGameObject إلى المشهد، سيظهر GameObject يمثّل الإعلان في عرض Hierarchy في Unity Editor.

يمكنك تغيير اسم موضع الإعلان من خلال تغيير اسم GameObject نفسه. تعرض لقطة الشاشة التالية مثالاً على AdGameObject باسم إعلان بانر.

إعدادات AdGameObject

يمكنك ضبط AdGameObject في المشهد من خلال عرض Inspector في إعدادات مكوّن Ad Game Object (Script).

موضع الإعلان

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

إعداد BannerAdGameObject (بانر فقط)

  • الحجم: اختَر حجم البانر الذي تريد استخدامه.
    • توفّر إعلانات البانر التكيّفية الثابتة بعض الخيارات الإضافية:
      • الاتجاه: اختَر اتجاه الجهاز المستخدَم لاحتساب ارتفاع الإعلان.
      • استخدام عرض ملء الشاشة: عند وضع علامة في المربّع، سيشغل البانر عرض ملء الشاشة. يمكنك ضبط النسبة المئوية لعرض الشاشة (من 50 إلى 99%) إذا أزلت العلامة من المربّع بجانب الخيار استخدام عرض ملء الشاشة.
    • تتيح لك مخصّص تحديد عرض البانر وارتفاعه.
  • موضع الإعلان: اختَر الموضع الذي سيتم عرض البانر فيه.

عمليات إعادة الاستدعاء

يمكنك تنفيذ دوال تتوافق مع عمليات معاودة الاتصال بالإعلانات. على سبيل المثال، إذا أردت التعامل مع حالة تعذُّر تحميل إعلان بانر:

  1. أنشئ دالة متوافقة مع ردّ الاتصال الخاص بالإعلان.

    public void OnBannerAdFailedToLoad(string reason) {
        Debug.Log("Banner ad failed to load: " + reason);
    }
    
  2. أرفِق النص البرمجي الذي يحتوي على الدالة أعلاه بأي GameObject في المشهد.

  3. انقر على الزر +، ثم اسحب وأفلِت GameObject الذي أرفقت به النص البرمجي.

  4. اختَر الدالة التي تريد ربطها بوظيفة معاودة الاتصال بالإعلان. بالنسبة إلى عمليات رد الاتصال الخاصة بالإعلانات التي تتضمّن مَعلمات، اختَر الدالة لقبول المتغيّر الديناميكي حتى تتمكّن من الحصول على قيمة المَعلمة من حزمة SDK.

استخدام AdGameObject من النص البرمجي

الحصول على مثيل AdGameObject من النص البرمجي

تحتوي جميع عناصر AdGameObject على طريقة التيسير LoadAd(). سيؤدي ذلك إلى تحميل إعلان يتضمّن AdRequest عاديًا غير مستهدف. لتطبيق الاستهداف، عليك استخدام LoadAd(AdRequest adRequest) باستخدام طلب الإعلان الذي تمّ ضبطه.

للحصول على مثيل من AdGameObject، استخدِم الطريقة التالية لكل تنسيق:

MobileAds.Instance.GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

يحتوي العنصر BannerAdGameObject الذي تم عرضه أيضًا على طريقتَي تسهيل Hide() وShow().

إعلان بيني

MobileAds.Instance.GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

يحتوي العنصر InterstitialAdGameObject الذي تم عرضه على طريقة ملائمة ShowIfLoaded().

تم منح المكافأة

MobileAds.Instance.GetAd<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

يحتوي العنصر RewardedAdGameObject الذي تم عرضه على طريقة ملائمة ShowIfLoaded().

على سبيل المثال، يمكنك الحصول على مثيل من BannerAdGameObject وتحميله كما يلي:

using UnityEngine;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class BannerTestScript : MonoBehaviour
{
    BannerAdGameObject bannerAd;

    void Start()
    {
        bannerAd = MobileAds.Instance
            .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

        bannerAd.LoadAd();
        ...
    }
    ...
}

إذا كان هناك BannerAdGameObject باسم BannerAd، يمكنك الحصول على مثيل له كما يلي:

MobileAds.Instance.GetAd<BannerAdGameObject>("BannerAd");

الوصول إلى عنصر الإعلان الأساسي في AdGameObject

توضّح هذه المقتطفات كيفية الوصول إلى عنصر الإعلان الأساسي المرتبط بـ AdGameObject.

BannerAdGameObject bannerAd = MobileAds.Instance
    .GetAd<BannerAdGameObject>("AD_GAMEOBJECT_NAME");

// Access BannerView object
BannerView bannerView = bannerAd.BannerView;

إعلان بيني

InterstitialAdGameObject interstitialAdGameObject = MobileAds.Instance
    .GetAd<InterstitialAdGameObject>("AD_GAMEOBJECT_NAME");

// Access InterstitialAd object
InterstitialAd interstitialAd = interstitialAdGameObject.InterstitialAd;

تم منح المكافأة

RewardedAdGameObject rewardedAdGameObject = MobileAds.Instance
    .Get<RewardedAdGameObject>("AD_GAMEOBJECT_NAME");

// Access RewardedAd object
RewardedAd rewardedAd = rewardedAdGameObject.RewardedAd;

أمثلة

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

في ما يلي مثال على كيفية ضبط لعبة لتحميل إعلان بيني وعرضه باستخدام AdGameObject.

أضِف InterstitialAdGameObject إلى المشهد وفعِّل ميزة تفعيل التحميل التلقائي، ليتم تحميل الإعلان تلقائيًا عند تحميل المشهد.

بعد ذلك، تأكَّد من إعداد حزمة تطوير البرامج (SDK) على النحو التالي. يُرجى العِلم أنّ ميزة التحميل التلقائي في AdGameObject لن تعمل إذا نسيت إعداد حزمة تطوير البرامج (SDK).

بعد ذلك، اعرض إعلانًا بينيًا بين انتقالات الشاشة من خلال استدعاء الدالة InterstitialAdGameObject.ShowIfLoaded(). يعرض الرمز التالي مثالاً على عرض إعلان بيني بين انتقال المشهد.

using UnityEngine;
using UnityEngine.SceneManagement;

using GoogleMobileAds.Api;
using GoogleMobileAds.Placement;

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAd<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }

    public void OnClickShowGameSceneButton()
    {
        // Display an interstitial ad
        interstitialAd.ShowIfLoaded();

        // Load a scene named "GameScene"
        SceneManager.LoadScene("GameScene");
    }
}

بما أنّك فعّلت ميزة التحميل التلقائي في موضع الإعلان، لن تحتاج إلى طلب إعلان بشكل صريح. عندما يتغيّر المشهد، سيظهر إعلان بيني إذا كان هناك إعلان جاهز.

إذا أردت طلب عرض إعلان يدويًا، عليك إيقاف ميزة التحميل التلقائي من أداة فحص مواضع الإعلانات واستخدام الدالة InterstitialAdGameObject.LoadAd() بدلاً من ذلك. يوضّح مقتطف الرمز التالي كيفية طلب إعلان يدويًا.

public class MainScene : MonoBehaviour
{
    InterstitialAdGameObject interstitialAd;

    void Start()
    {
        interstitialAd = MobileAds.Instance
            .GetAdGameObject<InterstitialAdGameObject>("interstitial");

        MobileAds.Initialize((initStatus) => {
            Debug.Log("MobileAds initialized");

            // Load an interstitial ad after the SDK initialization is complete
            interstitialAd.LoadAd();
        });
    }
    ...
}

التعامل مع حالة زر "مشاهدة إعلان مقابل مكافأة"

في ما يلي مثال على كيفية تفعيل زر "مشاهدة إعلان مقابل مكافأة" باستخدام مواضع الإعلانات.

أضِف عنصر Button GameObject (يُسمى Button في هذا المثال) إلى المشهد، والذي سيتم استخدامه لعرض إعلان مقابل مكافأة. ولن نوفّر هذا الزر إلا عند توفّر إعلان مقابل مكافأة.

في طريقة Start()، غيِّر حالة التفعيل الخاصة بالزر إلى false. سيؤدي ذلك إلى إخفاء الزر من المشهد.

public class MainScene : MonoBehaviour
{
    ...
    void Start()
    {
        GameObject.Find("Button").SetActive(false);
        ...
    }
}

أضِف RewardedAdGameObject إلى المشهد واختَر موضع الإعلان AdMob Demo Rewarded Ad من القائمة المنسدلة.

ضمن قسم Callbacks في RewardedAdGameObject Inspector، انقر على الزر + من On Ad Loaded() لتفعيل إمكانية استدعاء الدالة عند تحميل إعلان مقابل مكافأة.

اسحب عنصر Button GameObject الذي أضفته في الخطوة السابقة وأفلِته في الحقل None (Object). اختَر دالة سيتم استدعاؤها من القائمة المنسدلة. انقر على No Function > GameObject > SetActive(bool)‎، ثم انقر على مربّع الاختيار لكي يتم إرسال true كمعلَمة (يتم استدعاء SetActive(true)).

في قسم "برامج معالجة الأحداث" هذا، يمكنك أيضًا ربط حدث سيتم استدعاؤه عند تشغيل الحدث RewardedAd.OnUserEarnedReward. لمزيد من التفاصيل، يُرجى الاطّلاع على هذا القسم.

بعد ذلك، أنشئ الزر لعرض "إعلان مقابل مكافأة" عند النقر عليه. من قسم On Click() Callbacks في أداة فحص الزر، انقر على الزر + واسحب وأفلت GameObject الخاص بموضع الإعلان مقابل مكافأة (الذي يحمل الاسم Rewarded Ad في هذا المثال) في الحقل None (Object).

بعد ذلك، أرفِق الدالة RewardedAdGameObject.ShowIfLoaded() بمعالجة On Click() الخاصة بالزر.

أخيرًا، لا تنسَ إعداد حزمة تطوير البرامج (SDK). مقتطف الرمز التالي هو الرمز الكامل للمشهد المستخدَم في هذا المثال:

using UnityEngine;

using GoogleMobileAds.Api;

public class MainScene : MonoBehaviour
{
    void Start()
    {
        GameObject.Find("Button").SetActive(false);

        MobileAds.Initialize((initStatus) => {
            Debug.Log("Initialized MobileAds");
        });
    }
}

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

ضبط معاودة الاتصال بالمكافأة في RewardedAdGameObject

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

أنشئ نصًا برمجيًا جديدًا وحدِّد دالة تقبل Reward كمعلَمة على النحو التالي.

using UnityEngine;
using GoogleMobileAds.Api;

class RewardedTestScript : MonoBehaviour {
    ...
    public void OnUserEarnedReward(Reward reward) {
        Debug.Log("OnUserEarnedReward: reward=" +
            reward.Type + ", amount=" + reward.Amount);
    }
    ...
}

أرفِق النص البرمجي RewardedTestScript بأي GameObject (باستثناء Ad Placement GameObject) في المشهد. في هذا المثال، يتم إرفاقها بـ Main Camera GameObject.

أضِف RewardedAdGameObject إلى المشهد. بعد ذلك، ضمن قسم Callbacks في أداة الفحص RewardedAdGameObject، انقر على الزر + في On User Earned Reward (Reward) لتفعيل إمكانية استدعاء الدالة عند منح مكافأة للمستخدم.

اسحب عنصر Main Camera GameObject الذي أضفته في الخطوة السابقة وأفلِته في حقل None (Object). اختَر دالة سيتم استدعاؤها من القائمة المنسدلة. انقر على No Function > RewardedTestScript > OnUserEarnedReward.

بعد تشغيل المشروع ومشاهدة إعلان مقابل مكافأة، سيتم استدعاء RewardedTestScript.OnUserEarnedReward() عندما يحين وقت منحك مكافأة مقابل التفاعل مع الإعلان.