Межстраничные объявления – это полноэкранный формат, который закрывает все элементы интерфейса приложения, пока пользователь не закроет объявление. Обычно такая реклама показывается при естественных переходах между разделами приложения или уровнями игры. Когда в приложении показывается межстраничное объявление, пользователь может нажать на него и перейти на целевую страницу или закрыть объявление и вернуться в приложение. Пример использования.
В этом руководстве рассказывается, как добавить межстраничные объявления в приложение для iOS.
Требования
Прежде чем продолжить, настройте Google Mobile Ads SDK.
Всегда тестируйте с помощью тестовых объявлений
При создании и тестировании приложений используйте тестовые объявления, а не реальные. В противном случае ваш аккаунт может быть заблокирован.
Самый простой способ загрузить тестовые объявления – использовать специальный идентификатор тестового рекламного блока для межстраничных объявлений iOS:
ca-app-pub-3940256099942544/4411468910
Он специально настроен так, чтобы возвращать тестовые объявления для каждого запроса, и вы можете использовать его в своих приложениях при написании кода, тестировании и отладке. Не забудьте заменить его на идентификатор своего рекламного блока перед публикацией приложения.
Подробнее Google Mobile Ads SDK о включении тестовых объявлений…
Реализация
Чтобы добавить межстраничные объявления, выполните следующие действия:
- Загрузите объявление.
- Зарегистрируйте обратные вызовы.
- Покажите объявление.
Как загрузить объявление
Объявление загружается с помощью метода load(adUnitID:request) класса GADInterstitialAd.
Swift
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 возвращаемого объявления:
Swift
interstitial?.fullScreenContentDelegate = self
SwiftUI
interstitialAd?.fullScreenContentDelegate = self
Objective-C
self.interstitial.fullScreenContentDelegate = self;
Протокол GADFullScreenContentDelegate обрабатывает обратные вызовы, когда объявление показывается успешно или нет, а также когда оно закрывается. Ниже приведен пример кода, в котором реализован протокол:
Swift
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, чтобы оно начинало загружаться сразу после закрытия предыдущего.
Показ объявления
Межстраничные объявления должны показываться во время естественных пауз в работе приложения, например между уровнями игры или после того, как пользователь выполнит задачу.
Swift
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:, который вызывается, когда пользователь завершает взаимодействие с объявлением. Кроме того, во время показа объявления можно временно приостановить выполнение ресурсоемких задач, например игрового цикла. Это позволит избежать медленной работы графики, ее зависания и прерывания видео. - Дайте странице достаточно времени на загрузку.
- Важно не только показывать межстраничные объявления в подходящий момент, но и следить за тем, чтобы пользователю не приходилось ждать их загрузки. Загрузка объявления заранее, до того, как вы планируете его показать, гарантирует, что в вашем приложении будет полностью загруженное межстраничное объявление, готовое к показу.
- Не показывайте пользователю слишком много объявлений.
- Увеличение частоты показа межстраничных объявлений может показаться отличным способом повысить доход, но это также может ухудшить удобство для пользователей и снизить CTR. Убедитесь, что реклама не показывается слишком часто и не мешает пользователям наслаждаться приложением.
- Не используйте обратный вызов завершения загрузки для показа межстраничного объявления.
- Это может привести к неудобству для пользователей. Вместо этого предварительно загрузите объявление, прежде чем вам понадобится его показать. Затем проверьте метод
canPresentFromRootViewController:error:на страницеGADInterstitialAd, чтобы узнать, можно ли показывать видео.
Дополнительные ресурсы
Примеры на GitHub
Посмотрите примеры межстраничных объявлений на нужном вам языке:
Видеоуроки Mobile Ads Garage
Истории успеха
Дальнейшие действия
- Если вы ещё этого не сделали, создайте собственный межстраничный рекламный блок в интерфейсе AdMob.
- Подробнее о таргетинге объявлений и рекомендациях по работе с межстраничными объявлениями…
- Подробнее о конфиденциальности пользователей…