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. Hãy 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 cho bạn biết cách bắt đầu sử dụng quảng cáo biểu ngữ thích ứng được cố định. Loại quảng cáo này 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 cách 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 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 thành phần 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
- Xem hết hướng dẫn Bắt đầu sử dụng.
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ế. Nếu không làm như vậy, tài khoản của bạn có thể bị tạm ngưng.
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 biểu ngữ trên Android:
/21775744923/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 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 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ạn tạo biểu ngữ bằng cách xác định kích thước quảng cáo. Hãy hoàn tất các bước sau:
Tạo kích thước quảng cáo thích ứng được cố định toàn chiều rộng:
Java
// Get the ad size with screen width. public AdSize getAdSize() { DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int adWidthPixels = displayMetrics.widthPixels; if (VERSION.SDK_INT >= VERSION_CODES.R) { WindowMetrics windowMetrics = this.getWindowManager().getCurrentWindowMetrics(); adWidthPixels = windowMetrics.getBounds().width(); } float density = displayMetrics.density; int adWidth = (int) (adWidthPixels / density); return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth); }
Kotlin
// Get the ad size with screen width. private val adSize: AdSize get() { val displayMetrics = resources.displayMetrics val adWidthPixels = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val windowMetrics: WindowMetrics = this.windowManager.currentWindowMetrics windowMetrics.bounds.width() } else { displayMetrics.widthPixels } val density = displayMetrics.density val adWidth = (adWidthPixels / density).toInt() return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(this, adWidth) }
Tạo
AdManagerAdView
bằng kích thước quảng cáo và thêm vào bố cục của ứng dụng:Java
// 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);
Kotlin
// Create a new ad view. val adView = AdManagerAdView(this) adView.adUnitId = AD_UNIT_ID adView.setAdSize(adSize) this.adView = adView // Replace ad container with new ad view. binding.adViewContainer.removeAllViews() binding.adViewContainer.addView(adView)
Tải 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ụ về cách tải một quảng cáo:
Java
// Start loading the ad in the background.
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
adView.loadAd(adRequest);
Kotlin
// Start loading the ad in the background.
val adRequest = AdManagerAdRequest.Builder().build()
adView.loadAd(adRequest)
Nếu thành công, ứng dụng của bạn đã sẵn sàng hiển thị quảng cáo biểu ngữ.
Làm mới quảng cáo
Nếu đã định cấu hình đơn vị quảng cáo để làm mới, bạn không cần yêu cầu một quảng cáo khác khi quảng cáo không tải được. 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 giao diện người dùng Ad Manager. Nếu bạn chưa bật tính năng làm mới, hãy đưa ra yêu cầu mới. Để biết thêm thông tin chi tiết về việc làm mới đơn vị quảng cáo, chẳng hạn như việc đặt tốc độ làm mới, hãy xem bài viết Tốc độ làm mới của quảng cáo trong ứng dụng dành cho thiết bị di độ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 cả 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
adView.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
adView.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() sẽ được gọi khi hệ thống ghi lại một lượt nhấp vào 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 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.
|
onAdFailedToLoad() |
onAdFailedToLoad() là phương thức duy nhất có chứa thông số. Thông số lỗi thuộc loại LoadAdError sẽ 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ị quảng cáo.
|
onAdLoaded() |
Phương thức onAdLoaded() sẽ được thực thi sau khi quảng cáo đã tải xong. Ví dụ: nếu bạn muốn trì hoãn việc thêm AdManagerAdView 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ể thực hiện việc này tại đây.
|
onAdOpened() |
Phương thức onAdOpened() sẽ đượ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ũ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 Activity
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, bạn có thể sử dụng thuộc tính android:hardwareAccelerated
cho phần tử <application>
và <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 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.
Tính số lượt hiển thị theo cách thủ công
Tính năng tính số lượt hiển thị theo cách thủ công chỉ tương thích với chiến dịch bán trực tiếp và chiến dịch tự quảng 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 tính nă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 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ị. Để làm 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ể 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 thông báo đến mã ứng dụng của sự kiện đó. Sau đó, ứng dụng có thể 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 dành riêng cho 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 chu trình hoạt động của quảng cáo, ngay cả trước khi hệ thống 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 thực hiện bởi 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 chuyển vào 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 sự kiện ứng dụng có 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 kèm 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 Ad Manager để biết cách triển khai sự kiện ứng dụng trong ứng dụng API Demo.
Tài nguyên khác
Ví dụ trên GitHub
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 một lớp phủ lớn hơn, với một nút để thu gọn quảng cáo về 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 hơn nữa. Hãy xem phần quảng cáo biểu ngữ có thể thu gọn để biết thêm thông tin.
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. Loại biểu 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 sử 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. Hãy xem bài viết biểu ngữ thích ứng nội tuyến để biết thêm thông tin chi tiết.