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. Chúng luô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, hoặc cố định ở ở đầu hoặc cuối màn hình hoặc cùng dòng với nội dung khi người dùng cuộn. Biểu ngữ quảng cáo 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 cố định quảng cáo biểu ngữ thích ứng, 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 mỗi thiết bị sử dụ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. Tỷ lệ khung hình tương tự như tiêu chuẩn ngành 320x50. Một lần bạn chỉ định chiều rộng đầy đủ có sẵn, tuỳ chọn này sẽ trả về cho bạn quảng cáo có chiều cao 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 chế độ xem xung quanh không cần phải 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 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:

/6499/example/adaptive-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 nó trong ứng dụng của riêng bạn khi lập trình, thử nghiệm và gỡ lỗi. Hãy đảm bảo rằng bạn hãy thay thế mã này bằng mã đơn vị quảng cáo của riêng bạn 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 Thử nghiệm Google Ads.

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 cho Activity hoặc Fragment mà bạn muốn hiển thị nó:

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("/6499/example/adaptive-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 = "/6499/example/adaptive-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. Đã hoàn tất việc này bằng loadAd() trong lớp AdManagerAdView. Bạn sẽ mất AdManagerAdRequest tham số, chứa thông tin trong thời gian chạy, chẳng hạn như thông tin nhắm mục tiêu, về yêu cầu quảng cáo duy nhất.

Sau đâ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 một 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, bạn không cần phải yêu cầu một cách rõ ràng một quảng cáo khác như 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 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 phải gửi một của bạn.

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 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 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() onAdClicked() được gọi khi một lần nhấp được ghi lại cho một quảng cáo.
onAdClosed() onAdClosed() được gọi khi người dùng quay lại ứng dụng sau khi xem URL đích. Ứng dụng của bạn có thể dùng mã 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 để chuẩn bị sẵn sàng cho hoạt độ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 phần Gỡ lỗi tải quảng cáo .
onAdImpression() onAdImpression() được gọi khi một lượt hiển thị được ghi lại cho một quảng cáo.
onAdLoaded() onAdLoaded() được thực thi khi quảng cáo tải xong. Nếu bạn muốn hoãn thêm AdManagerAdView đối với hoạt động hoặc mảnh của bạn cho đến khi bạn chắc chắn rằng quảng cáo sẽ được tải, cho ví dụ, bạn có thể làm như vậy tại đây.
onAdOpened() onAdOpened() được gọi khi một quảng cáo mở lớp phủ bao phủ màn hình.

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

Để quảng cáo video hiển thị thành công ở chế độ xem quảng cáo biểu ngữ, phần cứng tăng tốc phải không được bật.

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 nó. Nếu điều này đúng với ứng dụng của bạn, bạn nên bật chế độ 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 bật tính năng tăng tốc phần cứng trên toàn cầu, bạn cũng có thể kiểm soát dữ liệu đó cho từng 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 android:hardwareAccelerated cho <application><activity> trong AndroidManifest.xml của bạn. Ví dụ sau đây bật tính năng 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 bài viết Tăng tốc phần cứng hướng dẫn để biết thêm thông tin về các tuỳ chọn kiểm soát tăng tốc phần cứng. Lưu ý rằng bạn 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 bị tắt nên hoạt động phải tự bật tính năng tăng tốc phần cứng.

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

Phương pháp đếm số lượt hiển thị thủ công chỉ tương thích với phương pháp bán trực tiếp và quảng cáo tự quảng bá chiến dịch có quảng cáo được quản lý trực tiếp trong Ad Manager. Không nên được sử dụng 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 chi tiết, hãy xem phần Cách tính lượt hiển thị và lượt nhấp.

Bạn có thể gửi ping hiển thị tới Ad Manager theo cách thủ công nếu bạn có các điều kiện về thời điểm ghi lại một lượt hiển thị. Để làm điều 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 bạn 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ể ghi lại một lượt hiển thị theo cách thủ công:

Java

{ ad_view }.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 đó. Ứng dụng thì có thể hành động dựa trên các tin nhắn 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 kỳ lúc nào trong vòng đời của quảng cáo, thậm chí trước khi onAdLoaded() sẽ được gọi.

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 theo hoạt động của bạn hoặc bất kỳ đối tượng:

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ụ minh hoạ cách thay đổi màu nền của ứng dụng tuỳ thuộc vào 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 sẽ gửi thông báo sự kiện ứng dụng màu tới 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 Ad Manager để biết cách triển khai sự kiện ứng dụng trong Ứng dụng minh hoạ API.

Java Kotlin

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 trình bày dưới dạng quảng cáo biểu ngữ lớn hơn có nút để thu gọn quảng cáo xuống kích thước nhỏ hơn. Cân nhắc sử dụng để tối ưu hoá hiệu suất 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 ngữ. 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ị. Nên dùng quảng cáo 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 nội dung thích ứng cùng dòng biểu ngữ để tìm hiểu thêm chi tiết.

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