يوضّح لك هذا الدليل كيفية استخدام ميزة "مواضع الإعلانات" في المكوّن الإضافي "إعلانات Google على الأجهزة الجوّالة" في Unity لإنشاء إعلانات لتطبيقك وعرضها.
المتطلبات الأساسية
الإصدار 2017.4 من Unity أو إصدار أحدث
نزِّل واستورِد الإصدار الأوّلي من مكوّن GMA الإضافي في Unity.
ضبط رقم تعريف تطبيقك على AdMob في Unity Editor
إعداد حزمة "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
});
...
}
}
إنشاء مواضع للإعلانات
تتمثّل الخطوة الأولى في عرض بانر باستخدام "إعلانات Google على الأجهزة الجوّالة" في إنشاء موضع إعلان وإعداده. يمكنك اختيار موضع إعلان من نوع "بانر" أو "إعلان بيني" أو "إعلان مقابل مكافأة" من مواد العرض > "إعلانات 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%) إذا أزلت العلامة من المربّع بجانب الخيار استخدام عرض ملء الشاشة.
- تتيح لك مخصّص تحديد عرض البانر وارتفاعه.
- توفّر إعلانات البانر التكيّفية الثابتة بعض الخيارات الإضافية:
- موضع الإعلان: اختَر الموضع الذي سيتم عرض البانر فيه.
عمليات إعادة الاستدعاء
يمكنك تنفيذ دوال تتوافق مع عمليات معاودة الاتصال بالإعلانات. على سبيل المثال، إذا أردت التعامل مع حالة تعذُّر تحميل إعلان بانر:
أنشئ دالة متوافقة مع ردّ الاتصال الخاص بالإعلان.
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 (باستثناء 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()
عندما يحين وقت منحك مكافأة مقابل التفاعل مع الإعلان.