يوضِّح لك هذا الدليل كيفية استخدام إضافة "الإعلانات المدمجة مع المحتوى" لتنفيذ هذه الإعلانات في أحد تطبيقات Unity، كما يوضِّح لك بعض الأمور المهمّة التي يجب وضعها في الاعتبار أثناء تنفيذ هذه الإعلانات.
تتطابق الإعلانات المدمجة مع المحتوى مع تجربة المستخدم في الموضع الذي تم وضعها فيها من حيث الشكل والوظيفة. كما أنها تتطابق مع التصميم المرئي للتطبيق الذي يعيش داخله. يتيح شكل الإعلانات المدمجة مع المحتوى في "مدير الإعلانات" للناشرين عرض إعلانات سلسة مع المحتوى. يمكنك استخدام هذه التكنولوجيا لتنفيذ عمليات عرض مخصّصة بدرجة كبيرة تستفيد إلى أقصى حد من الرمز البرمجي الأصلي في تطبيقات Unity.
يتم عرض الإعلانات المدمجة مع المحتوى باستخدام أنواع GameObjects
نفسها التي تستخدمها حاليًا لإنشاء تطبيقاتك، ويمكن تنسيقها بما يتناسب مع التصميم المرئي لتجربة المستخدم التي تعيش فيها. عند تحميل إعلان مدمج مع المحتوى، يتلقّى تطبيقك عنصرًا مدمجًا مع المحتوى يحتوي على مواد العرض الخاصة به، كما يعرضها تطبيق Unity، بدلاً من حزمة تطوير البرامج (SDK).
المتطلبات الأساسية
- الإصدار 7.0.0 من المكوّن الإضافي Unity حول إعلانات Google على الأجهزة الجوّالة أو إصدار أحدث.
- أكمل دليل البدء.
- نزِّل إضافة الإعلانات المدمجة مع المحتوى وثبِّتها.
تحميل أشكال الإعلانات المدمجة مع المحتوى
يتم تحميل الإعلانات المدمجة مع المحتوى من خلال الفئة AdLoader
التي تحتوي على
فئة AdLoader.Builder
خاصة بها لتخصيصها أثناء عملية الإنشاء. تضبط الطريقة ForNativeAd()
أداة AdLoader للتعامل مع الإعلانات المدمجة مع المحتوى.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
التسجيل في أحداث إعلانات AdLoader
ليتم إعلامك عند تحميل إعلان مدمج مع المحتوى بنجاح أو تعذُّر تحميله، أضِف المفوَّضين إلى صف AdLoader
للأحداث المُدرَجة أدناه.
OnNativeAdLoaded
يتم استدعاؤه عند تحميل إعلان مدمج مع المحتوى بنجاح. يجب أن يكون لديك مفوَّض لهذا الحدث للوصول إلى الإعلان الذي تم تحميله.
OnAdFailedToLoad
يتم استدعاؤه عند تعذُّر تحميل إعلان مدمج مع المحتوى.
تحميل الإعلان
بعد الانتهاء من إنشاء AdLoader
، يمكنك استدعاء طريقة LoadAd()
لطلب إعلان:
adLoader.LoadAd(new AdRequest.Builder().Build());
وضع طلب الإعلان معًا
يوضّح مقتطف الرمز أدناه كيفية إنشاء AdLoader
تم ضبطه
لطلب الإعلانات المدمجة مع المحتوى، وإعداد المفوَّضين لعمليات تحميل الإعلانات الناجحة والفاشلة،
وتقديم طلب إعلان.
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
adLoader.OnNativeAdLoaded += this.HandleNativeAdLoaded;
adLoader.OnAdFailedToLoad += this.HandleAdFailedToLoad;
adLoader.LoadAd(new AdRequest.Builder().Build());
}
التعامل مع عمليات تحميل الإعلانات التي تعذّر إجراؤها
الحدث OnAdFailedToLoad
من النوع EventHandle<AdFailedToLoadEventArgs>
.
في ما يلي تحليل سبب تعذُّر تحميل الإعلانات من هذا الحدث.
private void RequestNativeAd() {
...
adLoader.OnAdFailedToLoad += this.HandleNativeAdFailedToLoad;
}
private void HandleNativeAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) {
Debug.Log("Native ad failed to load: " + args.Message);
}
عرض إعلان مدمج مع المحتوى
عند تحميل إعلان مدمج مع المحتوى، يتم استدعاء حدث الإعلان لشكل الإعلان المقابل. وعندئذٍ يكون تطبيقك مسؤولاً عن عرض الإعلان، على الرغم من أنّه ليس ضروريًا عرض ذلك الإعلان على الفور.
التعامل مع عدد الإعلانات
الحدث OnNativeAdLoaded
من النوع EventHandler<NativeAdEventArgs>
. يمكن استرداد الإعلان المضمن في عنصر NativeAd
من NativeAdEventArgs
كما هو موضح:
private NativeAd nativeAd;
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
}
استرداد مواد عرض الإعلانات المدمجة مع المحتوى
بعد تحميل الإعلانات، يمكن الوصول إلى مواد العرض كما هو موضّح أدناه. ويتم عرض أصول الرسومات ككائنات Texture2D
، كما يتمّ عرض مواد العرض النصية ككائنات string
.
private bool nativeAdLoaded;
private NativeAd nativeAd;
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for the icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
// Get string for headline asset of native ad.
string headline = this.nativeAd.GetHeadlineText();
}
}
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}
تجدر الإشارة إلى أنّه يجب الوصول إلى مواد عرض الإعلان فقط في سلسلة التعليمات الرئيسية، على سبيل المثال، من خلال طريقة Update()
في نص Unity برمجي. تجدر الإشارة أيضًا إلى أنّه لا يمكن دائمًا ضمان توفّر مواد العرض التالية، ويجب التحقّق منها قبل عرضها:
GetStarRating()
GetStore()
GetPrice()
GetAdvertiser()
GetIconTexture()
مادة عرض "خيارات الإعلان"
يجب عرض مادة عرض الإعلان "خيارات الإعلان" كجزء من الإعلان المدمج مع المحتوى. من المهم أيضًا أن ترى مادة عرض الإعلان "خيارات الإعلان" بسهولة، لذا اختر ألوان الخلفية والصور بشكلٍ مناسب.
تسجيل GameObjects لمادة عرض الإعلان
عليك تسجيل GameObject
لمادة عرض الإعلان لكي يتم عرضها في تطبيق Unity. في حال إتمام التسجيل بنجاح، تعرض الطريقة المستخدمة لتسجيل GameObject
خطأ bool
. بالنسبة إلى List<GameObject>
، تعرض الطريقة
int
للإشارة إلى عدد GameObject
الذي تم تسجيله بنجاح.
وفي حال تعذّر تسجيل مادة عرض الإعلان، لن يتم التعرّف على مرّات الظهور والنقرات على الإعلان المتجاوب المعنيّ والمتوافق مع المحتوى.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
يجب أن يتضمّن GameObject
المسجَّل لمادة عرض الإعلان مكوّن تصادم محدب
يمثل حجم وشكل GameObject
. إذا
كانت عناصر GameObject
المسجَّلة في مواد عرض الإعلانات لا تتضمّن مكوِّنات Collider
أو تم إعدادها بشكلٍ غير صحيح، لن تعمل الإعلانات المدمجة مع المحتوى بشكلٍ صحيح.
في مقتطف الرمز أدناه، تمت إضافة BoxCollider
إلى GameObject
تستخدِم السمة TextMesh
لعرض مادة عرض الإعلان الرئيسي في الصفحة الرئيسية لإعلان مدمج مع المحتوى. بعد إرفاق
BoxCollider
بالعنصر GameObject
، سيتم ضبط حجمه تلقائيًا
لاستيعاب نص المكوِّن TextMesh
.
// Create GameObject that will display the headline ad asset.
GameObject headline = new GameObject();
headline.AddComponent<TextMesh>();
headline.GetComponent<TextMesh>().characterSize = 0.5 f;
headline.GetComponent<TextMesh>().anchor = TextAnchor.MiddleCenter;
headline.GetComponent<TextMesh>().color = Color.black;
// Get string of the headline asset.
string headlineText = this.nativeAd.GetHeadlineText();
headline.GetComponent<TextMesh>().text = headlineText;
// Add box collider to the GameObject which will automatically scale.
headline.AddComponent<BoxCollider>();
عرض توضيحي
يوضّح الرمز التالي كيفية استرداد مادة عرض رمز إعلان مدمج مع المحتوى تم تحميله بنجاح، وعرض مادة عرض الإعلان على شكل رمز من خلال ضبط زخرفة Quad
، وتسجيل GameObject
لاستخدامه في عرض مادة العرض. ينبغي تكرار عملية استرداد مادة عرض الإعلان وتسجيلها ضمن فئة الإعلان المدمج مع المحتوى لكل مادة من مواد العرض التي يعرضها التطبيق.
private GameObject icon;
private bool nativeAdLoaded;
private NativeAd nativeAd;
...
void Update() {
...
if (this.nativeAdLoaded) {
this.nativeAdLoaded = false;
// Get Texture2D for icon asset of native ad.
Texture2D iconTexture = this.nativeAd.GetIconTexture();
icon = GameObject.CreatePrimitive(PrimitiveType.Quad);
icon.transform.position = new Vector3(1, 1, 1);
icon.transform.localScale = new Vector3(1, 1, 1);
icon.GetComponent<Renderer>().material.mainTexture = iconTexture;
// Register GameObject that will display icon asset of native ad.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register ad asset.
}
}
}
...
private void HandleNativeAdLoaded(object sender, NativeAdEventArgs args) {
Debug.Log("Native ad loaded.");
this.nativeAd = args.nativeAd;
this.nativeAdLoaded = true;
}