Предварительная загрузка рекламы — это функция загрузки рекламы, управляемая Google в Google Mobile Ads SDK , которая управляет загрузкой и кэшированием рекламы от вашего имени. Предварительная загрузка рекламы требует изменения способа управления загрузкой рекламы. Для оптимизации производительности при использовании предварительной загрузки рекламы отключите пользовательское кэширование и передайте эту задачу Google Mobile Ads SDK .
Предварительная загрузка рекламы имеет следующие преимущества по сравнению с ручной загрузкой рекламы:
- Управление ссылками: блокирует загруженные рекламные объявления, поэтому вам не нужно поддерживать ссылки до тех пор, пока вы не будете готовы их показать.
- Автоматическая перезагрузка: автоматически загружает новую рекламу, когда вы извлекаете предыдущую из кэша.
- Управляемые повторные попытки: автоматически повторяют неудачные запросы, используя экспоненциальную задержку.
- Обработка истечения срока действия: автоматически обновляет объявления до истечения их срока действия (обычно через час).
- Оптимизация кэширования: если вы используете размер кэша больше единицы, Google Mobile Ads SDK оптимизирует порядок кэширования для показа наилучшей рекламы.
В этом руководстве рассматриваются вопросы настройки предварительной загрузки рекламы, проверки доступности предварительной загрузки рекламы и показа предварительно загруженной рекламы.
Предварительные требования
Прежде чем приступить к выполнению инструкций, необходимо выполнить следующие действия:
- Установите Google Mobile Ads SDK версии 12.6.0 или выше. Ресурсы для разработчиков более ранних версий доступны в разделах 11.12.0 - 12.2.0 , но мы рекомендуем использовать версию 12.6.0 или выше и следовать этому руководству в дальнейшем.
- Настройте Google Mobile Ads SDK .
Загрузите и добавьте заголовки предварительного просмотра для предварительной загрузки в свой проект.
Дополнительно: Загрузите и запустите пример приложения для предварительной загрузки рекламы .
Начать предварительную загрузку рекламы
Чтобы начать предварительную загрузку рекламы, вызовите preload() . Вызывайте этот метод только один раз при запуске приложения. После вызова preload() ` Google Mobile Ads SDK автоматически выполнит предварительную загрузку рекламы и повторит неудачные запросы на предварительно загруженные конфигурации.
В следующем примере запускается предварительная загрузка рекламы:
Быстрый
// 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];
Получите и покажите предварительно загруженную рекламу.
При использовании предварительной загрузки рекламы Google Mobile Ads SDK хранит кэшированные объявления. Чтобы показать объявление, вызовите adWithPreloadID() . Google Mobile Ads SDK получит доступное объявление и автоматически загрузит следующее объявление в фоновом режиме.
Не вызывайте этот метод, пока не будете готовы показать рекламу. Хранение рекламы в кэше позволяет Google Mobile Ads SDK автоматически обновлять просроченную рекламу и выполнять оптимизацию кэша.
В следующем примере отображается предварительно загруженная реклама:
Быстрый
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];
}
Проверьте доступность предварительной загрузки рекламы.
Чтобы проверить доступность рекламы, выберите один из следующих вариантов:
- Получить информацию о доступности предварительной загрузки рекламы
- Прослушайте, доступна ли предварительная загрузка рекламы.
Получите доступ к предварительно загруженной рекламе.
В следующем примере проверяется доступность рекламы:
Быстрый
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)];
}
Слушайте, доступна ли предустановленная реклама
Зарегистрируйтесь для получения уведомлений о событиях предварительной загрузки, чтобы получать оповещения об успешной предварительной загрузке рекламы, сбое предварительной загрузки или исчерпании рекламного кэша.
События предварительной загрузки предназначены для аналитических целей. Внутри обработчиков событий предварительной загрузки:
- Не вызывайте функцию
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.
// [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);
}
Остановить предварительную загрузку рекламы
Если вам не нужно снова показывать рекламу с определенным идентификатором предварительной загрузки в рамках текущей сессии, вы можете остановить предварительную загрузку рекламы. Чтобы остановить предварительную загрузку рекламы для конкретного идентификатора предварительной загрузки, вызовите метод stopPreloadingAndRemoveAdsForPreloadID() с указанным идентификатором предварительной загрузки.
Установите размер буфера
Размер буфера определяет количество предварительно загруженных рекламных объявлений, хранящихся в памяти. По умолчанию Google оптимизирует размер буфера для баланса между потреблением памяти и задержкой показа рекламы. Если ваше приложение показывает рекламу до загрузки следующей рекламы, вы можете установить пользовательский размер буфера, чтобы увеличить количество рекламных объявлений, хранящихся в памяти. Мы рекомендуем размер буфера не более четырех.
Быстрый
let preloadConfig = PreloadConfigurationV2(adUnitID: "/21775744923/example/rewarded")
preloadConfig.bufferSize = 3
Objective-C
GADPreloadConfigurationV2 *preloadConfig =
[[GADPreloadConfigurationV2 alloc] initWithAdUnitID:@"/21775744923/example/rewarded"];
preloadConfig.bufferSize = 3;