Quảng cáo biểu ngữ

Quảng cáo biểu ngữ là quảng cáo hình chữ nhật chiếm một phần bố cục của ứng dụng. Quảng cáo biểu ngữ vẫn hiển thị trên màn hình trong khi người dùng tương tác với ứng dụng. Loại quảng cáo này nằm cố định ở đầu hoặc cuối màn hình, hoặc xuất hiện cùng với nội dung khi người dùng cuộn xem nội dung. Quảng cáo biểu ngữ có thể tự động làm mới sau một khoảng thời gian nhất định. Xem bài viết Tổng quan về quảng cáo biểu ngữ để biết thêm thông tin.

Hướng dẫn này chỉ cho bạn cách bắt đầu sử dụng quảng cáo biểu ngữ thích ứng cố định, giúp tối đa hoá hiệu suất bằng cách tối ưu hoá kích thước quảng cáo cho từng thiết bị bằng chiều rộng quảng cáo mà bạn chỉ định.

Quảng cáo biểu ngữ thích ứng cố định là quảng cáo có tỷ lệ khung hình cố định thay vì quảng cáo có kích thước cố định thông thường. Tỷ lệ khung hình tương tự như tiêu chuẩn ngành 320x50. Sau khi bạn chỉ định chiều rộng đầy đủ có sẵn, hệ thống sẽ trả về cho bạn một quảng cáo có chiều cao tối ưu cho chiều rộng đó. Chiều cao tối ưu không thay đổi giữa các yêu cầu từ cùng một thiết bị, và các khung hiển thị xung quanh không cần di chuyển khi quảng cáo làm mới.

Đ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 đảm bảo bạn 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:

/21775744923/example/banner

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, 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 riêng 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.

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

Bước đầu tiên để hiển thị biểu ngữ là đặt AdManagerAdView trong bố cục của Activity hoặc Fragment mà bạn muốn hiển thị biểu ngữ .:

Java

private AdSize getAdSize() {
  // Determine the screen width (less decorations) to use for the ad width.
  Display display = getWindowManager().getDefaultDisplay();
  DisplayMetrics outMetrics = new DisplayMetrics();
  display.getMetrics(outMetrics);

  float density = outMetrics.density;

  float adWidthPixels = adContainerView.getWidth();

  // If the ad hasn't been laid out, default to the full screen width.
  if (adWidthPixels == 0) {
    adWidthPixels = outMetrics.widthPixels;
  }

  int adWidth = (int) (adWidthPixels / density);
  return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth);
}

private void loadBanner() {
  
  // Create a new ad view.
  AdManagerAdView adView = new AdManagerAdView(this);
  adView.setAdSizes(getAdSize());
  adView.setAdUnitId("/21775744923/example/banner");

  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin


// Determine the screen width (less decorations) to use for the ad width.
// If the ad hasn't been laid out, default to the full screen width.
private val adSize: AdSize
  get() {
    val display = windowManager.defaultDisplay
    val outMetrics = DisplayMetrics()
    display.getMetrics(outMetrics)

    val density = outMetrics.density

    var adWidthPixels = binding.adViewContainer.width.toFloat()
    if (adWidthPixels == 0f) {
      adWidthPixels = outMetrics.widthPixels.toFloat()
    }

    val adWidth = (adWidthPixels / density).toInt()
    return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth)
  }

private fun loadBanner() {
  
  // Create a new ad view.
  val adView = AdManagerAdView(this)
  adView.adSizes = adSize
  adView.adUnitId = "/21775744923/example/banner"

  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.loadAd(adRequest)
}

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

Sau khi AdManagerAdView đã 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 AdManagerAdView. Phương thức này sử dụng thông số AdManagerAdRequest, giúp lưu giữ thông tin trong thời gian chạy (chẳng hạn như thông tin 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 bằng phương thức onCreate() của Activity:

Java

private void loadBanner() {
  // Create a new ad view.
  adView = new AdManagerAdView(this);
  adView.setAdUnitId(AD_UNIT);
  adView.setAdSize(getAdSize());
  
  // Replace ad container with new ad view.
  adContainerView.removeAllViews();
  adContainerView.addView(adView);

  // Start loading the ad in the background.
  AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
  adView.loadAd(adRequest);
}

Kotlin

private fun loadBanner() {
  // This is an ad unit ID for a test ad. Replace with your own banner ad unit ID.
  adView.adUnitId = "/6499/example/banner"
  adView.setAdSize(adSize)
  
  // Create an ad request.
  val adRequest = AdManagerAdRequest.Builder().build()

  // Start loading the ad in the background.
  adView.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 cách rõ ràng nào khác 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ẽ tuân theo mọi tốc độ làm mới mà bạn đã chỉ định trong Ad Manager giao diện web. Nếu chưa bật tính năng làm mới, bạn sẽ cần đưa ra 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

Bạn có thể theo dõi một số sự kiện trong vòng đời của quảng cáo, bao gồm sự kiện tải, lượt hiển thị và lượt nhấp vào quảng cáo, cũng như sự kiện mở và đóng quảng cáo. Bạn nên đặt lệnh gọi lại trước khi tải biểu ngữ.

Java

AdManagerAdView.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

AdManagerAdView.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 quảng cáo.

Phương thức có thể ghi đè
onAdClicked() Phương thức onAdClicked() sẽ được gọi khi hệ thống ghi lại một lượt nhấp cho 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 xem 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 để ứng dụng sẵn sàng tương tác.
onAdFailedToLoad() onAdFailedToLoad() là phương thức duy nhất chứa 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ề Cách gỡ lỗi tải quảng cáo.
onAdImpression() Phương thức onAdImpression() sẽ được gọi khi hệ thống ghi lại một lượt hiển thị cho quảng cáo.
onAdLoaded() Hệ thống sẽ thực thi phương thức onAdLoaded() khi quảng cáo đã tải xong. Ví dụ: nếu muốn trì hoãn việc thêm AdManagerAdView vào hoạt động hoặc mảnh cho đến khi bạn chắc chắn rằng quảng cáo sẽ được tải, thì bạn có thể thực hiện việc này tại đây.
onAdOpened() Phương thức onAdOpened() được gọi khi một quảng cáo mở lớp phủ trên màn hình.

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 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 khi tính năng tăng tốc phần cứng đang bật trên toàn cầu, 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 <application> và các phần tử <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 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 tuỳ chọn kiểm soát tính năng tăng tốc phần cứng. Lưu ý rằng bạn không thể bật tính năng tăng tốc phần cứng cho các khung hiển thị quảng cáo riêng lẻ nếu hoạt động bị tắt, vì vậy, bạn phải bật tính năng tăng tốc phần cứng cho hoạt động đó.

Tính số lượt hiển thị theo cách thủ công

Phương pháp tính lượt hiển thị thủ công chỉ tương thích với các chiến dịch bán trực tiếp và chiến dịch nội bộ có mẫu quảng cáo được quản lý trực tiếp trong Ad Manager. Bạn không nên sử dụng đối tượng này cho quảng cáo chèn lấp hoặc quảng cáo của mạng bên thứ ba. Để biết thêm thông tin chi tiết, hãy xem bài viết Cách tính số lượt hiển thị và số lượt nhấp.

Bạn có thể gửi các ping lượt hiển thị tới Ad Manager theo cách thủ công nếu có điều kiện đặc biệt về thời điểm ghi lại một lượt hiển thị. Để thực hiện việc này, hãy bật AdManagerAdRequest cho các lượt hiển thị thủ công trước khi tải quảng cáo:

Java

AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

Kotlin

val adRequest = AdManagerAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build()

Khi xác định rằng một quảng cáo đã được trả về thành công và đang hiển thị trên màn hình, bạn có thể tự ghi lại một lượt hiển thị:

Java

AdManagerAdView.recordManualImpression();

Kotlin

AdManagerAdView.recordManualImpression()

Sự kiện ứng dụng

Sự kiện ứng dụng cho phép bạn tạo những quảng cáo có thể gửi tin nhắn đến mã ứng dụng của sự kiện đó. Sau đó, ứng dụng có thể thực hiện hành động dựa trên các thông báo này.

Bạn có thể theo dõi các sự kiện ứng dụng cụ thể của Ad Manager bằng cách sử dụng AppEventListener. Những sự kiện này có thể xảy ra bất cứ lúc nào trong vòng đời của quảng cáo, ngay cả trước khi gọi onAdLoaded().

Java

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

Kotlin

interface AppEventListener {
    fun onAppEvent(name: String, info: String)
}

void onAppEvent(String name, String info) được gọi khi một sự kiện ứng dụng xảy ra trong một quảng cáo. Giao diện này có thể được triển khai bằng hoạt động của bạn hoặc bất kỳ đối tượng nào khác:

Java

import com.google.android.gms.ads.admanager.*;

public class BannerExample extends Activity implements AppEventListener {
}

Kotlin

import com.google.android.gms.ads.admanager.*

class BannerExample : Activity(), AppEventListener {
}

rồi truyền đến AdManagerAdView:

Java

AdManagerAdView.setAppEventListener(this);

Kotlin

AdManagerAdView.appEventListener = this

Dưới đây là ví dụ cho thấy cách thay đổi màu nền của ứng dụng tuỳ thuộc vào một sự kiện ứng dụng kèm theo tên màu:

Java

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info)) {
      // Set background color to green.
    } else if ("blue".equals(info)) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

