يوضّح لك هذا الدليل كيفية استخدام ميزة "مواضع الإعلانات" في المكوّن الإضافي "إعلانات Google على الأجهزة الجوّالة" في Unity لإنشاء إعلانات لتطبيقك وعرضها.
المتطلبات الأساسية
Unity 2017.4 أو إصدار أحدث
نزِّل واستورِد الإصدار الأوّلي من مكوّن Unity الإضافي لـ "إعلانات Google على الأجهزة الجوّالة".
اضبط رقم تعريف تطبيقك على AdMob في Unity Editor.
تهيئة إضافة "إعلانات Google على الأجهزة الجوّالة" في Unity
قبل تحميل الإعلانات، عليك إعداد إضافة "إعلانات Google على الأجهزة الجوّالة" في Unity من خلال استدعاء
MobileAds.Initialize()، مع معاودة الاتصال Action<InitializationStatus>. يجب إجراء ذلك مرة واحدة فقط، ويُفضّل عند تشغيل التطبيق.
using GoogleMobileAds.Api;
using System.Collections.Generic;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
...
public void Start()
{
// Initialize Google Mobile Ads Unity Plugin.
MobileAds.Initialize((initStatus) =>
{
// SDK initialization is complete
});
...
}
}
إنشاء مواضع للإعلانات
الخطوة الأولى في عرض بانر باستخدام "إعلانات Google على الأجهزة الجوّالة" هي إنشاء موضع إعلان وإعداده. يمكنك اختيار موضع إعلان من نوع "بانر" أو "إعلان بيني" أو "إعلان مقابل مكافأة" من مواد العرض > إعلانات Google على الأجهزة الجوّالة > مواضع الإعلانات في Unity Editor. بعد ذلك، يتم إعداد ثلاثة مواضع إعلانات تجريبية وتكون جاهزة للاستخدام.

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

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

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

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

إعدادات AdGameObject
يمكنك ضبط AdGameObject في المشهد من خلال عرض Inspector في إعدادات مكوّن Ad Game Object (Script).
- موضع الإعلان
اختَر موضع الإعلان من القائمة المنسدلة لمواضع الإعلان التي تم إعدادها. لن تتضمّن القائمة سوى الوحدات الإعلانية التي تتوافق مع شكل الإعلان المناسب. على سبيل المثال، بالنسبة إلى عناصر ألعاب إعلانات البانر، لن تعرض القائمة المنسدلة سوى مواضع إعلانات البانر التي تم ضبطها.

- إعداد
BannerAdGameObject(البانر فقط)
- الحجم: اختَر حجم البانر الذي تريد استخدامه.
- توفّر إعلانات البانر التكيّفية الثابتة بعض الخيارات الإضافية:
- الاتجاه: اختَر اتجاه الجهاز المستخدَم لاحتساب ارتفاع الإعلان.
- استخدام عرض ملء الشاشة: عند وضع علامة في المربّع، سيشغل البانر عرض ملء الشاشة. يمكنك ضبط النسبة المئوية لعرض الشاشة (من % 50 إلى %99) إذا أزلت العلامة من المربّع بجانب الخيار استخدام عرض ملء الشاشة.
- تتيح لك مخصّص تحديد عرض البانر وارتفاعه.
- توفّر إعلانات البانر التكيّفية الثابتة بعض الخيارات الإضافية:
- موضع الإعلان: اختَر الموضع الذي يجب وضع البانر فيه.
عمليات إعادة الاستدعاء
يمكنك تنفيذ دوال تتوافق مع عمليات معاودة الاتصال بالإعلان. على سبيل المثال، إذا أردت التعامل مع حالة تعذُّر تحميل إعلان بانر، يمكنك اتّباع الخطوات التالية:
أنشئ دالة متوافقة مع دالة ردّ الاتصال الخاصة بالإعلان.
public void OnBannerAdFailedToLoad(string reason) { Debug.Log("Banner ad failed to load: " + reason); }أرفِق النص البرمجي الذي يحتوي على الدالة أعلاه بأي GameObject في المشهد.
انقر على الزر +، ثم اسحب وأفلت GameObject الذي أرفقت به النص البرمجي.

اختَر الدالة التي تريد ربطها بوظيفة معاودة الاتصال بالإعلان. بالنسبة إلى عمليات رد الاتصال الخاصة بالإعلانات التي تتضمّن مَعلمات، اختَر الدالة لقبول المتغيّر الديناميكي حتى تتمكّن من الحصول على قيمة المَعلمة من حزمة 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 (باستثناء GameObject الخاص بموضع الإعلان) في مساحة العرض. في هذا المثال، يتم إرفاقه بـ Main
Camera GameObject.

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

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

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