المتطلبات الأساسية
أكمِل إعداد الأحداث المخصَّصة.
طلب إعلان بانر
عند الوصول إلى عنصر الحدث المخصّص في سلسلة توسّط العرض الإعلاني بدون انقطاع،
يتم استدعاء طريقة loadBannerAd()
باسم الفئة الذي قدمته عند
إنشاء تخصيص
. وفي هذه الحالة،
تكون هذه الطريقة في SampleCustomEvent
، التي تستدعي بعد ذلك loadBannerAd()
في SampleBannerCustomEventLoader
.
لطلب إعلان بانر، عليك إنشاء أو تعديل فئة تمتد من Adapter
إلى
تنفيذ loadBannerAd()
. بالإضافة إلى ذلك، قم بإنشاء فئة جديدة لتنفيذها
MediationBannerAd
في مثال الحدث المخصّص،
يوسع SampleCustomEvent
فئة Adapter
ثم يفوض إلى
SampleBannerCustomEventLoader
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationBannerAd; import com.google.android.gms.ads.mediation.MediationBannerAdCallback; ... public class SampleCustomEvent extends Adapter { private SampleBannerCustomEventLoader bannerLoader; @Override public void loadBannerAd( @NonNull MediationBannerAdConfiguration adConfiguration, @NonNull MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> callback) { bannerLoader = new SampleBannerCustomEventLoader(adConfiguration, callback); bannerLoader.loadAd(); } }
تقع على عاتق "SampleBannerCustomEventLoader
" مسؤولية المهام التالية:
جارٍ تحميل إعلان البانر واستدعاء
MediationAdLoadCallback
بعد اكتمال التحميل.تنفيذ واجهة
MediationBannerAd
.تلقّي استدعاءات أحداث الإعلانات وإعداد تقارير عنها إلى حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".
المعلمة الاختيارية المحددة في واجهة المستخدم هي
مضمّنة في إعدادات الإعلان. يمكن الوصول إلى المعلمة من خلال
adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD)
تكون هذه المَعلمة عادةً معرّف وحدة إعلانية تستخدمه حزمة تطوير برامج (SDK) لشبكة الإعلانات
مطلوبة عند إنشاء مثيل لعنصر إعلان.
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationBannerAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationBannerAd; import com.google.android.gms.ads.mediation.MediationBannerAdCallback; ... public class SampleBannerCustomEventLoader extends SampleAdListener implements MediationBannerAd { /** View to contain the sample banner ad. */ private SampleAdView sampleAdView; /** Configuration for requesting the banner ad from the third-party network. */ private final MediationBannerAdConfiguration mediationBannerAdConfiguration; /** Callback that fires on loading success or failure. */ private final MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> mediationAdLoadCallback; /** Callback for banner ad events. */ private MediationBannerAdCallback bannerAdCallback; /** Constructor. */ public SampleBannerCustomEventLoader( @NonNull MediationBannerAdConfiguration mediationBannerAdConfiguration, @NonNull MediationAdLoadCallback<MediationBannerAd, MediationBannerAdCallback> mediationAdLoadCallback) { this.mediationBannerAdConfiguration = mediationBannerAdConfiguration; this.mediationAdLoadCallback = mediationAdLoadCallback; } /** Loads a banner ad from the third-party ad network. */ public void loadAd() { // All custom events have a server parameter named "parameter" that returns // back the parameter entered into the UI when defining the custom event. Log.i("BannerCustomEvent", "Begin loading banner ad."); String serverParameter = mediationBannerAdConfiguration.getServerParameters().getString( MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD); Log.d("BannerCustomEvent", "Received server parameter."); Context context = mediationBannerAdConfiguration.getContext(); sampleAdView = new SampleAdView(context); // Assumes that the serverParameter is the ad unit of the Sample Network. sampleAdView.setAdUnit(serverParameter); AdSize size = mediationBannerAdConfiguration.getAdSize(); // Internally, smart banners use constants to represent their ad size, which // means a call to AdSize.getHeight could return a negative value. You can // accommodate this by using AdSize.getHeightInPixels and // AdSize.getWidthInPixels instead, and then adjusting to match the device's // display metrics. int widthInPixels = size.getWidthInPixels(context); int heightInPixels = size.getHeightInPixels(context); DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics(); int widthInDp = Math.round(widthInPixels / displayMetrics.density); int heightInDp = Math.round(heightInPixels / displayMetrics.density); sampleAdView.setSize(new SampleAdSize(widthInDp, heightInDp)); sampleAdView.setAdListener(this); SampleAdRequest request = createSampleRequest(mediationBannerAdConfiguration); Log.i("BannerCustomEvent", "Start fetching banner ad."); sampleAdView.fetchAd(request); } public SampleAdRequest createSampleRequest( MediationAdConfiguration mediationAdConfiguration) { SampleAdRequest request = new SampleAdRequest(); request.setTestMode(mediationAdConfiguration.isTestRequest()); request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet()); return request; } }
استنادًا إلى ما إذا كان قد تم جلب الإعلان بنجاح أو واجه خطأ،
يتصل بأي منهما
onSuccess()
أو
onFailure()
يتم استدعاء onSuccess()
من خلال تمرير مثيل للفئة التي تنفذ
MediationBannerAd
عادةً، يتم تنفيذ هذه الطرق داخل استدعاءات من
حزمة تطوير البرامج (SDK) التابعة لجهة خارجية التي ينفّذها المحوّل. في هذا المثال، نموذج حزمة SDK
لدى SampleAdListener
مع استدعاءات ذات صلة:
Java
@Override public void onAdFetchSucceeded() { bannerAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onAdFetchFailed(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
تتطلب الدالة MediationBannerAd
تنفيذ طريقة getter، View
:
Java
@Override @NonNull public View getView() { return sampleAdView; }
إعادة توجيه أحداث التوسّط إلى "SDK لإعلانات Google على الأجهزة الجوّالة"
بعد استدعاء onSuccess()
، يتم عرض كائن MediationBannerAdCallback
.
ثم استخدامه بواسطة المحول لإعادة توجيه أحداث العرض التقديمي من
حزمة تطوير البرامج (SDK) التابعة لجهة خارجية إلى حزمة "SDK لإعلانات Google على الأجهزة الجوّالة". تشير رسالة الأشكال البيانية
تعمل الفئة SampleBannerCustomEventLoader
على توسيع واجهة SampleAdListener
.
لإعادة توجيه عمليات الاستدعاء من نموذج شبكة الإعلانات إلى حزمة SDK لإعلانات Google على الأجهزة الجوّالة.
من المهمّ أن يُعيد الحدث المخصّص توجيه أكبر عدد ممكن من طلبات معاودة الاتصال هذه. حتى يتلقّى تطبيقك هذه الأحداث المماثلة من نظام التشغيل SDK لإعلانات الأجهزة الجوّالة. إليك مثال على استخدام عمليات معاودة الاتصال:
Java
@Override public void onAdFullScreen() { bannerAdCallback.onAdOpened(); bannerAdCallback.reportAdClicked(); } @Override public void onAdClosed() { bannerAdCallback.onAdClosed(); }
وبذلك، تكون قد أكملت تنفيذ الأحداث المخصّصة لإعلانات البانر. المثال الكامل متاح على GitHub. يمكنك استخدامه مع شبكة إعلانات متوافقة أو تعديلها إلى عرض إعلانات بانر للأحداث المخصّصة