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

الإعلانات المدمجة مع المحتوى هي مواد عرض إعلانية يتم عرضها للمستخدمين من خلال مكونات واجهة مستخدِم مدمجة مع المنصة. ويتم عرضها باستخدام الأنواع نفسها من طرق العرض التي تستخدمها حاليًا لإنشاء التنسيقات، ويمكن تنسيقها لتتطابق مع التصميم المرئي لتطبيقك.

عند تحميل إعلان مُدمَج مع المحتوى، يتلقّى تطبيقك عنصر إعلان يحتوي على مواد العرض الخاصة به، ويتحمل التطبيق عندئذٍ مسؤولية عرضها بدلاً من حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".

بشكل عام، هناك جزءان لتنفيذ الإعلانات المدمجة مع المحتوى بنجاح: تحميل إعلان باستخدام حزمة تطوير البرامج (SDK) ثم عرض محتوى الإعلان في تطبيقك.

توضّح هذه الصفحة كيفية استخدام حزمة SDK لتحميل الإعلانات المدمجة مع المحتوى.

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

إجراء الاختبار دائمًا باستخدام الإعلانات الاختبارية

عند إنشاء تطبيقاتك واختبارها، احرص على استخدام إعلانات اختبارية بدلاً من الإعلانات المنشورة.

إنّ أسهل طريقة لتحميل الإعلانات التجريبية هي استخدام رقم تعريف الوحدة الإعلانية التجريبية المخصّص للإعلانات المدمجة مع المحتوى على Android:

/21775744923/example/native

تم إعداده خصيصًا لعرض إعلانات اختبارية لكل طلب، ويمكنك استخدامه في تطبيقاتك أثناء الترميز والاختبار وتصحيح الأخطاء. ما عليك سوى الحرص على استبداله بمعرّف وحدتك الإعلانية قبل نشر تطبيقك.

لمزيد من المعلومات عن آلية عمل الإعلانات الاختبارية لحزمة "SDK لإعلانات Google على الأجهزة الجوّالة"، اطّلِع على الإعلانات الاختبارية.

تحميل الإعلانات

يتم تحميل الإعلانات المدمجة مع المحتوى باستخدام فئة AdLoader، التي تتضمّن فئة Builder خاصة بها لتخصيصها أثناء الإنشاء. من خلال إضافة مستمعين إلى AdLoader عند إنشائه، يحدّد التطبيق أنواع الإعلانات المدمجة التي يكون جاهزًا لتلقّيها. بعد ذلك، يطلب AdLoader هذه الأنواع فقط.

إنشاء AdLoader

يوضّح الرمز البرمجي التالي كيفية إنشاء AdLoader يمكنه تحميل إعلانات تكاملية:

Java

AdLoader adLoader = new AdLoader.Builder(context, "/21775744923/example/native")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "/21775744923/example/native}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

تتحمّل الطريقة forNativeAd() مسؤولية إعداد AdLoader بتنسيق NativeAd. عند تحميل إعلان بنجاح، يتمّ استدعاء onNativeAdLoaded() دالة عنصر المستمع.

إعداد AdListener باستخدام AdLoader (اختياري)

عند إنشاء AdLoader، تُعدِّل الدالة withAdListener قيمة AdListener لتحميل ملف js. تأخذ الطريقة AdListener كمَعلمة وحيدة، والتي تتلقّى callbacks من AdLoader عند وقوع أحداث دورة حياة الإعلان:

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

طلب إدراج الإعلانات

بعد الانتهاء من إنشاء AdLoader، حان وقت استخدامه لطلب الإعلانات. استخدِم الطريقة loadAd() التي تأخذ كائنًا من نوع AdManagerAdRequest كمَعلمة أولى. هذه هي فئة AdManagerAdRequest نفسها المستخدَمة في إعلانات البانر والإعلانات البينية، ويمكنك استخدام طرق فئة AdManagerAdRequest لإضافة معلومات الاستهداف، تمامًا كما هو الحال مع أشكال الإعلانات الأخرى.

