Quảng cáo biểu ngữ

Quảng cáo biểu ngữ chiếm một phần trong bố cục của ứng dụng, ở trên cùng hoặc dưới cùng màn hình thiết bị. Những quảng cáo này nằm trên màn hình trong khi người dùng tương tác với ứng dụng và có thể tự động làm mới sau một khoảng thời gian nhất định. Nếu bạn mới sử dụng quảng cáo trên thiết bị di động, thì đây là loại quảng cáo rất phù hợp để bắt đầu. Nghiên cứu điển hình.

Tài liệu hướng dẫn này trình bày cách tích hợp quảng cáo biểu ngữ từ AdMob vào một ứng dụng Android. Ngoài đoạn mã và thông tin hướng dẫn, bài viết này còn cung cấp thông tin về cách xác định kích thước biểu ngữ cho phù hợp và đường liên kết đến các tài liệu tham khảo khác.

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

Thêm AdView vào bố cục

Bước đầu tiên để hiển thị biểu ngữ là đặt AdView trong bố cục cho Activity hoặc Fragment (nơi bạn muốn biểu ngữ hiển thị). Cách dễ nhất để làm việc này là thêm một mã vào tệp bố cục XML tương ứng. Dưới đây là ví dụ cho thấy AdView của một hoạt động:

# main_activity.xml
<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    ads:adSize="BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

Xin lưu ý các thuộc tính bắt buộc sau:

  • ads:adSize: Đặt thuộc tính này thành kích thước quảng cáo mà bạn muốn sử dụng. Nếu không muốn sử dụng kích thước chuẩn do hằng số xác định, bạn có thể đặt kích thước tuỳ chỉnh. Xem phần kích thước biểu ngữ để biết chi tiết.

  • ads:adUnitId: Đặt giá trị này thành giá trị nhận dạng riêng biệt được cấp cho đơn vị quảng cáo trong ứng dụng mà quảng cáo sẽ hiển thị. Nếu bạn hiển thị quảng cáo biểu ngữ trong các hoạt động khác nhau, thì mỗi hoạt động sẽ cần một đơn vị quảng cáo.

Ngoài ra, bạn có thể tạo AdView theo phương thức lập trình:

Java

AdView adView = new AdView(this);

adView.setAdSize(AdSize.BANNER);

adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
// TODO: Add adView to your view hierarchy.

Kotlin

val adView = AdView(this)

adView.adSize = AdSize.BANNER

adView.adUnitId = "ca-app-pub-3940256099942544/6300978111"
// TODO: Add adView to your view hierarchy.

Luôn kiểm tra 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 thực tế. Chúng tôi có thể tạm ngưng tài khoản của bạn nếu bạn không làm như vậy.

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 biểu ngữ Android:

ca-app-pub-3940256099942544/6300978111

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ê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 trên thiết bị di động, hãy xem bài viết Quảng cáo thử nghiệm.

Tải một quảng cáo

Sau khi AdView đã sẵn sàng, bước tiếp theo là tải quảng cáo. Bạn có thể thực hiện việc này bằng cách sử dụng phương thức loadAd() trong lớp AdView. Phương thức này sử dụng thông số AdRequest, giúp lưu giữ thông tin thời gian chạy (chẳng hạn như thông tin về tiêu chí nhắm mục tiêu) về một yêu cầu quảng cáo.

Dưới đây là ví dụ cho thấy cách tải một quảng cáo trong phương thức onCreate() của Activity:

MainActivity (phần trích dẫn)

Java

package ...

import ...
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;

public class MainActivity extends AppCompatActivity {
    private AdView mAdView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            @Override
            public void onInitializationComplete(InitializationStatus initializationStatus) {
            }
        });

        mAdView = findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);
    }
}

Kotlin

package ...

import ...
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdView

class MainActivity : AppCompatActivity() {

    lateinit var mAdView : AdView

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

        MobileAds.initialize(this) {}

        mAdView = findViewById(R.id.adView)
        val adRequest = AdRequest.Builder().build()
        mAdView.loadAd(adRequest)
    }
}

Nếu quảng cáo của bạn không tải được, thì bạn không cần yêu cầu một quảng cáo khác một cách rõ ràng, miễn là bạn đã định cấu hình đơn vị quảng cáo để làm mới; SDK quảng cáo trên thiết bị di động của Google sẽ xem xét mọi tốc độ làm mới mà bạn đã chỉ định trong giao diện webAdMob . Nếu chưa kích hoạt tính năng làm mới, bạn sẽ phải gửi một yêu cầu mới.

Vậy là xong! Bây giờ, ứng dụng của bạn đã sẵn sàng hiển thị quảng cáo biểu ngữ.

Sự kiện quảng cáo

Để tuỳ chỉnh thêm hoạt động của quảng cáo, bạn có thể dựa vào một số sự kiện trong vòng đời của quảng cáo: tải, mở, đóng và các sự kiện khác. Bạn có thể theo dõi các sự kiện này thông qua lớp AdListener.

Để sử dụng AdListener thông qua AdView, hãy gọi phương thức setAdListener():

Java

mAdView.setAdListener(new AdListener() {
    @Override
    public void onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    @Override
    public void onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    @Override
    public void onAdFailedToLoad(LoadAdError adError) {
      // Code to be executed when an ad request fails.
    }

    @Override
    public void onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    @Override
    public void onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    @Override
    public void onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
});

Kotlin

