Tải quảng cáo gốc

Quảng cáo gốc là thành phần quảng cáo được trình bày cho người dùng thông qua các thành phần giao diện người dùng vốn có của nền tảng. Quảng cáo này hiển thị bằng cách sử dụng chính các loại khung hiển thị mà bạn đã dùng để tạo bố cục, và có thể được định dạng để phù hợp với kiểu thiết kế trực quan của ứng dụng.

Khi một quảng cáo gốc tải, ứng dụng của bạn sẽ nhận được một đối tượng quảng cáo chứa các thành phần của quảng cáo đó, sau đó ứng dụng (chứ không phải Google Mobile Ads SDK (Legacy)) sẽ chịu trách nhiệm hiển thị các thành phần đó.

Nói chung, có 2 bước để triển khai thành công quảng cáo gốc: Tải quảng cáo bằng SDK rồi hiển thị nội dung quảng cáo trong ứng dụng của bạn.

Trang này cho biết cách sử dụng SDK để tải quảng cáo gốc. Lưu ý: Tìm hiểu thêm về quảng cáo gốc trong Cẩm nang về quảng cáo gốc của chúng tôi.

Bạn cũng có thể đọc một số câu chuyện thành công của khách hàng: nghiên cứu điển hình 1, nghiên cứu điển hình 2.

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

Trước khi tiếp tục, hãy thiết lập Google Mobile Ads SDK (Legacy).

Luôn thử nghiệm bằng quảng cáo thử nghiệm

Khi bạn tạo và thử nghiệm ứng dụng, hãy nhớ sử dụng quảng cáo thử nghiệm thay vì quảng cáo đang chạy trong thực tế.

Cách đơn giản nhất để tải quảng cáo thử nghiệm là sử dụng mã đơn vị quảng cáo thử nghiệm dành riêng cho quảng cáo gốc trên Android:

ca-app-pub-3940256099942544/2247696110

Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm cho mọi yêu cầu và bạn có thể sử dụng mã này trong ứng dụng của mình khi lập trình, chạy thử nghiệm và gỡ lỗi. Bạn chỉ cần nhớ thay thế mã này bằng mã đơn vị quảng cáo của mình trước khi xuất bản ứng dụng.

Để biết thông tin chi tiết về quảng cáo thử nghiệm Google Mobile Ads SDK (Legacy), hãy xem bài viết Bật quảng cáo thử nghiệm.

Tải quảng cáo

Quảng cáo gốc được tải bằng lớp AdLoader. Lớp này có lớp Builder riêng để tuỳ chỉnh trong khi tạo. Bằng cách thêm trình nghe vào AdLoader khi tạo, ứng dụng sẽ chỉ định những loại quảng cáo gốc mà ứng dụng sẵn sàng nhận. Sau đó, AdLoader chỉ yêu cầu những loại đó.

Tạo AdLoader

Đoạn mã sau đây minh hoạ cách tạo một AdLoader có thể tải quảng cáo gốc:

Java

// It is recommended to call AdLoader.Builder on a background thread.
new Thread(
        () -> {
          AdLoader adLoader =
              new AdLoader.Builder(context, "AD_UNIT_ID")
                  .forNativeAd(
                      new NativeAd.OnNativeAdLoadedListener() {
                        @Override
                        // The native ad loaded successfully. You can show the ad.
                        public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {}
                      })
                  .withAdListener(
                      new AdListener() {
                        @Override
                        // The native ad load failed. Check the adError message for failure
                        // reasons.
                        public void onAdFailedToLoad(@NonNull LoadAdError adError) {}
                      })
                  // Use the NativeAdOptions.Builder class to specify individual options
                  // settings.
                  .withNativeAdOptions(new NativeAdOptions.Builder().build())
                  .build();
        })
    .start();

Kotlin

