عرض إعلان مدمج مع المحتوى
عند تحميل إعلان مدمج مع المحتوى، تستدعي حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" المستمع وشكل الإعلان المقابل. فيكون تطبيقك مسؤولاً عن عرض الإعلان رغم أنه ليس بالضرورة أن تفعل ذلك على الفور. لجعل عرض المحتوى أشكال الإعلانات التي يحددها النظام بسهولة أكبر، توفر حزمة SDK بعض الموارد المفيدة، الموضحة أدناه.
فئة NativeAdView
بالنسبة إلى تنسيق NativeAd
، يتوفّر
NativeAdView
الصف. هذه الفئة هي
ViewGroup
التي يجب أن يستخدمها الناشرون كجذر للعنصر NativeAd
. حاسمة
تتجاوب NativeAdView
الفردية مع إعلان واحد مدمج مع المحتوى.
كلّ ملف شخصي يُستخدم لعرض مواد عرض هذا الإعلان (ImageView
التي تعرِض
مادة عرض لقطة الشاشة، على سبيل المثال) يجب أن تكون فرعية من NativeAdView
الخاص بك.
العرض الهرمي لإعلان مدمج مع المحتوى يستخدم
LinearLayout
لعرض مشاهدات مواد العرض، على النحو التالي:
<com.google.android.gms.ads.nativead.NativeAdView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="vertical"
... >
<LinearLayout
android:orientation="horizontal"
... >
<ImageView
android:id="@+id/ad_app_icon"
... />
<TextView
android:id="@+id/ad_headline"
... />
</LinearLayout>
// Other assets such as image or media view, call to action, etc follow.
...
</LinearLayout>
</com.google.android.gms.ads.nativead.NativeAdView>
في ما يلي مثال على إنشاء NativeAdView
وملؤه بـ NativeAd
:
Java
AdLoader.Builder builder = new AdLoader.Builder(this, "AD_UNIT_ID")
.forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
@Override
public void onNativeAdLoaded(NativeAd nativeAd) {
// Assumes you have a placeholder FrameLayout in your View layout
// (with id fl_adplaceholder) where the ad is to be placed.
FrameLayout frameLayout =
findViewById(R.id.fl_adplaceholder);
// Assumes that your ad layout is in a file call native_ad_layout.xml
// in the res/layout folder
NativeAdView adView = (NativeAdView) getLayoutInflater()
.inflate(R.layout.native_ad_layout, null);
// This method sets the text, images and the native ad, etc into the ad
// view.
populateNativeAdView(nativeAd, adView);
frameLayout.removeAllViews();
frameLayout.addView(adView);
}
});
Kotlin
val builder = AdLoader.Builder(this, "AD_UNIT_ID")
.forNativeAd { nativeAd ->
// Assumes that your ad layout is in a file call native_ad_layout.xml
// in the res/layout folder
val adView = layoutInflater
.inflate(R.layout.native_ad_layout, null) as NativeAdView
// This method sets the text, images and the native ad, etc into the ad
// view.
populateNativeAdView(nativeAd, adView)
// Assumes you have a placeholder FrameLayout in your View layout
// (with id ad_frame) where the ad is to be placed.
ad_frame.removeAllViews()
ad_frame.addView(adView)
}
يُرجى العِلم أنّه يجب عرض جميع مواد عرض إعلان مدمج مع المحتوى معيّن داخل تنسيق
NativeAdView
. تحاول حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" تسجيل تحذير في حال
يتم عرض مواد العرض المدمجة مع المحتوى خارج تنسيق مشاهدة الإعلانات المدمجة مع المحتوى.
توفر فئات مشاهدة الإعلان أيضًا الطرق المستخدمة لتسجيل المشاهدة
كلّ مادة عرض فردية، وواحدة لتسجيل عنصر NativeAd
نفسه.
إنّ تسجيل الملفات الشخصية بهذه الطريقة يسمح لحزمة تطوير البرامج (SDK) بمعالجة المهام تلقائيًا.
مثل:
- جارٍ تسجيل النقرات
- تسجيل مرّات الظهور عندما يكون أول بكسل مرئيًا على الشاشة
- عرض تراكب "خيارات الإعلان"
تراكب "خيارات الإعلان"
تتم إضافة تراكب "خيارات الإعلان" إلى كل مشاهدة إعلان من خلال حزمة SDK. ترك مساحة في الزاوية المفضلة عرض إعلان مدمج مع المحتوى لشعار "خيارات الإعلان" الذي يتم إدراجه تلقائيًا من المهم أيضًا أهمية عرض تراكب "خيارات الإعلان" بسهولة، لذا اختر ألوان الخلفية والصور بشكل مناسب. لمزيد من المعلومات حول مظهر التراكب راجع حقل الإعلانات المدمجة مع المحتوى والأوصاف.
إحالة الإعلان
يجب عرض تصنيف الإعلان للإشارة إلى أنّ المشاهدة عبارة عن إعلان. يمكنك الاطّلاع على مزيد من المعلومات في إرشادات السياسة.
مثال على الرمز البرمجي
في ما يلي خطوات عرض "إعلان مدمج مع المحتوى":
- أنشئ مثيلاً للفئة
NativeAdView
. - لكل مادة عرض إعلان سيتم عرضها:
- تعبئة عرض مادة العرض بمادة العرض المتضمّنة في عنصر الإعلان.
- سجِّل مشاهدة مادة العرض مع الفئة
ViewGroup
.
- تسجيل
MediaView
إذا كان تخطيط الإعلان المدمج مع المحتوى يتضمن مادة عرض وسائط كبيرة. - سجِّل عنصر الإعلان في الفئة
ViewGroup
.
في ما يلي مثال على دالة تعرض NativeAd
:
Java
private void displayNativeAd(ViewGroup parent, NativeAd ad) {
// Inflate a layout and add it to the parent ViewGroup.
LayoutInflater inflater = (LayoutInflater) parent.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
NativeAdView adView = (NativeAdView) inflater
.inflate(R.layout.ad_layout_file, parent);
// Locate the view that will hold the headline, set its text, and call the
// NativeAdView's setHeadlineView method to register it.
TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline);
headlineView.setText(ad.getHeadline());
adView.setHeadlineView(headlineView);
...
// Repeat the above process for the other assets in the NativeAd
// using additional view objects (Buttons, ImageViews, etc).
...
// If the app is using a MediaView, it should be
// instantiated and passed to setMediaView. This view is a little different
// in that the asset is populated automatically, so there's one less step.
MediaView mediaView = (MediaView) adView.findViewById(R.id.ad_media);
adView.setMediaView(mediaView);
// Call the NativeAdView's setNativeAd method to register the
// NativeAdObject.
adView.setNativeAd(ad);
// Ensure that the parent view doesn't already contain an ad view.
parent.removeAllViews();
// Place the AdView into the parent.
parent.addView(adView);
}
Kotlin
fun displayNativeAd(parent: ViewGroup, ad: NativeAd) {
// Inflate a layout and add it to the parent ViewGroup.
val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)
as LayoutInflater
val adView = inflater.inflate(R.layout.ad_layout_file, parent) as NativeAdView
// Locate the view that will hold the headline, set its text, and use the
// NativeAdView's headlineView property to register it.
val headlineView = adView.findViewById<TextView>(R.id.ad_headline)
headlineView.text = ad.headline
adView.headlineView = headlineView
...
// Repeat the above process for the other assets in the NativeAd using
// additional view objects (Buttons, ImageViews, etc).
...
val mediaView = adView.findViewById<MediaView>(R.id.ad_media)
adView.mediaView = mediaView
// Call the NativeAdView's setNativeAd method to register the
// NativeAdObject.
adView.setNativeAd(ad)
// Ensure that the parent view doesn't already contain an ad view.
parent.removeAllViews()
// Place the AdView into the parent.
parent.addView(adView)
}
فيما يلي المهام الفردية:
تكبير التنسيق
Java
LayoutInflater inflater = (LayoutInflater) parent.getContext() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); NativeAdView adView = (NativeAdView) inflater .inflate(R.layout.ad_layout_file, parent);
Kotlin
val inflater = parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater val adView = inflater.inflate(R.layout.ad_layout_file, parent) as NativeAdView
تعمل هذه التعليمة البرمجية على تضخيم تنسيق XML الذي يتضمن طرق عرض لعرض ثم تحديد مكان إشارة إلى
NativeAdView
. لاحظ أنه يمكنك أيضًا إعادة استخدامNativeAdView
حالية في حال توفّر رمز في الجزء أو النشاط، أو حتى إنشاء مثيل ديناميكيًا بدون استخدام ملف تخطيط.تعبئة مشاهدات مواد العرض وتسجيلها
يحدِّد نموذج الرمز هذا موقع العرض المستخدَم لعرض العنوان، ويضبط نصه باستخدام مادة عرض السلسلة التي يوفّرها عنصر الإعلان، ويُسجِّله باستخدام عنصر
NativeAdView
:Java
TextView headlineView = adView.findViewById<TextView>(R.id.ad_headline); headlineView.setText(ad.getHeadline()); adView.setHeadlineView(headlineView);
Kotlin
val headlineView = adView.findViewById<TextView>(R.id.ad_headline) headlineView.text = ad.headline adView.headlineView = headlineView
عملية تحديد مكان العرض وتعيين قيمته وتسجيله باستخدام تكرار فئة مشاهدة الإعلان لكل مادة من مواد العرض المقدّمة من كائن الإعلان المدمج مع المحتوى الذي سيعرضه التطبيق.
التعامل مع النقرات
لا تنفذ أي معالجات مخصصة للنقرات على أي طرق عرض فوق أو داخل مشاهدة "الإعلانات المدمجة مع المحتوى" لمراقبة أحداث النقر بنفسك، استخدِم الإعلان المستمع
تعالج حزمة تطوير البرامج (SDK) النقرات على مواد عرض مشاهدة الإعلان طالما أنّك تعاملت بشكل صحيح. وتعبئة مشاهدات مواد العرض وتسجيلها، كما هو موضّح في القسم السابق.
فيما يلي مثال يستخدم إعلانًا المستمع لمراقبة الأحداث الناتجة عن النقر:
Java
AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110") ... .withAdListener(new AdListener() { @Override public void onAdFailedToLoad(LoadAdError adError) { // Handle the failure by logging, altering the UI, and so on. } @Override public void onAdClicked() { // Log the click event or other custom behavior. } }) .build();
Kotlin
val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") ... .withAdListener(object : AdListener() { override fun onAdFailedToLoad(adError: LoadAdError) { // Handle the failure by logging, altering the UI, and so on. } }) .build()
تسجيل MediaView
عليك استخدام
MediaView
الأصل بدلاً منImageView
إذا كنت تريد تضمين مادة عرض صورة رئيسية في تنسيق مواد العرض الأصلية الإعلان.MediaView
هو عنصرView
خاص تم تصميمه لعرض مادة عرض الوسائط الرئيسية، سواء كان فيديو أو صورة.يمكن تحديد
MediaView
في تنسيق XML أو إنشاؤه ديناميكيًا. يجب وضعه ضمن التسلسل الهرمي لعرضNativeAdView
، تمامًا مثل أي عرض آخر لمادة العرض. على التطبيقات التي تستخدمMediaView
تسجيلها فيNativeAdView
:Java
MediaView mediaView = adView.findViewById(R.id.ad_media); adView.setMediaView(mediaView);
Kotlin
adView.mediaView = adView.findViewById<MediaView>(R.id.ad_media)
كما هو الحال مع جميع طرق عرض مواد العرض، يجب تعبئة محتوى عرض الوسائط. يتم ذلك باستخدام
getMediaContent()
لاسترداد محتوى الوسائط الذي يمكن تمريره إلىMediaView
في ما يلي مقتطف رمز يحدّد محتوى الوسائط لعرض الوسائط:Java
mediaView.setMediaContent(nativeAd.getMediaContent());
Kotlin
mediaView.mediaContent = nativeAd.mediaContent
ImageScaleType
تحتوي الفئة
MediaView
على السمةImageScaleType
عند عرض المحتوى. الصور. إذا أردت تغيير طريقة تحجيم صورة فيMediaView
، اضبطImageView.ScaleType
المقابلة باستخدامsetImageScaleType()
طريقةMediaView
:Java
mediaView.setImageScaleType(ImageView.ScaleType.CENTER_CROP);
Kotlin
mediaView.imageScaleType = ImageView.ScaleType.CENTER_CROP
MediaContent
تحتوي فئة
MediaContent
على البيانات المتعلّقة بمحتوى الوسائط في الإعلان المدمَج، والذي يتم عرضه باستخدام فئةMediaView
. عندما يتم ضبط السمةmediaContent
MediaView
باستخدام مثيلMediaContent
:في حال توفر مادة عرض الفيديو، يتم تخزينها مؤقتًا ويبدأ تشغيلها داخل
MediaView
يمكنك معرفة ما إذا كانت مادة عرض الفيديو متاحة من خلال التحقّق من الأمرhasVideoContent()
إذا لم يكن الإعلان يحتوي على مادة عرض فيديو، سيتم تنزيل مادة العرض "
mainImage
". ويتم وضعها داخلMediaView
بدلاً من ذلك.
و
mainImage
هي تلقائيًا أول مادة عرض صورة يتم تنزيلها. في حال حذف يتم استخدامsetReturnUrlsForImageAssets(true)
، وmainImage
هيnull
، ويجب عليك اضبط السمةmainImage
على الصورة التي تم تنزيلها يدويًا. يُرجى العلم أنّه لن يتم استخدام هذه الصورة إلا في حال عدم توفّر مادة عرض فيديو.تسجيل عنصر الإعلان المدمج مع المحتوى
تسجِّل هذه الخطوة الأخيرة كائن الإعلان المدمج مع المحتوى مع طريقة العرض المسئول عن عرضه:
Java
adView.setNativeAd(ad);
Kotlin
adView.setNativeAd(ad)
محو الإعلان
عند الانتهاء من عرض إعلانك المدمج مع المحتوى، يجب إتلافه حتى يتم جمع البيانات المهملة بشكل صحيح.
Java
nativeAd.destroy();
Kotlin
nativeAd.destroy()
أمثلة على GitHub
مثال على التنفيذ الكامل للإعلانات المدمجة مع المحتوى:
الخطوات التالية
استكشِف المواضيع التالية: