Tải trước quảng cáo là một tính năng tải quảng cáo do Google quản lý trong Google Mobile Ads SDK. Tính năng này sẽ thay mặt bạn quản lý việc tải và lưu vào bộ nhớ đệm quảng cáo. Tính năng tải trước quảng cáo yêu cầu bạn thay đổi cách quản lý việc tải quảng cáo. Để tối ưu hoá hiệu suất bằng cách sử dụng tính năng tải trước quảng cáo, hãy tắt tính năng lưu vào bộ nhớ đệm tuỳ chỉnh và uỷ quyền trách nhiệm đó cho Google Mobile Ads SDK.
Việc tải trước quảng cáo mang lại những lợi ích sau so với việc tải quảng cáo theo cách thủ công:
- Quản lý tài liệu tham khảo: giữ các quảng cáo đã tải để bạn không phải duy trì tài liệu tham khảo cho đến khi sẵn sàng hiển thị.
- Tự động tải lại: tự động tải một quảng cáo mới khi bạn kéo một quảng cáo ra khỏi bộ nhớ đệm.
- Thử lại được quản lý: tự động thử lại các yêu cầu không thành công bằng cách sử dụng thuật toán thời gian đợi luỹ thừa.
- Xử lý thời gian hết hạn: tự động làm mới quảng cáo trước khi quảng cáo hết hạn (thường là sau một giờ).
- Tối ưu hoá bộ nhớ đệm: Nếu bạn sử dụng kích thước bộ nhớ đệm lớn hơn 1, Google Mobile Ads SDK sẽ tối ưu hoá thứ tự bộ nhớ đệm để phân phối quảng cáo hiệu quả nhất.
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 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 Google Mobile Ads SDK phiên bản 12.6.0 trở lên. Bạn có thể xem tài nguyên dành cho nhà phát triển cho các phiên bản trước tại 11.12.0 – 12.2.0, nhưng bạn nên sử dụng phiên bản 12.6.0 trở lên và làm theo hướng dẫn này từ nay về sau.
- Thiết lập Google Mobile Ads SDK.
Tải và đưa tiêu đề xem trước tải trước vào dự án của bạn.
Không bắt buộc: Tải xuống và chạy ứng dụng ví dụ về việc tải trước quảng cáo.
Bắt đầu tải trước quảng cáo
Để bắt đầu tải trước quảng cáo, hãy gọi preload(). Chỉ gọi phương thức này một lần khi bắt đầu ứng dụng. Sau khi bạn gọi preload(), Google Mobile Ads SDK sẽ tự động tải trước quảng cáo và thử lại các yêu cầu không thành công đối với cấu hình được tải trước.
Ví dụ sau đây bắt đầu tải trước quảng cáo:
Swift
// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(
adUnitID: Constants.interstitialAdUnitID, request: request)
InterstitialAdPreloader.shared.preload(
for: Constants.interstitialAdUnitID, configuration: interstitialConfig, delegate: self)
Objective-C
// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig = [[GADPreloadConfigurationV2 alloc] initWithAdUnitID:interstitialAdUnitID request:request];
[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:interstitialAdUnitID
configuration:interstitialConfig
delegate:self];
Nhận và hiển thị quảng cáo được tải trước
Khi sử dụng tính năng tải trước quảng cáo, Google Mobile Ads SDK sẽ giữ các quảng cáo được lưu vào bộ nhớ đệm.
Khi bạn muốn hiển thị quảng cáo, hãy gọi adWithPreloadID().
Google Mobile Ads SDK truy xuất quảng cáo có sẵn và tự động tải trước quảng cáo tiếp theo ở chế độ nền.
Tránh gọi phương thức này cho đến khi bạn sẵn sàng hiển thị quảng cáo. Việc lưu trữ quảng cáo trong bộ nhớ đệm cho phép Google Mobile Ads SDK tự động làm mới quảng cáo đã hết hạn và thực hiện tối ưu hoá bộ nhớ đệm.
Ví dụ sau đây truy xuất và hiển thị một quảng cáo được tải trước:
Swift
private func showInterstitialAd() {
// Verify that the preloaded ad is available before polling.
guard isInterstitialAvailable() else {
printAndShowAlert("Preload interstitial ad is exhausted.")
return
}
// Polling returns the next available ad and load another ad in the background.
let ad = InterstitialAdPreloader.shared.ad(with: Constants.interstitialAdUnitID)
// Interact with the ad object as needed.
print("Interstitial ad response info: \(String(describing: ad?.responseInfo))")
ad?.paidEventHandler = { (value: AdValue) in
print("Interstitial ad paid event: \(value.value), \(value.currencyCode)")
}
ad?.fullScreenContentDelegate = self
ad?.present(from: self)
}
Objective-C
- (void)showInterstitialAd {
// Verify that the preloaded ad is available before polling.
if (![self isInterstitialAvailable]) {
[self logAndShowAlert:@"Preloaded interstitial ad is not available."];
return;
}
// Getting the preloaded ad loads another ad in the background.
GADInterstitialAd *ad = [GADInterstitialAdPreloader.sharedInstance adWithPreloadID:interstitialAdUnitID];
// Interact with the ad object as needed.
NSLog(@"Interstitial ad response info: %@", ad.responseInfo);
ad.paidEventHandler = ^(GADAdValue *_Nonnull value) {
NSLog(@"Interstitial ad paid event: %@ %@ ", value.value, value.currencyCode);
};
ad.fullScreenContentDelegate = self;
[ad presentFromRootViewController:self];
}
Kiểm tra xem quảng cáo tải trước có sẵn hay không
Để kiểm tra xem quảng cáo có sẵn hay không, hãy chọn một trong các cách sau:
- Nhận thông tin về khả năng cung cấp quảng cáo tải trước
- Nghe thông tin về phạm vi cung cấp quảng cáo tải trước
Nhận thông tin về trạng thái sẵn có của quảng cáo được tải trước
Ví dụ sau đây kiểm tra xem quảng cáo có sẵn hay không:
Swift
private func isInterstitialAvailable() -> Bool {
// Verify that an ad is available before polling.
return InterstitialAdPreloader.shared.isAdAvailable(with: Constants.interstitialAdUnitID)
}
Objective-C
- (BOOL)isInterstitialAvailable {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:(interstitialAdUnitID)];
}
Theo dõi khả năng sử dụng quảng cáo được tải trước
Đăng ký các sự kiện tải trước để nhận thông báo khi quảng cáo được tải trước thành công, không tải trước được hoặc bộ nhớ đệm quảng cáo đã hết.
Các sự kiện tải trước được dùng cho mục đích phân tích. Trong các lệnh gọi lại sự kiện tải trước:
- Không gọi
preload() - Tránh gọi
adWithPreloadID()trừ phi quảng cáo sẽ hiển thị ngay lập tức.
Ví dụ sau đây đăng ký các sự kiện quảng cáo:
Swift
func adAvailable(forPreloadID preloadID: String, responseInfo: ResponseInfo) {
// This callback indicates that an ad is available for the specified configuration.
// No action is required here, but updating the UI can be useful in some cases.
print("Ad preloaded successfully for ad preload ID: \(preloadID)")
// ...
}
func adsExhausted(forPreloadID preloadID: String) {
// This callback indicates that all the ads for the specified configuration have been
// consumed and no ads are available to show. No action is required here, but updating
// the UI can be useful in some cases.
// [Important] Don't call AdPreloader.shared.preload or AdPreloader.shared.ad
// from adsExhausted.
print("Ad exhausted for ad preload ID: \(preloadID)")
// ...
}
func adFailedToPreload(forPreloadID preloadID: String, error: Error) {
print(
"Ad failed to load with ad preload ID: \(preloadID), Error: \(error.localizedDescription)"
)
}
Objective-C
- (void)adAvailableForPreloadID:(nonnull NSString *)preloadID responseInfo:(nonnull GADResponseInfo *)responseInfo {
// This callback indicates that an ad is available for the specified configuration.
// No action is required here, but updating the UI can be useful in some cases.
NSLog(@"Ad preloaded successfully for ad unit ID: %@", preloadID);
// ...
}
- (void)adsExhaustedForPreloadID:(nonnull NSString *)preloadID {
// This callback indicates that all the ads for the specified configuration have been
// consumed and no ads are available to show. No action is required here, but updating
// the UI can be useful in some cases.
// [Important] Don't call [GAD<Format>AdPreloader preloadForPreloadID:] or
// [GAD<Format>AdPreloader adWithPreloadID:] from adsExhaustedForPreloadID.
NSLog(@"Ad exhausted for ad preload ID: %@", preloadID);
// ...
}
- (void)adFailedToPreloadForPreloadID:(nonnull NSString *)preloadID error:(nonnull NSError *)error {
NSLog(@"Ad failed to load with ad preload ID: %@, Error: %@", preloadID, error.localizedDescription);
}
Dừng tải trước quảng cáo
Nếu không cần hiển thị lại quảng cáo cho một mã tải trước trong phiên, bạn có thể dừng tải trước quảng cáo. Để ngừng tải trước quảng cáo cho một mã nhận dạng tải trước cụ thể, hãy gọi stopPreloadingAndRemoveAdsForPreloadID() bằng mã nhận dạng tải trước.
Đặt dung lượng bộ nhớ đệm
Dung lượng bộ nhớ đệm kiểm soát số lượng quảng cáo được tải trước và lưu trữ trong bộ nhớ. Theo mặc định, Google tối ưu hoá dung lượng bộ nhớ đệm để cân bằng mức tiêu thụ bộ nhớ và độ trễ khi phân phát quảng cáo. Nếu ứng dụng của bạn hiển thị quảng cáo trước khi quảng cáo tiếp theo được tải, bạn có thể đặt dung lượng bộ nhớ đệm tuỳ chỉnh để tăng số lượng quảng cáo được lưu giữ trong bộ nhớ. Bạn nên đặt dung lượng bộ nhớ đệm tối đa là 4.
Swift
let preloadConfig = PreloadConfigurationV2(adUnitID: "ca-app-pub-3940256099942544/1712485313")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"ca-app-pub-3940256099942544/1712485313"];
preloadConfig.bufferSize = 3;