// It is recommended to call AdLoader.Builder on a background thread.
CoroutineScope(Dispatchers.IO).launch {
  val adLoader =
    AdLoader.Builder(context, "AD_UNIT_ID")
      .forNativeAd { nativeAd ->
        // The native ad loaded successfully. You can show the ad.
      }
      .withAdListener(
        object : AdListener() {
          override fun onAdFailedToLoad(adError: LoadAdError) {
            // The native ad load failed. Check the adError message for failure reasons.
          }
        }
      )
      // Use the NativeAdOptions.Builder class to specify individual options settings.
      .withNativeAdOptions(NativeAdOptions.Builder().build())
      .build()
}

Thay thế AD_UNIT_ID bằng mã thiết bị thử nghiệm của bạn.

Phương thức forNativeAd() chịu trách nhiệm chuẩn bị AdLoader cho định dạng NativeAd. Khi quảng cáo đã tải thành công, phương thức onNativeAdLoaded() của đối tượng trình nghe sẽ được gọi.

Thiết lập AdListener bằng AdLoader (không bắt buộc)

Khi tạo AdLoader, hàm withAdListener sẽ đặt một AdListener cho trình tải. Phương thức này lấy AdListener làm tham số duy nhất, nhận các lệnh gọi lại từ AdLoader khi các sự kiện vòng đời quảng cáo diễn ra:

Java

adLoaderBuilder.withAdListener(
    // Override AdListener callbacks here.
    new AdListener() {});

Kotlin

adLoaderBuilder.withAdListener(
  // Override AdListener callbacks here.
  object : AdListener() {}
)

Yêu cầu quảng cáo

Sau khi bạn hoàn tất việc tạo một AdLoader, đã đến lúc sử dụng đó để yêu cầu quảng cáo. Có hai phương thức cho việc này: loadAd() và loadAds().

loadAd()

Phương thức này gửi một yêu cầu cho một quảng cáo duy nhất.

Java

adLoader.loadAd(new AdRequest.Builder().build());

Kotlin

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

Phương thức này gửi yêu cầu cho nhiều quảng cáo (tối đa 5 quảng cáo):

Java

// Load three native ads.
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

// Load three native ads.
adLoader.loadAds(AdRequest.Builder().build(), 3)

Cả hai phương thức đều nhận một đối tượng AdRequest làm tham số đầu tiên. Đây là lớp AdRequest tương tự được biểu ngữ và quảng cáo xen kẽ sử dụng, đồng thời bạn có thể sử dụng các phương thức của lớp AdRequest để thêm thông tin nhắm mục tiêu, giống như khi bạn sử dụng các định dạng quảng cáo khác.

Tải nhiều quảng cáo (không bắt buộc)

Phương thức loadAds() có thêm một tham số: số lượng quảng cáo mà SDK sẽ cố gắng tải cho yêu cầu. Số lượng này tối đa là 5 và không đảm bảo rằng SDK sẽ trả về chính xác số lượng quảng cáo được yêu cầu.

Tất cả quảng cáo do Google trả về sẽ khác nhau, mặc dù quảng cáo từ khoảng không quảng cáo được đặt trước hoặc người mua bên thứ ba không được đảm bảo là duy nhất.

Không sử dụng phương thức loadAds() nếu bạn đang sử dụng tính năng dàn xếp, vì các yêu cầu cho nhiều quảng cáo gốc không hoạt động đối với những mã đơn vị quảng cáo đã được định cấu hình cho hoạt động dàn xếp.

Lệnh gọi lại

Sau khi gọi loadAd(), một lệnh gọi lại duy nhất sẽ được thực hiện cho các phương thức của trình nghe đã xác định trước đó để phân phối đối tượng quảng cáo gốc hoặc báo cáo lỗi.

Sau lệnh gọi đến loadAds(), nhiều lệnh gọi lại như vậy sẽ được thực hiện (ít nhất một lệnh gọi lại và không quá số lượng quảng cáo được yêu cầu). Những ứng dụng yêu cầu nhiều quảng cáo phải gọi AdLoader.isLoading() trong quá trình triển khai lệnh gọi lại để xác định xem quá trình tải đã hoàn tất hay chưa.

Dưới đây là ví dụ cho thấy cách kiểm tra isLoading() trong lệnh gọi lại onNativeAdLoaded():

Java

adLoaderBuilder
    .forNativeAd(
        nativeAd -> {
          // This callback is invoked when a native ad is successfully loaded.
        })
    .build();

