Предварительная загрузка рекламы — это функция загрузки рекламы, управляемая Google в Google Mobile Ads SDK , которая управляет загрузкой и кэшированием рекламы от вашего имени. Предварительная загрузка рекламы требует изменения способа управления загрузкой рекламы. Для оптимизации производительности при использовании предварительной загрузки рекламы отключите пользовательское кэширование и передайте эту задачу Google Mobile Ads SDK .
Предварительная загрузка рекламы имеет следующие преимущества по сравнению с ручной загрузкой рекламы:
- Управление ссылками: блокирует загруженные рекламные объявления, поэтому вам не нужно поддерживать ссылки до тех пор, пока вы не будете готовы их показать.
- Автоматическая перезагрузка: автоматически загружает новую рекламу, когда вы извлекаете предыдущую из кэша.
- Управляемые повторные попытки: автоматически повторяют неудачные запросы, используя экспоненциальную задержку.
- Обработка истечения срока действия: автоматически обновляет объявления до истечения их срока действия (обычно через час).
- Оптимизация кэширования: если вы используете размер кэша больше единицы, Google Mobile Ads SDK оптимизирует порядок кэширования для показа наилучшей рекламы.
В этом руководстве рассматриваются вопросы настройки предварительной загрузки рекламы, проверки доступности предварительной загрузки рекламы и показа предварительно загруженной рекламы.
Предварительные требования
Прежде чем приступить к этому руководству, необходимо установить Google Mobile Ads SDK .
Начать предварительную загрузку рекламы
При запуске приложения вызовите метод preload один раз. После вызова метода preload , Google Mobile Ads SDK автоматически предварительно загрузит рекламу и повторит неудачные запросы на предварительно загруженные конфигурации.
В следующем примере запускается предварительная загрузка рекламы:
Быстрый
private func startPreloading(adUnitID: String) {
// Start the preloading initialization process.
let request = Request()
let interstitialConfig = PreloadConfigurationV2(
adUnitID: adUnitID, request: request)
InterstitialAdPreloader.shared.preload(
for: adUnitID, configuration: interstitialConfig, delegate: self)
}
Objective-C
- (void)startPreloadingWithAdUnitID:(nonnull NSString *)adUnitID {
// Start the preloading initialization process.
GADRequest *request = [GADRequest request];
GADPreloadConfigurationV2 *interstitialConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:adUnitID
request:request];
[GADInterstitialAdPreloader.sharedInstance preloadForPreloadID:adUnitID
configuration:interstitialConfig
delegate:self];
}
Получите и покажите предварительно загруженную рекламу.
При использовании предварительной загрузки рекламы Google Mobile Ads SDK хранит кэшированные объявления. Чтобы показать объявление, вызовите метод adWithPreloadID . Google Mobile Ads SDK получит доступное объявление и автоматически загрузит следующее объявление в фоновом режиме.
Избегайте вызова метода adWithPreloadID , пока не будете готовы показать рекламу. Сохранение рекламы в кэше позволяет Google Mobile Ads SDK автоматически обновлять просроченную рекламу и выполнять оптимизацию кэша.
В следующем примере отображается предварительно загруженная реклама:
Быстрый
private func showInterstitialAd(adUnitID: String) {
// Verify that the preloaded ad is available before polling.
guard isInterstitialAvailable(adUnitID: adUnitID) else {
print("Preloaded interstitial ad is not available.")
return
}
// Polling returns the next available ad and loads another ad in the background.
let ad = InterstitialAdPreloader.shared.ad(with: adUnitID)
// 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)showInterstitialAdWithAdUnitID:(nonnull NSString *)adUnitID {
// Verify that the preloaded ad is available before polling.
if (![self isInterstitialAvailableWithAdUnitID:adUnitID]) {
NSLog(@"Preloaded interstitial ad is not available.");
return;
}
// Getting the preloaded ad loads another ad in the background.
GADInterstitialAd *ad =
[GADInterstitialAdPreloader.sharedInstance adWithPreloadID:adUnitID];
// 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];
}
Получите предварительно загруженные метаданные рекламы
Чтобы получить предварительно загруженные метаданные объявления, вы можете обратиться к объекту информации об ответе объявления. Этот процесс позволяет проверить метаданные объявления, не удаляя их из кеша.
В следующем примере метаданные предварительно загруженного объявления извлекаются из объекта информации об ответе:
Быстрый
private func getInterstitialAdResponseInfo(preloadID: String) {
// Get the response info for the preloaded ad.
if let responseInfo = InterstitialAdPreloader.shared.responseInfo(
with: preloadID)
{
print("Ad response ID: \(responseInfo.responseIdentifier ?? "")")
}
}
Objective-C
- (void)getInterstitialAdResponseInfoWithPreloadID:(nonnull NSString *)preloadID {
// Get the response info for the preloaded ad.
GADResponseInfo *responseInfo =
[GADInterstitialAdPreloader.sharedInstance
adResponseInfoWithPreloadID:preloadID];
if (responseInfo) {
NSLog(@"Ad response ID: %@", responseInfo.responseIdentifier);
}
}
Проверьте доступность предварительной загрузки рекламы.
Чтобы проверить доступность рекламы, выберите один из следующих вариантов:
- Получить информацию о доступности предварительной загрузки рекламы
- Прослушайте, доступна ли предварительная загрузка рекламы.
Получите доступ к предварительно загруженной рекламе.
В следующем примере проверяется доступность рекламы:
Быстрый
private func isInterstitialAvailable(adUnitID: String) -> Bool {
// Verify that an ad is available before polling.
return InterstitialAdPreloader.shared.isAdAvailable(with: adUnitID)
}
Objective-C
- (BOOL)isInterstitialAvailableWithAdUnitID:(nonnull NSString *)adUnitID {
// Verify that an ad is available before polling.
return [GADInterstitialAdPreloader.sharedInstance isAdAvailableWithPreloadID:adUnitID];
}
Слушайте, доступна ли предустановленная реклама
Зарегистрируйтесь для получения уведомлений о событиях предварительной загрузки, чтобы получать оповещения об успешной предварительной загрузке рекламы, сбое предварительной загрузки или исчерпании рекламного кэша.
События предварительной загрузки предназначены для аналитических целей. Внутри обработчиков событий предварительной загрузки:
- Не вызывайте функцию
preload. - Не вызывайте
adWithPreloadIDесли реклама не будет показана немедленно.
В следующем примере осуществляется регистрация для участия в рекламных мероприятиях:
Быстрый
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.
// Don't call InterstitialAdPreloader.shared.preload or
// InterstitialAdPreloader.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.
// 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);
}
Остановить предварительную загрузку рекламы
Если вам не нужно снова показывать рекламу с определенным идентификатором предварительной загрузки в течение сессии, вы можете остановить предварительную загрузку рекламы. Чтобы остановить предварительную загрузку рекламы для конкретного идентификатора предварительной загрузки, вызовите метод stopPreloadingAndRemoveAdsForPreloadID с указанным идентификатором предварительной загрузки. Чтобы остановить предварительную загрузку для всех предварительных загрузчиков, вызовите stopPreloadingAndRemoveAllAds .
Установите размер буфера
Размер буфера определяет количество предварительно загруженных рекламных объявлений, хранящихся в памяти. По умолчанию Google оптимизирует размер буфера для баланса между потреблением памяти и задержкой показа рекламы. Если ваше приложение показывает рекламу до загрузки следующей рекламы, вы можете установить пользовательский размер буфера, чтобы увеличить количество рекламных объявлений, хранящихся в памяти.
Быстрый
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;
Ограничения предварительной загрузки кэша
Google Mobile Ads SDK устанавливает общеприложениевое ограничение на общее количество предварительно загруженных объявлений во всех рекламных блоках и идентификаторах предварительной загрузки:
- Ограничение по умолчанию: Google Mobile Ads SDK может хранить в памяти максимум 6 предварительно загруженных объявлений. Это ограничение действует для всех форматов и идентификаторов предварительной загрузки.
- Мы рекомендуем устанавливать размер буфера равным 2 или 3 на каждый идентификатор предварительной загрузки.