ข้อกำหนดเบื้องต้น
ทําการตั้งค่าเหตุการณ์ที่กําหนดเองให้เสร็จสมบูรณ์
ขอโฆษณาแบนเนอร์
เมื่อรายการโฆษณาเหตุการณ์ที่กำหนดเองถึงในเชนการแสดงโฆษณาสื่อกลางตามลำดับขั้น (Waterfall Mediation)
ระบบจะเรียกใช้เมธอด 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การรับและการรายงานการเรียกกลับของเหตุการณ์โฆษณาไปยัง Google Mobile Ads SDK (Legacy)
พารามิเตอร์ที่ไม่บังคับที่กำหนดไว้ใน UI จะรวมอยู่ในการกำหนดค่าโฆษณา
เข้าถึงพารามิเตอร์ได้ผ่าน
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 ที่มี Callback ที่เกี่ยวข้องดังนี้
Java
@Override public void onAdFetchSucceeded() { bannerAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onAdFetchFailed(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
MediationBannerAd ต้องใช้Viewเมธอด Getter
Java
@Override @NonNull public View getView() { return sampleAdView; }
ส่งต่อเหตุการณ์สื่อกลางไปยัง Google Mobile Ads SDK (Legacy)
เมื่อเรียกใช้ onSuccess() แล้ว อะแดปเตอร์จะใช้MediationBannerAdCallbackออบเจ็กต์ที่ส่งกลับมา
เพื่อส่งต่อเหตุการณ์การนำเสนอจาก
SDK ของบุคคลที่สามไปยัง Google Mobile Ads SDK (Legacy) ได้ คลาส
SampleBannerCustomEventLoader ขยายอินเทอร์เฟซ SampleAdListener
เพื่อส่งต่อการเรียกกลับจากเครือข่ายโฆษณาตัวอย่างไปยัง Google Mobile Ads SDK (Legacy)
สิ่งสำคัญคือเหตุการณ์ที่กำหนดเองของคุณต้องส่งต่อการเรียกกลับเหล่านี้ให้มากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้แอปได้รับเหตุการณ์ที่เทียบเท่าจาก Google Mobile Ads SDK ตัวอย่างการใช้ฟังก์ชันเรียกกลับ
Java
@Override public void onAdFullScreen() { bannerAdCallback.onAdOpened(); bannerAdCallback.reportAdClicked(); } @Override public void onAdClosed() { bannerAdCallback.onAdClosed(); }
ซึ่งจะทำให้การติดตั้งใช้งานเหตุการณ์ที่กำหนดเองสําหรับโฆษณาแบนเนอร์เสร็จสมบูรณ์ ดูตัวอย่างฉบับเต็มได้ที่ GitHub คุณสามารถใช้กับเครือข่ายโฆษณาที่รองรับอยู่แล้ว หรือแก้ไขเพื่อ แสดงโฆษณาแบนเนอร์เหตุการณ์ที่กําหนดเอง