Di chuyển sang GMA Next-Gen SDK

Trang này trình bày hướng dẫn khởi động GMA Next-Gen SDK.

Trước khi bắt đầu

Hướng dẫn này dành cho các nhà xuất bản và nền tảng bên thứ ba tích hợp trực tiếp GMA Next-Gen SDK.

Nếu bạn kết nối với AdMob thông qua một nền tảng dàn xếp của bên thứ ba có hỗ trợ tính năng đặt giá thầu của đối tác, hãy xem bảng sau để xác nhận khả năng tương thích của nền tảng đó với GMA Next-Gen SDK.

Nền tảng dàn xếp Tương thích với GMA Next-Gen SDK
AdMost
AppLovin MAX
Chartboost Mediation
DT Fairbid
Gravite
Nimbus
TopOn
TradPlus VisiM
Unity LevelPlay

Nếu bạn muốn sử dụng một nền tảng dàn xếp không tương thích với GMA Next-Gen SDK, hãy liên hệ với nền tảng dàn xếp đó để yêu cầu hỗ trợ.

Định cấu hình bản dựng cho GMA Next-Gen SDK

Các phần sau đây trình bày các bước cần thiết để định cấu hình GMA Next-Gen SDK.

Thêm phần phụ thuộc GMA Next-Gen SDK

GMA Next-Gen SDK yêu cầu một phần phụ thuộc Gradle khác. Trong tệp bản dựng ở cấp ứng dụng, hãy xoá tệp tham chiếu đến phần phụ thuộc Google Mobile Ads SDK (Legacy) và thêm cấu phần phần mềm mới.

Phần phụ thuộc Gradle
Google Mobile Ads SDK (Legacy)

Kotlin

dependencies {
  // ...
  implementation("com.google.android.gms:play-services-ads:25.5.0")
}

Groovy

dependencies {
  // ...
  implementation 'com.google.android.gms:play-services-ads:25.5.0'
}
GMA Next-Gen SDK

Kotlin

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation("com.google.android.gms:play-services-ads:25.5.0")
  implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.5.0")
}

Groovy

dependencies {
  // ...
  // Comment out/remove play-services-ads.
  // implementation 'com.google.android.gms:play-services-ads:25.5.0'
  implementation 'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.5.0'
}

Loại trừ các mô-đun com.google.android.gms trong các chế độ tích hợp dàn xếp

Bộ chuyển đổi dàn xếp tiếp tục phụ thuộc vào Google Mobile Ads SDK (Legacy). Tuy nhiên, GMA Next-Gen SDK bao gồm tất cả các lớp mà bộ chuyển đổi dàn xếp yêu cầu. Để tránh lỗi biên dịch liên quan đến các biểu tượng trùng lặp, bạn cần loại trừ Google Mobile Ads SDK (Legacy) khỏi việc được các bộ chuyển đổi dàn xếp kéo vào dưới dạng phần phụ thuộc.

Trong tệp bản dựng cấp ứng dụng, hãy loại trừ cả mô-đun play-services-ads và play-services-ads-lite trên toàn hệ thống khỏi tất cả phần phụ thuộc.

Kotlin

configurations.configureEach {
    exclude(group = "com.google.android.gms", module = "play-services-ads")
    exclude(group = "com.google.android.gms", module = "play-services-ads-lite")
}

Groovy

configurations.configureEach {
    exclude group: "com.google.android.gms", module: "play-services-ads"
    exclude group: "com.google.android.gms", module: "play-services-ads-lite"
}

Đặt cấp độ API Android tối thiểu và cấp độ API Android biên dịch

GMA Next-Gen SDK yêu cầu cấp độ API Android tối thiểu là 24 và cấp độ API Android biên dịch là 34. Điều chỉnh giá trị minSdk và compileSdk trong tệp bản dựng cấp ứng dụng thành 24 trở lên và 34 trở lên, tương ứng.

Khởi chạy GMA Next-Gen SDK

GMA Next-Gen SDK yêu cầu khởi chạy trước khi tải quảng cáo, một thay đổi từ Google Mobile Ads SDK (Legacy) trong đó việc khởi chạy là không bắt buộc nhưng được khuyến nghị. Cập nhật mã nếu trước đây bạn chưa khởi chạy SDK trước khi tải quảng cáo.

Phần này trình bày những điểm khác biệt trong cách triển khai khởi chạy SDK giữa Google Mobile Ads SDK (Legacy) và GMA Next-Gen SDK.

Đặt mã ứng dụng AdMob

Các ví dụ sau đây đặt mã ứng dụng AdMob trong Google Mobile Ads SDK (Legacy) và GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

Để tích hợp, bạn cần có thẻ <meta-data> với android:name="com.google.android.gms.ads.APPLICATION_ID" chứa mã ứng dụng AdMob trong tệp AndroidManifest.xml của ứng dụng.

<manifest>
  <application>
    <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="SAMPLE_APP_ID"/>
  </application>
</manifest>
GMA Next-Gen SDK

Cung cấp mã ứng dụng AdMob theo phương thức lập trình trong quá trình khởi chạy SDK.

Kotlin

// Initialize the Google Mobile Ads SDK.
val initConfig = InitializationConfig.Builder("SAMPLE_APP_ID").build()
MobileAds.initialize(this@MainActivity, initConfig) {}

Java

// Initialize GMA Next-Gen SDK.
InitializationConfig initConfig =
    new InitializationConfig.Builder("SAMPLE_APP_ID").build();
MobileAds.initialize(this, initConfig, initializationStatus -> {});

Xem lại các thay đổi về cách triển khai

Các ví dụ sau đây khởi động Google Mobile Ads SDK (Legacy) và GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

Gọi MobileAds.initialize() để khởi chạy SDK Quảng cáo của Google trên thiết bị di động. Bạn nên khởi chạy trên một luồng nền để giảm lỗi ANR.

Kotlin

import com.google.android.gms.ads.MobileAds
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize the Google Mobile Ads SDK on a background thread.
      MobileAds.initialize(this@MainActivity) {}
    }
  }
}

Java

import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize the Google Mobile Ads SDK on a background thread.
              MobileAds.initialize(this, initializationStatus -> {});
            })
        .start();
  }
}
GMA Next-Gen SDK

Gọi MobileAds.initialize() để khởi động GMA Next-Gen SDK. Bạn phải gọi phương thức này trên một luồng nền, nếu không thì có thể gây ra lỗi "Ứng dụng không phản hồi" (ANR).

Kotlin

import com.google.android.libraries.ads.mobile.sdk.MobileAds
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val backgroundScope = CoroutineScope(Dispatchers.IO)
    backgroundScope.launch {
      // Initialize GMA Next-Gen SDK on a background thread.
      MobileAds.initialize(
        this@MainActivity,
        // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
        InitializationConfig.Builder("SAMPLE_APP_ID").build()
      ) {
        // Adapter initialization is complete.
      }
      // SDK initialization is complete. If you don't want to wait for bidding adapters to finish
      // initializing, start loading ads now.
    }
  }
}

Java

import com.google.android.libraries.ads.mobile.sdk.MobileAds;
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;

public class MainActivity extends AppCompatActivity {
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(
            () -> {
              // Initialize GMA Next-Gen SDK on a background thread.
              MobileAds.initialize(
                  this,
                  // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
                  new InitializationConfig.Builder("SAMPLE_APP_ID")
                      .build(),
                  initializationStatus -> {
                    // Adapter initialization is complete.
                  });
              // SDK initialization is complete. If you don't want to wait for bidding adapters to
              // finish initializing, start loading ads now.
            })
        .start();
  }
}