loadAd()

تُرسِل هذه الطريقة طلبًا لإعلان واحد.

Java

adLoader.loadAd(new AdManagerAdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdManagerAdRequest.Builder().build())

عمليات معاودة الاتصال

بعد إجراء طلب إلى loadAd()، يتمّ إجراء طلب استدعاء واحد إلى طرق المستمع المحدّدة سابقًا لإرسال عنصر الإعلان المدمج مع المحتوى أو الإبلاغ عن خطأ.

مراجع حول الإصدار

احرص على استخدام طريقة destroy() في الإعلانات المدمجة مع المحتوى المحمَّلة. يؤدي ذلك إلى تحرير موارد المستخدَمة ومنع تسرّب الذاكرة.

تأكَّد من أنّه تمّت إزالة جميع مراجع NativeAd في طريقة onDestroy() لنشاطك.

في دالة الاستدعاء onNativeAdLoaded، احرص على إزالة أي إعلانات مضمّنة حالية سيتم إلغاء مرجعها.

من الخطوات الرئيسية الأخرى التحقّق مما إذا تمّ إتلاف النشاط، وإذا كان الأمر كذلك، يجب استدعاء destroy() في الإعلان الذي تمّ إرجاعه والرجوع فورًا:

Java

final AdLoader adLoader = new AdLoader.Builder(this, "/21775744923/example/native")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "/21775744923/example/native")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

أفضل الممارسات

اتّبِع هذه القواعد عند تحميل الإعلانات.

  • على التطبيقات التي تستخدم الإعلانات المدمجة مع المحتوى في قائمة تخزين قائمة الإعلانات مؤقتًا مسبقًا.

  • عند تخزين الإعلانات مؤقتًا مسبقًا، امسح ذاكرة التخزين المؤقت وأعِد التحميل بعد ساعة واحدة.

  • لا تتصل بـ loadAd() على AdLoader إلى أن يكتمل تحميل الطلب الأول.

  • حصر ميزة التخزين المؤقت للإعلانات المدمجة مع المحتوى بما هو مطلوب فقط على سبيل المثال، عند التخزين المؤقت المُسبَق، لا تخزِّن إلا الإعلانات التي تظهر على الشاشة مباشرةً. تستهلك الإعلانات المدمجة مع المحتوى مساحة كبيرة في الذاكرة، ويؤدي تخزين الإعلانات المدمجة مع المحتوى مؤقتًا بدون إزالتها إلى استخدام ذاكرة بشكل مفرط.

  • يمكنك إتلاف الإعلانات المدمجة مع المحتوى عندما لا تكون قيد الاستخدام.

تسريع الأجهزة لإعلانات الفيديو

لكي تظهر إعلانات الفيديو بنجاح في مشاهدات الإعلانات المدمجة، يجب تفعيل تسريع الأجهزة.

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

تفعيل ميزة "تسريع الأجهزة"

إذا لم يعمل تطبيقك بشكل صحيح عند تفعيل ميزة "تسريع الأجهزة" بشكل عام، يمكنك التحكّم فيها للأنشطة الفردية أيضًا. لتفعيل ميزة "تسريع الأجهزة" أو إيقافها، استخدِم سمة android:hardwareAccelerated للعنصرين <application> و <activity> في AndroidManifest.xml. يوضّح المثال التالي تفعيل ميزة "تسريع الأجهزة" للتطبيق بأكمله ولكن إيقافها لنشاط واحد:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

اطّلِع على دليل ميزة "التسريع بالأجهزة" للحصول على مزيد من المعلومات حول خيارات التحكّم في ميزة "التسريع بالأجهزة". يُرجى العلم أنّه لا يمكن تفعيل ميزة "تسريع الأجهزة" لمشاهدات الإعلانات الفردية إذا كان النشاط غير مفعّل، لذا يجب تفعيل ميزة "تسريع الأجهزة" في النشاط نفسه.

عرض إعلانك

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