Sử dụng chế độ khởi chạy bộ chuyển đổi có thể định cấu hình (alpha)

Chọn nền tảng: Android iOS Android (Cũ)

Theo mặc định, GMA Next-Gen SDK sẽ khởi chạy tất cả các bộ chuyển đổi dàn xếp được liên kết với ứng dụng của bạn trong quá trình khởi chạy. Việc khởi chạy mọi bộ chuyển đổi có thể mất hơn 30 giây, dẫn đến độ trễ đáng kể trước khi quảng cáo đầu tiên có thể tải.

Để giải quyết vấn đề này, AdMob cung cấp tính năng Khởi tạo bộ chuyển đổi có thể định cấu hình. Tính năng này cho phép bạn kiểm soát những bộ chuyển đổi được khởi chạy cho lượt hiển thị quảng cáo đầu tiên và giảm độ trễ cho lượt hiển thị đó.

Hướng dẫn này đề cập đến những khía cạnh sau đây của quá trình Khởi động trình chuyển đổi có thể định cấu hình:

Điều kiện tiên quyết

  • Chọn sử dụng tính năng này bằng cách thêm chú thích @ExperimentalApi vào lớp của bạn:

    Kotlin

    @OptIn(ExperimentalApi::class)
    

    Java

    import androidx.annotation.OptIn;
    // ...
    @OptIn(markerClass = ExperimentalApi.class)
    

Tạo cấu hình bộ chuyển đổi

Cấu hình khởi chạy bộ chuyển đổi hướng dẫn GMA Next-Gen SDK chỉ khởi chạy các bộ chuyển đổi bắt buộc. Điều này giúp ngăn các bộ chuyển đổi không cần thiết chặn yêu cầu quảng cáo đầu tiên của bạn, tiết kiệm tài nguyên tính toán và giảm đáng kể độ trễ cho lượt hiển thị quảng cáo đầu tiên.

Để tối ưu hoá hiệu suất của ứng dụng, hãy cân nhắc các chiến lược sau đây khi bạn tạo cấu hình khởi chạy bộ chuyển đổi:

Ưu tiên một Định dạng quảng cáo hoặc Đơn vị quảng cáo cụ thể

Cải thiện hiệu suất của những ứng dụng hiển thị quảng cáo ngay khi khởi chạy, chẳng hạn như quảng cáo khi mở ứng dụng, bằng cách khai báo định dạng quảng cáo hoặc đơn vị quảng cáo cụ thể trong cấu hình khởi chạy bộ chuyển đổi.

Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi chỉ khởi chạy các bộ chuyển đổi hoà giải bắt buộc cho một đơn vị quảng cáo khi mở ứng dụng cụ thể với thời gian chờ là 5 giây:

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();

Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi chỉ khởi chạy các bộ chuyển đổi dàn xếp bắt buộc cho tất cả Quảng cáo khi mở ứng dụng và đặt thời gian chờ là 5 giây:

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();

Khởi chạy các bộ chuyển đổi dàn xếp cụ thể

Nếu biết chính xác những đối tác dàn xếp thường lấp đầy lượt hiển thị quảng cáo đầu tiên của bạn, thì bạn chỉ có thể khởi động bộ chuyển đổi cụ thể đó bằng cách cung cấp tên lớp bộ chuyển đổi trong cấu hình khởi động bộ chuyển đổi. Kết hợp điều này với việc bỏ qua rõ ràng các bộ chuyển đổi chưa được khởi tạo và đặt thời gian chờ cho GMA Next-Gen SDK để không phải chờ các bộ chuyển đổi chưa được khởi tạo còn lại trong phiên đấu giá.

Ví dụ sau đây tạo một cấu hình khởi tạo bộ chuyển đổi để khởi tạo một bộ chuyển đổi dàn xếp cụ thể và đặt thời gian chờ là 5 giây:

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();

Bạn có thể tìm nạp tên lớp bộ chuyển đổi theo phương thức lập trình. Ví dụ sau đây sẽ kéo tên lớp bộ chuyển đổi theo phương thức lập trình:

Kotlin

ExampleMediationAdapter::class.java.name

Java

ExampleMediationAdapter.class.getName()

Loại trừ một số bộ điều hợp hoà giải

Nếu nhận thấy một số bộ điều hợp dàn xếp có độ trễ cao liên tục, bạn có thể loại trừ các bộ điều hợp này và khởi động chúng vào lúc khác.

Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi loại trừ các bộ chuyển đổi cụ thể khỏi quá trình khởi chạy và đặt thời gian chờ là 5 giây:

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();

Bỏ qua các bộ chuyển đổi chưa được khởi chạy

Nếu dự định khởi chạy hoặc loại trừ các bộ điều hợp hoà giải cụ thể, bạn có thể định cấu hình yêu cầu quảng cáo để bỏ qua các bộ điều hợp chưa được khởi chạy vẫn có trong thác nước của bạn.

Nếu không tạo cấu hình bộ chuyển đổi, bạn vẫn có thể định cấu hình yêu cầu quảng cáo để bỏ qua các bộ chuyển đổi chưa được khởi chạy. GMA Next-Gen SDK đưa ra yêu cầu quảng cáo mà không cần chờ bộ chuyển đổi hết thời gian chờ hoặc không khởi động được.

Ví dụ sau đây khởi chạy SDK bằng cấu hình khởi chạy bộ chuyển đổi và tạo một yêu cầu quảng cáo khi mở ứng dụng bỏ qua các bộ chuyển đổi chưa được khởi chạy:

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();
            }
          });
    });

Khởi chạy các bộ chuyển đổi còn lại

Sau khi các cơ hội quảng cáo nhạy cảm về thời gian đã tải xong, hãy khởi chạy các bộ chuyển đổi còn lại để đảm bảo phạm vi dàn xếp đầy đủ của đối tác cho phần còn lại của phiên ứng dụng.

Ví dụ sau đây khởi chạy các bộ chuyển đổi còn lại bằng cách cung cấp một cấu hình trống:

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());