ข้อกำหนดเบื้องต้น
ตั้งค่าเหตุการณ์ที่กําหนดเองให้เสร็จสมบูรณ์
ขอโฆษณาที่มีการให้รางวัล
เมื่อระบบเข้าถึงรายการโฆษณาของเหตุการณ์ที่กําหนดเองในเชนสื่อกลางตามลำดับขั้น
มีการเรียกใช้เมธอด loadRewardedAd()
ในชื่อชั้นเรียนที่คุณ
ระบุไว้เมื่อ สร้าง
กิจกรรม ในกรณีนี้
เมธอดนั้นอยู่ใน SampleCustomEvent
ซึ่งจะเรียกเมธอด loadRewardedAd()
ใน SampleRewardedCustomEventLoader
หากต้องการขอโฆษณาที่มีการให้รางวัล ให้สร้างหรือแก้ไขคลาสที่ขยาย Adapter
เป็น
ใช้ loadRewardedAd()
นอกจากนี้ โปรดสร้างชั้นเรียนใหม่เพื่อนำไปใช้
MediationRewardedAd
ในตัวอย่างเหตุการณ์ที่กำหนดเอง
SampleCustomEvent
ขยายคลาส Adapter
จากนั้นมอบสิทธิ์ไปยัง
SampleRewardedCustomEventLoader
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationRewardedAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationRewardedAd; import com.google.android.gms.ads.mediation.MediationRewardedAdCallback; ... public class SampleCustomEvent extends Adapter { private SampleNativeCustomEventLoader nativeLoader; @Override public void loadRewardedAd( @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration, @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback) { rewardedLoader = new SampleRewardedCustomEventLoader( mediationRewardedAdConfiguration, mediationAdLoadCallback); rewardedLoader.loadAd(); } }
SampleRewardedCustomEventLoader
รับผิดชอบงานต่อไปนี้
กำลังโหลดโฆษณาที่มีการให้รางวัล
กำลังใช้อินเทอร์เฟซ
MediationRewardedAd
การรับและการรายงาน Callback ของเหตุการณ์โฆษณาไปยัง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
พารามิเตอร์ที่ไม่บังคับที่กำหนดไว้ใน UI ของ Ad Manager คือ
ที่รวมอยู่ในการกำหนดค่าโฆษณา พารามิเตอร์นี้สามารถเข้าถึงได้
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.MediationRewardedAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationRewardedAd; import com.google.android.gms.ads.mediation.MediationRewardedAdCallback; ... public class SampleRewardedCustomEventLoader extends SampleRewardedAdListener implements MediationRewardedAd { /** Configuration for requesting the rewarded ad from the third-party network. */ private final MediationRewardedAdConfiguration mediationRewardedAdConfiguration; /** * A {@link MediationAdLoadCallback} that handles any callback when a Sample * rewarded ad finishes loading. */ private final MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback; /** Callback for rewarded ad events. */ private MediationRewardedAdCallback rewardedAdCallback; /** Constructor. */ public SampleRewardedCustomEventLoader( @NonNull MediationRewardedAdConfiguration mediationRewardedAdConfiguration, @NonNull MediationAdLoadCallback<MediationRewardedAd, MediationRewardedAdCallback> mediationAdLoadCallback) { this.mediationRewardedAdConfiguration = mediationRewardedAdConfiguration; this.mediationAdLoadCallback = mediationAdLoadCallback; } /** Loads the rewarded 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 AdMob UI when defining the custom event. Log.i("RewardedCustomEvent", "Begin loading rewarded ad."); String serverParameter = mediationRewardedAdConfiguration .getServerParameters() .getString(MediationConfiguration .CUSTOM_EVENT_SERVER_PARAMETER_FIELD); Log.d("RewardedCustomEvent", "Received server parameter."); SampleAdRequest request = createSampleRequest(mediationRewardedAdConfiguration); sampleRewardedAd = new SampleRewardedAd(serverParameter); sampleRewardedAd.setListener(this); Log.i("RewardedCustomEvent", "Start fetching rewarded ad."); sampleRewardedAd.loadAd(request); } public SampleAdRequest createSampleRequest( MediationAdConfiguration mediationAdConfiguration) { SampleAdRequest request = new SampleAdRequest(); request.setTestMode(mediationAdConfiguration.isTestRequest()); request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet()); return request; } }
ขึ้นอยู่กับว่าระบบดึงข้อมูลโฆษณาสำเร็จหรือพบข้อผิดพลาด
จะเรียก
onSuccess()
หรือ
onFailure()
ระบบจะเรียก onSuccess()
โดยการส่งต่อในอินสแตนซ์ของคลาสที่ติดตั้งใช้งาน
MediationRewardedAd
โดยปกติแล้ว วิธีการเหล่านี้จะใช้ภายใน Callback จาก
SDK ของบุคคลที่สามที่อะแดปเตอร์ของคุณใช้ สำหรับตัวอย่างนี้ SDK ตัวอย่าง
มี SampleAdListener
ที่มี Callback ที่เกี่ยวข้อง:
Java
@Override public void onRewardedAdLoaded() { rewardedAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onRewardedAdFailedToLoad(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
MediationRewardedAd
กำหนดให้ใช้เมธอด showAd()
เพื่อแสดง
โฆษณา
Java
@Override public void showAd(Context context) { if (!(context instanceof Activity)) { rewardedAdCallback.onAdFailedToShow( SampleCustomEventError.createCustomEventNoActivityContextError()); return; } Activity activity = (Activity) context; if (!sampleRewardedAd.isAdAvailable()) { rewardedAdCallback.onAdFailedToShow( SampleCustomEventError.createCustomEventAdNotAvailableError()); return; } sampleRewardedAd.showAd(activity); }
ส่งต่อเหตุการณ์สื่อกลางไปยัง SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google
เมื่อมีการเรียก onSuccess()
ระบบจะส่งคืน MediationRewardedAdCallback
จากนั้นอะแดปเตอร์สามารถใช้เพื่อส่งต่อเหตุการณ์การนำเสนอจาก
SDK ของบุคคลที่สามกับ Google Mobile Ads SDK
คลาส SampleRewardedCustomEventLoader
ได้ขยายระยะเวลา SampleAdListener
เพื่อส่งต่อ Callback จากเครือข่ายโฆษณาตัวอย่างไปยัง Google Mobile
SDK โฆษณา
เหตุการณ์ที่กำหนดเองจะต้องส่งต่อ Callback เหล่านี้ให้มากที่สุดเท่าที่จะเป็นไปได้ เพื่อให้แอปของคุณได้รับเหตุการณ์ที่เทียบเท่าเหล่านี้จาก SDK โฆษณาในอุปกรณ์เคลื่อนที่ ต่อไปนี้เป็นตัวอย่างของการใช้ Callback
Java
@Override public void onAdRewarded(final String rewardType, final int amount) { RewardItem rewardItem = new RewardItem() { @Override public String getType() { return rewardType; } @Override public int getAmount() { return amount; } }; rewardedAdCallback.onUserEarnedReward(rewardItem); } @Override public void onAdClicked() { rewardedAdCallback.reportAdClicked(); } @Override public void onAdFullScreen() { rewardedAdCallback.onAdOpened(); rewardedAdCallback.onVideoStart(); rewardedAdCallback.reportAdImpression(); } @Override public void onAdClosed() { rewardedAdCallback.onAdClosed(); } @Override public void onAdCompleted() { rewardedAdCallback.onVideoComplete(); }
เท่านี้ก็เสร็จสิ้นการใช้งานเหตุการณ์ที่กำหนดเองสำหรับโฆษณาที่มีการให้รางวัลแล้ว ภาพรวม ตัวอย่างมีอยู่ใน GitHub คุณสามารถใช้เครือข่ายโฆษณาที่รองรับอยู่แล้ว หรือแก้ไขให้เป็น แสดงโฆษณาที่มีการให้รางวัลของกิจกรรมที่กำหนดเอง