البدء

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

تتوافق الإعلانات المدمجة مع المحتوى مع تجربة المستخدِم في الموضع الذي تظهر فيه من حيث الشكل والوظيفة. كما أنها تتطابق مع التصميم المرئي للتطبيق الذي يعيش داخله. يتيح شكل الإعلانات المدمجة مع المحتوى في AdMob للناشرين عرض إعلانات سلسة مع المحتوى. يمكنك استخدام هذه التكنولوجيا لتنفيذ عمليات عرض عالية التخصيص تستفيد بشكل كامل من الرمز البرمجي الأصلي في تطبيقات Unity.

يتم عرض الإعلانات المدمجة مع المحتوى باستخدام أنواع GameObjects نفسها التي تستخدمها تنشئ تطبيقاتك بالفعل ويمكن تنسيقها لتتناسب مع التصميم المرئي تجربة المستخدم التي يعيشون فيها. عند تحميل إعلان مضمّن مع المحتوى، يتلقّى تطبيقك عنصرًا مضمّنًا مع المحتوى يحتوي على مواد العرض، ويعرضه تطبيق Unity (بدلاً من حزمة SDK).

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

  • الإصدار 7.0.0 أو إصدار أحدث من مكوّن إعلانات Google على الأجهزة الجوّالة في Unity
  • أكمِل دليل البدء.
  • نزِّل وثبِّت إضافة الإعلانات المدمجة مع المحتوى.

تحميل أشكال الإعلانات المدمجة مع المحتوى

يتم تحميل الإعلانات المدمجة مع المحتوى من خلال فئة 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 المسجَّل لمادة عرض إعلان عنصر 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 لاستخدامها لعرض مادة العرض. يجب تكرار عملية retrieving retrieving ad asset and registering it with the native ad class لكل مادة عرض يعرضها التطبيق.

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;
}