البدء

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

تطابق الإعلانات المدمجة مع المحتوى كلاً من شكل تجربة المستخدم ووظيفتها التي يتم فيها وضعها. كما أنها تتطابق مع التصميم المرئي للتطبيق الذي يعيش فيها. يتيح شكل الإعلانات المدمجة مع المحتوى في AdMob للناشرين عرض إعلانات سلسة مع المحتوى. ويمكنك استخدام هذه التقنية لتنفيذ عمليات عرض مخصّصة للغاية تستفيد بشكل كامل من الرمز الأصلي في تطبيقات 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 للأحداث المدرَجة أدناه.

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

استدعاء عند تحميل إعلان مدمج مع المحتوى بنجاح. يجب أن يكون لديك تفويض لهذا الحدث للوصول إلى الإعلان الذي تم تحميله.

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