mAdView.adListener = object: AdListener() {
    override fun onAdClicked() {
      // Code to be executed when the user clicks on an ad.
    }

    override fun onAdClosed() {
      // Code to be executed when the user is about to return
      // to the app after tapping on an ad.
    }

    override fun onAdFailedToLoad(adError : LoadAdError) {
      // Code to be executed when an ad request fails.
    }

    override fun onAdImpression() {
      // Code to be executed when an impression is recorded
      // for an ad.
    }

    override fun onAdLoaded() {
      // Code to be executed when an ad finishes loading.
    }

    override fun onAdOpened() {
      // Code to be executed when an ad opens an overlay that
      // covers the screen.
    }
}

Mỗi phương thức có thể ghi đè trong AdListener đều tương ứng với một sự kiện trong vòng đời của một quảng cáo.

Phương thức có thể ghi đè
onAdClicked() Phương thức onAdClicked() được gọi khi hệ thống ghi lại một lượt nhấp đối với quảng cáo.
onAdClosed() Phương thức onAdClosed() được gọi khi người dùng quay lại ứng dụng sau khi truy cập vào URL đích của một quảng cáo. Ứng dụng của bạn có thể sử dụng phương thức này để tiếp tục các hoạt động bị tạm ngưng hoặc thực hiện mọi hoạt động cần thiết khác để giúp ứng dụng sẵn sàng tương tác. Hãy tham khảo ví dụ về AdListener của AdMob để biết cách triển khai các phương thức của trình nghe quảng cáo trong ứng dụng Android API Demo.
onAdFailedToLoad() onAdFailedToLoad() là phương thức duy nhất có chứa một thông số. Thông số lỗi thuộc loại LoadAdError mô tả lỗi đã xảy ra. Để biết thêm thông tin, hãy tham khảo tài liệu về Gỡ lỗi tải quảng cáo.
onAdImpression() Phương thức onAdImpression() được gọi khi hệ thống ghi lại một lượt hiển thị cho một quảng cáo.
onAdLoaded() Hệ thống sẽ thực thi phương thức onAdLoaded() sau khi quảng cáo đã tải xong. Ví dụ: nếu muốn trì hoãn việc thêm AdView vào hoạt động hoặc mảnh của mình cho đến khi chắc chắn rằng quảng cáo sẽ được tải, thì bạn có thể trì hoãn việc thêm quảng cáo tại đây.
onAdOpened() Phương thức onAdOpened() được gọi khi quảng cáo mở lớp phủ che phủ màn hình.

Vùng chứa mà bạn đặt quảng cáo ít nhất phải lớn bằng biểu ngữ. Nếu vùng chứa của bạn có khoảng đệm, điều đó sẽ làm giảm đáng kể kích thước của vùng chứa. Trong trường hợp vùng chứa không vừa với quảng cáo dạng biểu ngữ, biểu ngữ sẽ không xuất hiện và bạn sẽ nhận được cảnh báo này trong nhật ký:

W/Ads: Not enough space to show ad. Needs 320x50 dp, but only has 288x495 dp.

Dưới đây là bảng liệt kê các kích thước biểu ngữ chuẩn.

Kích thước đo bằng dp (RxC) Nội dung mô tả Phạm vi cung cấp Hằng số AdSize
320x50 Biểu ngữ Điện thoại và máy tính bảng BANNER
320x100 Biểu ngữ lớn Điện thoại và máy tính bảng LARGE_BANNER
300x250 Hình chữ nhật trung bình IAB Điện thoại và máy tính bảng MEDIUM_RECTANGLE
468x60 Biểu ngữ có kích thước đầy đủ IAB Máy tính bảng FULL_BANNER
728x90 Hình chữ nhật dài IAB Máy tính bảng LEADERBOARD
Chiều rộng đã cho x Chiều cao thích ứng Biểu ngữ thích ứng Điện thoại và máy tính bảng Không áp dụng
Chiều rộng màn hình x 32|50|90 Biểu ngữ thông minh Điện thoại và máy tính bảng SMART_BANNER

Để xác định kích thước biểu ngữ tuỳ chỉnh, hãy đặt AdSize mà bạn muốn như sau:

Java

AdSize adSize = new AdSize(300, 50);

Kotlin

val adSize = AdSize(300, 50)

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 biểu ngữ, 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 điều này đúng với ứng dụng của bạn, bạn nên bật tính năng tăng tốc phần cứng cho các lớp Activity sử dụng quảng cáo.

Bật chế độ 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 được 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, bạn có thể sử dụng thuộc tính android:hardwareAccelerated cho các phần tử <application><activity> trong AndroidManifest.xml. 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 tuỳ chọn kiểm soát tính năng tăng tốc phần cứng. Xin lưu ý rằng bạn không thể bật các khung hiển thị quảng cáo riêng lẻ để tăng tốc phần cứng nếu hoạt động đó bị tắt, vì vậy, bản thân hoạt động đó phải bật tính năng tăng tốc phần cứng.

Tài nguyên khác

Ví dụ trên GitHub

  • Ví dụ về quảng cáo biểu ngữ: Java | Kotlin

  • Bản minh hoạ các tính năng nâng cao: Java | Kotlin

  • Ứng dụng mẫu về RecyclerView của biểu ngữ: Java

Video hướng dẫn về Trung tâm quảng cáo trên thiết bị di động

Câu chuyện thành công

Các bước tiếp theo

Khám phá các chủ đề sau: