AdMob มีการเริ่มต้นใช้งานอแดปเตอร์ที่กำหนดค่าได้เพื่อแก้ปัญหานี้ ฟีเจอร์นี้ช่วยให้คุณควบคุมได้ว่าจะเริ่มต้นใช้งานอแดปเตอร์ใด สำหรับการแสดงโฆษณาครั้งแรก และลดเวลาในการตอบสนองสำหรับการแสดงผลนั้น
คู่มือนี้ครอบคลุมแง่มุมต่อไปนี้ของการเริ่มต้นใช้งานอะแดปเตอร์ที่กำหนดค่าได้
ข้อกำหนดเบื้องต้น
- นำเข้า GMA Next-Gen SDK v0.25.0-beta01 ขึ้นไป
- ตั้งค่า GMA Next-Gen SDK
เลือกใช้ฟีเจอร์นี้โดยเพิ่มคำอธิบายประกอบ
@ExperimentalApiในชั้นเรียนKotlin
@OptIn(ExperimentalApi::class)Java
import androidx.annotation.OptIn; // ... @OptIn(markerClass = ExperimentalApi.class)
สร้างการกำหนดค่าอะแดปเตอร์
การกำหนดค่าการเริ่มต้นอะแดปเตอร์จะสั่งให้ GMA Next-Gen SDK เริ่มต้นเฉพาะอะแดปเตอร์ที่จำเป็นเท่านั้น ซึ่งจะช่วยป้องกันไม่ให้อะแดปเตอร์ที่ไม่จำเป็นบล็อก คำขอโฆษณาแรกของคุณ ทำให้ประหยัดทรัพยากรการคำนวณและลด เวลาในการตอบสนองสำหรับการแสดงโฆษณาครั้งแรกได้อย่างมาก
หากต้องการเพิ่มประสิทธิภาพของแอป ให้พิจารณากลยุทธ์ต่อไปนี้ขณะ สร้างการกำหนดค่าการเริ่มต้นของอแดปเตอร์
จัดลําดับความสําคัญของรูปแบบโฆษณาหรือหน่วยโฆษณาที่เฉพาะเจาะจง
ปรับปรุงประสิทธิภาพของแอปที่แสดงโฆษณาทันทีเมื่อเปิดตัว เช่น โฆษณาเปิดแอป โดยการประกาศรูปแบบโฆษณาหรือหน่วยโฆษณาที่เฉพาะเจาะจงในการกำหนดค่าการเริ่มต้นของอแดปเตอร์
ตัวอย่างต่อไปนี้สร้างการกำหนดค่าการเริ่มต้นอะแดปเตอร์ที่ เริ่มต้นเฉพาะอะแดปเตอร์สื่อกลางที่จำเป็นสำหรับหน่วยโฆษณาเปิดแอปที่เฉพาะเจาะจง โดยมีระยะหมดเวลา 5 วินาที
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdUnitIds(setOf(AD_UNIT_ID))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdUnitIds(Set.of(AD_UNIT_ID))
.setInitializationTimeoutMs(5000)
.build();
ตัวอย่างต่อไปนี้สร้างการกำหนดค่าการเริ่มต้นอแดปเตอร์ที่ เริ่มต้นเฉพาะอแดปเตอร์สื่อกลางที่จำเป็นสำหรับโฆษณาเปิดแอปทั้งหมด และตั้งค่า การหมดเวลา 5 วินาที
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdFormats(setOf(AdFormat.APP_OPEN_AD))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdFormats(Set.of(AdFormat.APP_OPEN_AD))
.setInitializationTimeoutMs(5000)
.build();
เริ่มต้นใช้งาน AdMob Mediation Adapter ที่เฉพาะเจาะจง
หากทราบว่าโดยปกติแล้วพาร์ทเนอร์สื่อกลางรายใดที่แสดงโฆษณาครั้งแรก คุณจะเริ่มต้นเฉพาะอะแดปเตอร์นั้นได้โดยระบุชื่อคลาสอะแดปเตอร์ในการกำหนดค่าการเริ่มต้นอะแดปเตอร์ รวมการตั้งค่านี้ เข้ากับการข้ามอแดปเตอร์ที่ยังไม่ได้เริ่มต้น อย่างชัดเจน และตั้งค่าการหมดเวลาสำหรับ GMA Next-Gen SDK เพื่อไม่ให้รออแดปเตอร์ที่ยังไม่ได้เริ่มต้นที่เหลือในระหว่างการประมูล
ตัวอย่างต่อไปนี้สร้างการกำหนดค่าการเริ่มต้นของอแดปเตอร์ที่ เริ่มต้นอแดปเตอร์สื่อกลางที่เฉพาะเจาะจงและตั้งค่าการหมดเวลาเป็น 5 วินาที
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setAllowedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setAllowedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build();
คุณเรียกชื่อคลาสอะแดปเตอร์ได้โดยใช้โปรแกรม ตัวอย่างต่อไปนี้ ดึงชื่อคลาสอะแดปเตอร์โดยอัตโนมัติ
Kotlin
ExampleMediationAdapter::class.java.name
Java
ExampleMediationAdapter.class.getName()
ยกเว้นตัวกลางสื่อกลางที่เฉพาะเจาะจง
หากสังเกตเห็นว่าตัวกลางสื่อกลางบางตัวมีเวลาในการตอบสนองสูงอย่างต่อเนื่อง คุณสามารถยกเว้นตัวกลางเหล่านี้และเริ่มต้นในภายหลังได้
ตัวอย่างต่อไปนี้สร้างการกำหนดค่าการเริ่มต้นของอแดปเตอร์ที่ ยกเว้นอแดปเตอร์ที่เฉพาะเจาะจงจากการเริ่มต้น และตั้งค่าการหมดเวลา 5 วินาที
Kotlin
val adapterConfig =
AdapterInitializationConfig.Builder()
.setExcludedAdapterClasses(setOf(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build()
Java
AdapterInitializationConfig adapterConfig =
new AdapterInitializationConfig.Builder()
.setExcludedAdapterClasses(Set.of(ADAPTER_JAVA_CLASS_NAME))
.setInitializationTimeoutMs(5000)
.build();
ข้ามอะแดปเตอร์ที่ยังไม่ได้เริ่มต้น
หากวางแผนที่จะเริ่มต้นหรือยกเว้น Ad Mediation Adapter ที่เฉพาะเจาะจง คุณสามารถ กำหนดค่าคำขอโฆษณาให้ข้าม Adapter ที่ยังไม่ได้เริ่มต้นซึ่งยังคงอยู่ใน Waterfall ได้
หากไม่สร้างการกำหนดค่าอะแดปเตอร์ คุณยังคงกำหนดค่าคำขอโฆษณาให้ข้ามอะแดปเตอร์ที่ยังไม่ได้เริ่มต้นได้ GMA Next-Gen SDK ส่งคำขอโฆษณา โดยไม่ต้องรอให้อะแดปเตอร์หมดเวลาหรือเริ่มต้นไม่สำเร็จ
ตัวอย่างต่อไปนี้จะเริ่มต้น SDK ด้วยการกำหนดค่าการเริ่มต้นอะแดปเตอร์ และสร้างคำขอโฆษณาเปิดแอปที่ข้ามอะแดปเตอร์ที่ไม่ได้เริ่มต้น
Kotlin
val initConfig =
InitializationConfig.Builder(appId)
.setAdapterInitializationConfig(adapterInitializationConfig)
.build()
// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
val backgroundScope = CoroutineScope(Dispatchers.IO)
backgroundScope.launch {
MobileAds.initialize(context = context, initConfig) {
// Make your ad request after adapter initialization completes.
AppOpenAd.load(
AdRequest.Builder(adUnitId = adUnitId)
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
.skipUninitializedAdapters()
.build(),
adLoadCallback =
object : AdLoadCallback<AppOpenAd> {
override fun onAdLoaded(ad: AppOpenAd) {
// TODO: Your ad logic here
// ....
// Execute non-time-sensitive tasks after ad load completes.
performPostLaunchSetup()
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// TODO: Handle load error.
// ....
// Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
performPostLaunchSetup()
}
},
)
}
}
Java
InitializationConfig initConfig =
new InitializationConfig.Builder(appId)
.setAdapterInitializationConfig(adapterInitializationConfig)
.build();
// Initialize the GMA Next-Gen SDK with a config containing your adapter initialization
// settings.
MobileAds.initialize(
context,
initConfig,
initializationStatus -> {
// Make your ad request after adapter initialization completes.
AppOpenAd.load(
new AdRequest.Builder(adUnitId)
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
.skipUninitializedAdapters()
.build(),
new AdLoadCallback<AppOpenAd>() {
@Override
public void onAdLoaded(@NonNull AppOpenAd ad) {
// TODO: Your ad logic here
// ....
// Execute non-time-sensitive tasks after ad load completes.
performPostLaunchSetup();
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError error) {
// TODO: Handle load error.
// ....
// Ensure non-time-sensitive post-launch tasks execute even if ad load fails.
performPostLaunchSetup();
}
});
});
เริ่มต้นอะแดปเตอร์ที่เหลือ
หลังจากโหลดโอกาสในการแสดงโฆษณาที่คำนึงถึงเวลาแล้ว ให้เริ่มต้นใช้งานอแดปเตอร์ที่เหลือเพื่อให้มั่นใจว่าพาร์ทเนอร์จะได้รับความครอบคลุมของสื่อกลางอย่างเต็มรูปแบบสำหรับเซสชันแอปที่เหลือ
ตัวอย่างต่อไปนี้จะเริ่มต้นการทำงานของอะแดปเตอร์ที่เหลือโดยระบุการกำหนดค่าที่ว่างเปล่า
Kotlin
// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(AdapterInitializationConfig.Builder().build())
Java
// Provide initializeAdapters with an empty configuration to initialize
// any adapters not initialized with configurable initialization.
MobileAds.initializeAdapters(new AdapterInitializationConfig.Builder().build());