يوضّح لك هذا الدليل كيفية استخدام الإضافة "الإعلانات المدمجة مع المحتوى" لعرض "الإعلانات المدمجة مع المحتوى" من AdMob في تطبيق Unity، بالإضافة إلى بعض النقاط المهمة التي يجب أخذها في الاعتبار أثناء ذلك.
"الإعلانات المدمجة مع المحتوى" تتوافق من حيث الشكل والوظيفة مع المحتوى الذي يتصفّحه المستخدم على منصة ما. وتتوافق أيضًا مع التصميم المرئي للتطبيق الذي تظهر فيه. يسمح شكل "الإعلانات المدمجة مع المحتوى" في AdMob للناشرين بعرض إعلانات تندمج بسلاسة مع المحتوى. ويمكنك استخدام هذه التقنية لعرض إعلانات مخصّصة بشكل كبير تستفيد إلى أقصى حد من الرموز البرمجية الأصلية في تطبيقات Unity.
تظهر "الإعلانات المدمجة مع المحتوى" باستخدام الأنواع نفسها من GameObjects التي تستخدمها حاليًا لإنشاء تطبيقاتك، ويمكن تنسيقها لتتطابق مع التصميم المرئي لتجربة المستخدم التي تظهر فيها. عند تحميل "إعلان مدمج مع المحتوى"، يتلقّى تطبيقك عنصرًا أصليًا يحتوي على مواد عرضه ويعرضها تطبيق Unity (بدلاً من حزمة تطوير البرامج (SDK)).
المتطلبات الأساسية
- الإصدار 7.0.0 أو إصدار أحدث من مكوّن Google Mobile Ads Unity الإضافي
- إكمال دليل الخطوات الأولى.
- تنزيل الإضافة "الإعلانات المدمجة مع المحتوى" وتثبيتها
تحميل أشكال "الإعلانات المدمجة مع المحتوى"
يتم تحميل "الإعلانات المدمجة مع المحتوى" من خلال الفئة AdLoader، التي تتضمّن الفئة الخاصة بها
AdLoader.Builder لتخصيصها أثناء الإنشاء. تضبط الطريقة ForNativeAd() أداة تحميل الإعلانات للتعامل مع "الإعلانات المدمجة مع المحتوى".
private void RequestNativeAd() {
AdLoader adLoader = new AdLoader.Builder(INSERT_AD_UNIT_HERE)
.ForNativeAd()
.Build();
}
التسجيل في أحداث الإعلانات في أداة تحميل الإعلانات
لتلقّي إشعار عند تحميل "إعلان مدمج مع المحتوى" بنجاح أو تعذُّر تحميله، أضِف مفوّضين إلى الفئة 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()
مادة عرض "خيارات الإعلان"
من المطلوب عرض مادة عرض "خيارات الإعلان" كجزء من "الإعلان المدمج مع المحتوى". من المهم أيضًا أن تكون مادة عرض إعلان AdChoices ظاهرة بوضوح، لذا يجب اختيار ألوان الخلفية والصور بشكل مناسب.
تسجيل عناصر GameObjects لمادة عرض الإعلان
عليك تسجيل GameObject لمادة عرض الإعلان ليتم عرضها في تطبيق Unity. إذا تم التسجيل بنجاح، ستعرض الطريقة المستخدَمة لتسجيل GameObject قيمة bool. بالنسبة إلى List<GameObject>، تعرض الطريقة
int يشير إلى عدد GameObject الذي تم تسجيله بنجاح.
إذا تعذّر تسجيل مادة عرض إعلان، لن يتم التعرّف على مرّات الظهور والنقرات على "الإعلان المدمج مع المحتوى" المقابل.
if (!this.nativeAd.RegisterIconImageGameObject(icon))
{
// Handle failure to register the icon ad asset.
}
يجب أن يحتوي GameObject الذي تم تسجيله لمادة عرض إعلان على مكوّن `Collider` محدّب يمثّل حجم 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;
}