Kotlin

override fun onAppEvent(name: String?, info: String?) {
    if (name == "color") {
        when (info) {
            "green" -> {
                // Set background color to green.
            }
            "blue" -> {
                // Set background color to blue.
            }
            else -> {
                // Set background color to black.
            }
        }
    }
}

Đây là mẫu quảng cáo tương ứng đã gửi thông báo sự kiện ứng dụng màu cho Trình nghe:

<html>
<head>
  <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      // Send a color=green event when ad loads.
      admob.events.dispatchAppEvent("color", "green");

      document.getElementById("ad").addEventListener("click", function() {
        // Send a color=blue event when ad is clicked.
        admob.events.dispatchAppEvent("color", "blue");
      });
    });
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad">Carpe diem!</div>
</body>
</html>

Xem ví dụ về Sự kiện ứng dụng của Ad Manager để biết cách triển khai các sự kiện ứng dụng trong ứng dụng minh hoạ API.

Kotlin Java

Tài nguyên khác

Ví dụ trên GitHub

  • Ví dụ về quảng cáo biểu ngữ thích ứng cố định: Java | Kotlin
  • Bản minh hoạ các tính năng nâng cao: Java | Kotlin

Các bước tiếp theo

Biểu ngữ có thể thu gọn

Quảng cáo biểu ngữ có thể thu gọn là quảng cáo biểu ngữ ban đầu được hiển thị dưới dạng lớp phủ lớn hơn, với một nút để thu gọn quảng cáo xuống kích thước nhỏ hơn. Hãy cân nhắc sử dụng tính năng này để tối ưu hoá hiệu suất của bạn hơn nữa. Xem bài viết quảng cáo biểu ngữ có thể thu gọn để biết thêm thông tin.

Quảng cáo biểu ngữ thích ứng cùng dòng

Biểu ngữ thích ứng cùng dòng là biểu ngữ lớn hơn, cao hơn so với biểu ngữ thích ứng cố định. Biểu tượng này có nhiều loại chiều cao và có thể cao bằng màn hình của thiết bị. Bạn nên dùng biểu ngữ thích ứng cùng dòng thay vì quảng cáo biểu ngữ thích ứng cố định cho những ứng dụng đặt quảng cáo biểu ngữ trong nội dung có thể cuộn. Xem biểu ngữ thích ứng cùng dòng để biết thêm thông tin chi tiết.

Khám phá các chủ đề khác