Kotlin

adLoaderBuilder
  .forNativeAd { nativeAd ->
    // This callback is invoked when a native ad is successfully loaded.
  }
  .build()

Giải phóng tài nguyên

Hãy nhớ sử dụng phương thức destroy() trên quảng cáo gốc đã tải. Thao tác này giải phóng các tài nguyên đã sử dụng và ngăn chặn tình trạng rò rỉ bộ nhớ.

Xác minh rằng tất cả các tham chiếu NativeAd đều bị huỷ trong phương thức onDestroy() của hoạt động.

Trong lệnh gọi lại onNativeAdLoaded, hãy nhớ huỷ mọi quảng cáo gốc hiện có sẽ được huỷ tham chiếu.

Một bước kiểm tra quan trọng khác là xem hoạt động có bị huỷ hay không. Nếu có, hãy gọi destroy() trên quảng cáo được trả về và trả về ngay lập tức:

Java

nativeAd.destroy();

Kotlin

nativeAd.destroy()

Các phương pháp hay nhất

Hãy tuân thủ các quy tắc sau khi tải quảng cáo.

  • Những ứng dụng sử dụng quảng cáo gốc trong danh sách nên lưu trước vào bộ nhớ đệm danh sách quảng cáo.

  • Khi lưu trước quảng cáo vào bộ nhớ đệm, hãy xoá bộ nhớ đệm và tải lại sau một giờ.

  • Đừng gọi loadAd() hoặc loadAds() trên AdLoader cho đến khi yêu cầu đầu tiên hoàn tất quá trình tải.
  • Giới hạn việc lưu vào bộ nhớ đệm quảng cáo gốc chỉ ở những gì cần thiết. Ví dụ: khi lưu vào bộ nhớ đệm trước, chỉ lưu vào bộ nhớ đệm những quảng cáo xuất hiện ngay trên màn hình. Quảng cáo gốc có mức sử dụng bộ nhớ lớn và việc lưu vào bộ nhớ đệm quảng cáo gốc mà không hủy chúng sẽ dẫn đến việc sử dụng quá nhiều bộ nhớ.

  • Huỷ quảng cáo gốc khi không còn sử dụng nữa.

Tăng tốc phần cứng cho quảng cáo dạng video

Để quảng cáo dạng video xuất hiện thành công trong chế độ xem quảng cáo gốc, bạn phải bật tính năng tăng tốc phần cứng.

Tính năng tăng tốc phần cứng được bật theo mặc định, nhưng một số ứng dụng có thể chọn tắt tính năng này. Nếu sử dụng tính năng tăng tốc phần cứng cho ứng dụng của mình, bạn nên bật tính năng này cho các lớp Hoạt động có sử dụng quảng cáo.

Bật tính năng tăng tốc phần cứng

Nếu ứng dụng của bạn hoạt động không đúng cách trên toàn cầu khi tính năng tăng tốc phần cứng đang bật, thì bạn vẫn có thể kiểm soát tính năng này cho các hoạt động riêng lẻ. Để bật hoặc tắt tính năng tăng tốc phần cứng, hãy sử dụng thuộc tính android:hardwareAccelerated cho các phần tử <application> và <activity> trong AndroidManifest.xml. Ví dụ sau đây bật tính năng tăng tốc phần cứng cho toàn bộ ứng dụng nhưng tắt tính năng này đối với một hoạt động:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

Xem hướng dẫn tăng tốc phần cứng để biết thêm thông tin về các cách kiểm soát tính năng tăng tốc phần cứng. Xin lưu ý rằng hệ thống không thể bật chế độ xem quảng cáo riêng lẻ để tăng tốc phần cứng nếu Hoạt động đang tắt, do đó, Hoạt động phải tự bật tính năng tăng tốc phần cứng.

Hiển thị quảng cáo của bạn

Sau khi bạn tải một quảng cáo, tất cả những gì còn lại là hiển thị quảng cáo đó cho người dùng. Hãy xem Hướng dẫn về Quảng cáo gốc nâng cao của chúng tôi để biết cách thực hiện.