Tải trước quảng cáo là một quy trình tải và lưu vào bộ nhớ đệm do SDK quản lý, giúp bạn không cần phải tải và lưu quảng cáo vào bộ nhớ đệm theo cách thủ công. Quy trình này cho phép bạn hiển thị quảng cáo khi cần mà không phải tải quảng cáo theo cách thủ công hoặc xử lý các lệnh gọi lại tải quảng cáo.
Hướng dẫn này trình bày cách định cấu hình quảng cáo tải trước, kiểm tra trạng thái sẵn có của quảng cáo tải trước, cũng như cách nhận và hiển thị quảng cáo đã tải trước.
Điều kiện tiên quyết
Trước khi tiếp tục với hướng dẫn này, bạn cần hoàn thành các mục sau:
- Cài đặt SDK Quảng cáo của Google trên thiết bị di động (beta) phiên bản 0.14.0-alpha01 trở lên.
- Xem hết hướng dẫn Bắt đầu sử dụng.
- Không bắt buộc: Tải và chạy ứng dụng mẫu.
Bắt đầu tải trước quảng cáo
Để bắt đầu tải trước, hãy gọi startPreload(). SDK Quảng cáo của Google trên thiết bị di động sẽ tự động thử lại các yêu cầu quảng cáo không thành công cho các cấu hình được tải sẵn.
Ví dụ sau đây bắt đầu tải trước quảng cáo:
Kotlin
private fun startPreloading(adUnitID: String) {
val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitID, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
Không bắt buộc: Sửa đổi quảng cáo tải trước
Để thay đổi quảng cáo được tải trước, hãy gọi destroy() rồi gọi lại startPreload() bằng cấu hình đã sửa đổi.
Không bắt buộc: Dừng tải trước quảng cáo
Để dừng tải trước quảng cáo, hãy gọi destroy() bằng mã nhận dạng tải trước.
Không bắt buộc: Đặt dung lượng bộ nhớ đệm
Dung lượng vùng đệm kiểm soát số lượng quảng cáo được tải trước và lưu trữ trong bộ nhớ. Nếu ứng dụng của bạn hiển thị quảng cáo nhanh hơn tốc độ tải quảng cáo mới, hãy đặt kích thước vùng đệm thành một giá trị lớn hơn. Nếu bạn lo ngại về việc sử dụng bộ nhớ, hãy đặt kích thước bộ nhớ đệm thành một giá trị thấp, chẳng hạn như 2.
Kotlin
private fun setBufferSize(adUnitID: String) {
val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
val preloadConfig = PreloadConfiguration(adRequest, bufferSize = 3)
InterstitialAdPreloader.start(adUnitID, preloadConfig)
}
Java
private void setBufferSize(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest, 3);
InterstitialAdPreloader.start(adUnitId, preloadConfig);
}
Không bắt buộc: Nhận thông báo tải trước
Triển khai PreloadCallback để nhận thông báo về các sự kiện tải trước quảng cáo. Để gỡ lỗi và ghi nhật ký, các sự kiện này cung cấp một đối tượng thông tin phản hồi.
Kotlin
private fun startPreloadingWithCallback(adUnitID: String) {
val preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
object : PreloadCallback {
override fun onAdFailedToPreload(preloadId: String, adError: LoadAdError) {
Log.i(
TAG,
("Interstitial preload ad $preloadId failed to load with error: ${adError.message}"),
)
// [Optional] Get the error response info for additional details.
// val responseInfo = adError.responseInfo
}
override fun onAdsExhausted(preloadId: String) {
Log.i(TAG, "Interstitial preload ad $preloadId is not available")
}
override fun onAdPreloaded(preloadId: String, responseInfo: ResponseInfo) {
Log.i(TAG, "Interstitial preload ad $preloadId is available")
}
}
val adRequest: AdRequest = AdRequest.Builder(adUnitID).build()
val preloadConfig = PreloadConfiguration(adRequest)
InterstitialAdPreloader.start(adUnitID, preloadConfig, preloadCallback)
}
Java
private void startPreloadingWithCallback(String adUnitId) {
PreloadCallback preloadCallback =
// [Important] Don't call ad preloader start() or pollAd() within the PreloadCallback.
new PreloadCallback() {
@Override
public void onAdFailedToPreload(String preloadId, LoadAdError adError) {
Log.e(
TAG,
String.format(
"Interstitial preload ad %s failed to load with error: %s",
preloadId, adError.getMessage()));
// [Optional] Get the error response info for additional details.
// ResponseInfo responseInfo = adError.getResponseInfo();
}
@Override
public void onAdsExhausted(String preloadId) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is not available");
}
@Override
public void onAdPreloaded(String preloadId, ResponseInfo responseInfo) {
Log.i(TAG, "Interstitial preload ad " + preloadId + " is available");
}
};
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
InterstitialAdPreloader.start(adUnitId, preloadConfig, preloadCallback);
}
Nhận và hiển thị quảng cáo được tải trước
Quảng cáo sẽ xuất hiện sau khi bạn gọi onAdsAvailable(). Quảng cáo sẽ liên tục được cung cấp khi quảng cáo được hiển thị và hết. Sau khi nhận được quảng cáo, hãy theo dõi các sự kiện trong vòng đời quảng cáo và hiển thị quảng cáo.
Ví dụ sau đây cho thấy một quảng cáo được tải trước:
Kotlin
private fun pollAndShowAd(activity: Activity, adUnitID: String) {
// Polling returns the next available ad and loads another ad in the background.
val ad = InterstitialAdPreloader.pollAd(adUnitID)
// Interact with the ad object as needed.
ad?.apply {
Log.d(TAG, "Interstitial ad response info: ${this.getResponseInfo()}")
this.adEventCallback =
object : InterstitialAdEventCallback {
override fun onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.")
}
override fun onAdPaid(value: AdValue) {
Log.d(TAG, "Interstitial ad onPaidEvent: ${value.valueMicros} ${value.currencyCode}")
}
}
// Show the ad.
ad.show(activity)
}
}
Java
private void pollAndShowAd(Activity activity, String adUnitId) {
// Polling returns the next available ad and loads another ad in the background.
final InterstitialAd ad = InterstitialAdPreloader.pollAd(adUnitId);
// Interact with the ad object as needed.
if (ad != null) {
Log.d(TAG, "Interstitial ad response info: " + ad.getResponseInfo());
ad.setAdEventCallback(
new InterstitialAdEventCallback() {
@Override
public void onAdImpression() {
Log.d(TAG, "Interstitial ad recorded an impression.");
}
@Override
public void onAdPaid(AdValue value) {
Log.d(
TAG,
"Interstitial ad onPaidEvent: "
+ value.getValueMicros()
+ " "
+ value.getCurrencyCode());
}
});
// Show the ad.
ad.show(activity);
}
}
Không bắt buộc: Kiểm tra xem quảng cáo được tải sẵn có sẵn hay không
Để biết quảng cáo có sẵn hay không, hãy gọi isAdAvailable:
Kotlin
private fun isAdAvailable(adUnitID: String): Boolean {
return InterstitialAdPreloader.isAdAvailable(adUnitID)
}
Java
private boolean isAdAvailable(String adUnitId) {
return InterstitialAdPreloader.isAdAvailable(adUnitId);
}