Reklamy pełnoekranowe

Reklamy pełnoekranowe zakrywają interfejs aplikacji, dopóki użytkownik ich nie zamknie. Wyświetlają się zwykle w naturalnych momentach przejściowych w aplikacji, np. między działaniami lub podczas przerwy między poziomami gry. Gdy aplikacja wyświetla reklamę pełnoekranową, użytkownik może w nią kliknąć i przejść do miejsca docelowego lub zamknąć reklamę i wrócić do aplikacji. Studium przypadku.

Z tego przewodnika dowiesz się, jak zintegrować reklamy pełnoekranowe z aplikacją na iOS.

Wymagania wstępne

Zanim przejdziesz dalej, skonfiguruj Google Mobile Ads SDK.

Zawsze testuj za pomocą reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam aktywnych. Jeśli tego nie zrobisz, możemy zawiesić Twoje konto.

Najłatwiejszym sposobem na wczytanie reklam testowych jest użycie naszego specjalnego identyfikatora jednostki reklamowej na reklamy pełnoekranowe na iOS:
/21775744923/example/interstitial

Został on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w odpowiedzi na każde żądanie. Możesz go używać w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, aby przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.

Więcej informacji o Google Mobile Ads SDK reklamach testowych znajdziesz w artykule Włączanie reklam testowych.

Implementacja

Główne etapy integracji reklam pełnoekranowych:

  1. Wczytaj reklamę.
  2. Zarejestruj wywołania zwrotne.
  3. Wyświetl reklamę.

Wczytaj reklamę

Reklamę wczytuje się za pomocą metody load(adUnitID:request) w klasie GAMInterstitialAd.

Swift

fileprivate func loadInterstitial() async {
  do {
    interstitial = try await AdManagerInterstitialAd.load(
      with: "/21775744923/example/interstitial", request: AdManagerRequest())
    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

[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/21775744923/example/interstitial"
                                     request:[GAMRequest request]
                           completionHandler:^(GAMInterstitialAd *ad, NSError *error) {
                             if (error) {
                               NSLog(@"Failed to load interstitial ad with error: %@",
                                     [error localizedDescription]);
                               return;
                             }
                             self.interstitial = ad;
                             self.interstitial.fullScreenContentDelegate = self;
                           }];

Zarejestruj wywołania zwrotne

Aby otrzymywać powiadomienia o zdarzeniach wyświetlania, musisz przypisać GADFullScreenContentDelegate do właściwości fullScreenContentDelegate zwróconej reklamy:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Protokół GADFullScreenContentDelegate obsługuje wywołania zwrotne, gdy reklama wyświetla się prawidłowo lub nieprawidłowo oraz gdy zostanie zamknięta. Poniższy kod pokazuje, jak zaimplementować protokół:

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;
}

GAMInterstitialAd to obiekt jednorazowego użytku. Oznacza to, że po wyświetleniu reklamy pełnoekranowej nie można jej ponownie wyświetlić. Zalecamy wczytanie kolejnej reklamy pełnoekranowej w metodzie adDidDismissFullScreenContent: w GADFullScreenContentDelegate, aby następna reklama pełnoekranowa zaczęła się wczytywać, gdy tylko poprzednia zostanie zamknięta.

Wyświetl reklamę

Reklamy pełnoekranowe powinny wyświetlać się podczas naturalnych przerw w działaniu aplikacji. Dobrym przykładem jest przerwa między poziomami gry lub moment po wykonaniu zadania przez użytkownika.

Swift

ad.present(from: self!)

SwiftUI

Aby określić, kiedy wyświetlić reklamę, nasłuchuj zdarzeń interfejsu w widoku.

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()
        }))

Wyświetl reklamę pełnoekranową z modelu widoku:

func showAd() {
  guard let interstitialAd = interstitialAd else {
    return print("Ad wasn't ready.")
  }

  interstitialAd.present(from: nil)
}

Objective-C

[self.interstitial presentFromRootViewController:self];

Sprawdzone metody

Zastanów się, czy reklamy pełnoekranowe są odpowiednim typem reklamy dla Twojej aplikacji.
Reklamy pełnoekranowe najlepiej sprawdzają się w aplikacjach z naturalnymi momentami przejścia. Takim momentem może być np. zakończenie zadania w aplikacji, takiego jak udostępnienie zdjęcia lub ukończenie poziomu gry. Użytkownik spodziewa się przerwy w działaniu, dlatego można wyświetlić reklamę pełnoekranową bez zakłócania jego wrażeń. Zastanów się, w których momentach ścieżki użytkownika w aplikacji będziesz wyświetlać reklamy pełnoekranowe i jak prawdopodobnie zareaguje na nie użytkownik.
Pamiętaj, aby podczas wyświetlania reklamy pełnoekranowej wstrzymać działania.
Dostępne są różne typy reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Ważne jest, aby podczas wyświetlania reklamy pełnoekranowej aplikacja zawieszała korzystanie z niektórych zasobów, aby reklama mogła z nich korzystać. Na przykład, gdy wywołujesz funkcję wyświetlania reklamy pełnoekranowej, wstrzymaj odtwarzanie wyjścia audio w aplikacji. Możesz wznowić odtwarzanie dźwięków w adDidDismissFullScreenContent: module obsługi zdarzeń, które zostanie wywołane, gdy użytkownik zakończy interakcję z reklamą. Dodatkowo rozważ tymczasowe wstrzymanie intensywnych zadań obliczeniowych (takich jak pętla gry) podczas wyświetlania reklamy. Dzięki temu użytkownik nie będzie miał problemów z grafiką ani zacinającym się filmem.
Zapewnij odpowiedni czas wczytywania.
Tak jak ważne jest, aby wyświetlać reklamy pełnoekranowe w odpowiednim momencie, tak samo ważne jest, aby użytkownik nie musiał czekać na ich wczytanie. Wczytanie reklamy z wyprzedzeniem przed jej wyświetleniem może zapewnić, że aplikacja będzie miała w pełni wczytaną reklamę pełnoekranową gotową do wyświetlenia w odpowiednim momencie.
Nie zasypuj użytkowników reklamami.
Zwiększenie częstotliwości wyświetlania reklam pełnoekranowych w aplikacji może się wydawać świetnym sposobem na zwiększenie przychodów, ale może też pogorszyć wrażenia użytkownika i obniżyć współczynniki klikalności. Zadbaj o to, aby nie przerywać użytkownikom zbyt często, tak by mogli swobodnie korzystać z Twojej aplikacji.
Nie używaj wywołania zwrotnego zakończenia wczytywania do wyświetlania reklamy pełnoekranowej.
Może to pogorszyć wrażenia użytkownika. Zamiast tego wstępnie wczytaj reklamę, zanim będziesz musiał ją wyświetlić. Następnie sprawdź metodę canPresentFromRootViewController:error: w GAMInterstitialAd, aby dowiedzieć się, czy reklama jest gotowa do wyświetlenia.

Przykłady na GitHubie

Zobacz pełne przykłady reklam pełnoekranowych w wybranym języku:

Dalsze kroki