ใช้การเริ่มต้นอะแดปเตอร์ที่กำหนดค่าได้ (อัลฟ่า)

เลือกแพลตฟอร์ม: Android iOS Android (เดิม)

โดยค่าเริ่มต้น GMA Next-Gen SDK จะเริ่มต้นใช้งานอแดปเตอร์สื่อกลางทั้งหมดที่เชื่อมโยงกับ แอปพลิเคชันของคุณในระหว่างการเริ่มต้นใช้งาน การเริ่มต้นใช้งานทุกๆ อะแดปเตอร์อาจใช้เวลามากกว่า 30 วินาที ซึ่งจะทำให้เกิดเวลาในการตอบสนองที่มากก่อนที่โฆษณาแรกจะโหลดได้

AdMob มีการเริ่มต้นใช้งานอแดปเตอร์ที่กำหนดค่าได้เพื่อแก้ปัญหานี้ ฟีเจอร์นี้ช่วยให้คุณควบคุมได้ว่าจะเริ่มต้นใช้งานอแดปเตอร์ใด สำหรับการแสดงโฆษณาครั้งแรก และลดเวลาในการตอบสนองสำหรับการแสดงผลนั้น

คู่มือนี้ครอบคลุมแง่มุมต่อไปนี้ของการเริ่มต้นใช้งานอะแดปเตอร์ที่กำหนดค่าได้

ข้อกำหนดเบื้องต้น

  • เลือกใช้ฟีเจอร์นี้โดยเพิ่มคำอธิบายประกอบ @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());