Quảng cáo gốc

Quảng cáo gốc là thành phần quảng cáo hiển thị 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. Những quảng cáo này hiển thị bằng cách sử dụng các loại chế độ xem tương tự mà bạn đã tạo bố cục, và có thể được định dạng cho 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 đó, và ứng dụng (thay vì SDK quảng cáo trên thiết bị di động của Google) sẽ chịu trách nhiệm hiển thị các thành phần đó.

Nói chung, có hai 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. Mẹo: 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ể xem 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

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

Khi 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 dễ 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 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êm thông tin về cách hoạt động của quảng cáo thử nghiệm của SDK Quảng cáo của Google trên thiết bị di động, hãy xem bài viế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 quảng cáo, ứng dụng sẽ chỉ định các loại quảng cáo gốc có thể nhận. Sau đó, AdLoader sẽ chỉ yêu cầu các loại quảng cáo đó.

Tạo AdLoader

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

Java

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

Kotlin

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

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

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

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

Java

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

Kotlin

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

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

Sau khi tạo xong AdLoader, bạn có thể sử dụng trình xử lý này để yêu cầu quảng cáo. Bạn có thể sử dụng hai phương thức sau để thực hiện việc này: loadAd()loadAds().

loadAd()

Phương thức này sẽ gửi yêu cầu về một quảng cáo.

Java

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

Kotlin

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

loadAds()

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

Java

adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

adLoader.loadAds(AdRequest.Builder().build(), 3)

Cả hai phương thức này đều lấy đối tượng AdRequest làm tham số đầu tiên. Lớp AdRequest này giống với lớp mà quảng cáo biểu ngữ và quảng cáo xen kẽ sử dụng. 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ư cách bạn thực hiện với 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() sẽ lấy thêm một thông số: số lượng quảng cáo mà SDK sẽ tìm cách tải cho yêu cầu đó. SDK chỉ có thể tải tối đa 5 quảng cáo và hệ thống không đảm bảo rằng SDK sẽ trả về đúng số lượng quảng cáo mà bạn đã yêu cầu.

Tất cả quảng cáo của Google được 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.

Đừ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 về nhiều quảng cáo gốc hiện không hoạt động đối với mã đơn vị quảng cáo đã được định cấu hình cho tính năng dàn xếp.

Lệnh gọi lại

Sau khi gọi loadAd(), một lệnh gọi lại sẽ được thực hiện đến các phương thức 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 khi gọi loadAds(), hệ thống sẽ thực hiện nhiều lệnh gọi lại như vậy (ít nhất là 1 và không nhiều hơn số lượng quảng cáo đã yêu cầu). Các ứng dụng yêu cầu nhiều quảng cáo sẽ gọi AdLoader.isLoading() trong các quá trình triển khai lệnh gọi lại để xác định xem liệu quá trình tải đã hoàn tất hay chưa.

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

Java

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

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

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

Đảm bảo rằng tất cả tệp 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ẽ bị huỷ tham chiếu.

Một bước kiểm tra quan trọng khác là xem hoạt động có bị huỷ bỏ 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

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

Kotlin

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

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

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

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

  • Khi lưu quảng cáo vào bộ nhớ đệm trước, 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 tải xong.

  • Chỉ lưu quảng cáo gốc vào bộ nhớ đệm khi cần thiết. Ví dụ: khi lưu các quảng cáo vào bộ nhớ đệm, chỉ lưu các quảng cáo hiển thị ngay trên màn hình vào bộ nhớ đệm. Quảng cáo gốc chiếm nhiều bộ nhớ và việc lưu quảng cáo gốc vào bộ nhớ đệm mà không huỷ bỏ các quảng cáo đó sẽ dẫn đến việc sử dụng bộ nhớ quá mức.

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

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

Để quảng cáo dạng video hiển thị thành công ở 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ũ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 cũng 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><activity> trong AndroidManifest.xml của bạn. Ví dụ sau đây sẽ bật tính năng tăng tốc phần cứng cho toàn bộ ứng dụng, nhưng sẽ tắt tính năng này cho 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

Sau khi bạn đã tải quảng cáo, tất cả công việc 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.