Межстраничная реклама — это полноэкранные объявления, которые закрывают интерфейс приложения до тех пор, пока пользователь их не закроет. Обычно они отображаются в естественных точках перехода в процессе работы приложения, например, между действиями или во время паузы между уровнями в игре. Когда приложение показывает межстраничную рекламу, пользователь может либо нажать на объявление и перейти к следующему шагу, либо закрыть его и вернуться в приложение. Пример из практики .
В этом руководстве показано, как интегрировать межстраничную рекламу в iOS-приложение.
Предварительные требования
- Пройдите руководство по началу работы .
Всегда проводите тестирование с помощью тестовых объявлений.
При разработке и тестировании приложений обязательно используйте тестовые объявления, а не реальные, рабочие объявления. Несоблюдение этого правила может привести к блокировке вашего аккаунта.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для межстраничной рекламы в iOS:
ca-app-pub-3940256099942544/4411468910
Он специально настроен на возврат тестовых объявлений для каждого запроса, и вы можете свободно использовать его в своих приложениях во время кодирования, тестирования и отладки. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Подробную информацию о тестовых объявлениях в Google Mobile Ads SDK см. в разделе «Включение тестовых объявлений» .
Выполнение
Основные шаги по интеграции межстраничной рекламы:
- Загрузить рекламу.
- Зарегистрируйтесь для участия в обратном звонке.
- Показать рекламу.
Загрузить рекламу
Загрузка рекламы осуществляется с помощью метода load(adUnitID:request) класса GADInterstitialAd .
Быстрый
fileprivate func loadInterstitial() async {
do {
interstitial = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitial?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
SwiftUI
import GoogleMobileAds
class InterstitialViewModel: NSObject, FullScreenContentDelegate {
private var interstitialAd: InterstitialAd?
func loadAd() async {
do {
interstitialAd = try await InterstitialAd.load(
with: "ca-app-pub-3940256099942544/4411468910", request: Request())
interstitialAd?.fullScreenContentDelegate = self
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
Objective-C
[GADInterstitialAd
loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
request:[GADRequest request]
completionHandler:^(GADInterstitialAd *ad, NSError *error) {
if (error) {
NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
return;
}
self.interstitial = ad;
self.interstitial.fullScreenContentDelegate = self;
}];
Зарегистрируйтесь для участия в обратном звонке.
Для получения уведомлений о событиях презентации необходимо присвоить атрибут GADFullScreenContentDelegate свойству fullScreenContentDelegate возвращаемого объявления:
Быстрый
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
Протокол GADFullScreenContentDelegate обрабатывает обратные вызовы в случае успешного или неудачного показа рекламы, а также при её закрытии. Следующий код демонстрирует реализацию протокола:
Быстрый
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(_ ad: FullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
print("\(#function) called with error: \(error.localizedDescription)")
// Clear the interstitial ad.
interstitial = nil
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitial = nil
}
SwiftUI
func adDidRecordImpression(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidRecordClick(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func ad(
_ ad: FullScreenPresentingAd,
didFailToPresentFullScreenContentWithError error: Error
) {
print("\(#function) called")
}
func adWillPresentFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adWillDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("\(#function) called")
// Clear the interstitial ad.
interstitialAd = nil
}
Objective-C
- (void)adDidRecordImpression:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidRecordClick:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)ad:(id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(NSError *)error {
NSLog(@"%s called with error: %@", __PRETTY_FUNCTION__, error.localizedDescription);
// Clear the interstitial ad.
self.interstitial = nil;
}
- (void)adWillPresentFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adWillDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
}
- (void)adDidDismissFullScreenContent:(id<GADFullScreenPresentingAd>)ad {
NSLog(@"%s called", __PRETTY_FUNCTION__);
// Clear the interstitial ad.
self.interstitial = nil;
}
Объект GADInterstitialAd является одноразовым. Это означает, что после показа межстраничной рекламы её нельзя будет показать снова. Рекомендуется загружать следующую межстраничную рекламу в методе adDidDismissFullScreenContent: класса GADFullScreenContentDelegate , чтобы следующая межстраничная реклама начала загружаться сразу после закрытия предыдущей.
Показать объявление
Всплывающие рекламные ролики следует показывать во время естественных пауз в процессе работы приложения. Хорошим примером является переход между уровнями игры или после того, как пользователь выполнит какое-либо задание.
Быстрый
ad.present(from: self!)
SwiftUI
Отслеживайте события пользовательского интерфейса в представлении, чтобы определить, когда показывать рекламу.
var body: some View {
// ...
}
.onChange(of: countdownTimer.isComplete) { newValue in
showGameOverAlert = newValue
}
.alert(isPresented: $showGameOverAlert) {
Alert(
title: Text("Game Over"),
message: Text("You lasted \(countdownTimer.countdownTime) seconds"),
dismissButton: .cancel(
Text("OK"),
action: {
viewModel.showAd()
}))
Предъявите промежуточную рекламу, используя модель просмотра:
func showAd() {
guard let interstitialAd = interstitialAd else {
return print("Ad wasn't ready.")
}
interstitialAd.present(from: nil)
}
Objective-C
[self.interstitial presentFromRootViewController:self];
Передовые методы
- Подумайте, подходят ли для вашего приложения межстраничные объявления.
- Межстраничные объявления лучше всего работают в приложениях с естественными точками перехода. Завершение задачи внутри приложения, например, отправка изображения или прохождение уровня игры, создает такую точку. Поскольку пользователь ожидает перерыва в действии, легко показать межстраничное объявление, не нарушая его пользовательский опыт. Убедитесь, что вы продумали, в каких точках рабочего процесса вашего приложения вы будете показывать межстраничные объявления и как пользователь, скорее всего, отреагирует.
- Не забудьте приостановить показ межстраничной рекламы.
- Существует несколько различных типов межстраничной рекламы: текстовая, графическая, видео и другие. Важно убедиться, что при показе межстраничной рекламы ваше приложение также приостанавливает использование некоторых ресурсов, чтобы реклама могла ими воспользоваться. Например, при вызове функции отображения межстраничной рекламы обязательно приостановите воспроизведение любого звука, производимого вашим приложением. Вы можете возобновить воспроизведение звуков в обработчике события
adDidDismissFullScreenContent:который будет вызван после того, как пользователь завершит взаимодействие с рекламой. Кроме того, рассмотрите возможность временной остановки любых ресурсоемких вычислительных задач (таких как игровой цикл) во время показа рекламы. Это гарантирует, что пользователь не столкнется с медленной или неотзывчивой графикой или зависанием видео. - Предусмотрите достаточное время для погрузки.
- Так же, как важно показывать межстраничную рекламу в подходящее время, важно также убедиться, что пользователю не приходится ждать ее загрузки. Предварительная загрузка рекламы перед ее показом гарантирует, что в вашем приложении будет полностью загружена межстраничная реклама, готовая к показу в нужный момент.
- Не заваливайте пользователя рекламой.
- Увеличение частоты показа межстраничной рекламы в вашем приложении может показаться отличным способом увеличить доход, но это также может ухудшить пользовательский опыт и снизить коэффициент кликабельности. Убедитесь, что пользователи не сталкиваются с настолько частыми прерываниями, что перестают получать удовольствие от использования вашего приложения.
- Не используйте функцию обратного вызова завершения загрузки для отображения промежуточного окна.
- Это может привести к ухудшению пользовательского опыта. Вместо этого предварительно загрузите рекламу перед тем, как её нужно будет показать. Затем проверьте метод
canPresentFromRootViewController:error:вGADInterstitialAd, чтобы узнать, готова ли она к показу.
Дополнительные ресурсы
Примеры на GitHub
Просмотрите полные примеры межстраничных объявлений на предпочитаемом вами языке:
Видеоуроки по Mobile Ads Garage
Истории успеха
Следующие шаги
- Если вы еще этого не сделали, создайте собственный блок межстраничной рекламы в пользовательском интерфейсе AdMob .
- Узнайте больше о таргетинге рекламы и правилах показа межстраничной рекламы .
- Узнайте больше о конфиденциальности пользователей .