Reklamy pełnoekranowe

Reklamy pełnoekranowe zajmują cały ekran aplikacji, dopóki użytkownik ich nie zamknie. Takie reklamy 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 ją kliknąć i przejść do miejsca docelowego lub zamknąć i wrócić do aplikacji. Przykład.

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

Wymagania wstępne

Zawsze testuj reklamy za pomocą reklam testowych

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

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie dedykowanego identyfikatora testowej jednostki reklamowej w przypadku reklam przejściowych na iOS:
ca-app-pub-3940256099942544/4411468910

Jest on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w przypadku każdego żądania. 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 działaniu reklam testowych w pakiecie SDK do reklam mobilnych znajdziesz w artykule Reklamy testowe.

Implementacja

Główne kroki integracji reklam przejściowych to:

  1. Wczytaj reklamę.
  2. Rejestrowanie wywołań zwrotnych.
  3. wyświetlić reklamę,

Wczytywanie reklamy

Ładowanie reklamy odbywa się za pomocą metody load(adUnitID:request) w klasie 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;
    }];

Rejestrowanie wywołań zwrotnych

Aby otrzymywać powiadomienia o zdarzeniach związanych z prezentacją, musisz przypisać właściwość GADFullScreenContentDelegate to thefullScreenContentDelegate` zwracanej reklamy:

Swift

interstitial?.fullScreenContentDelegate = self

SwiftUI

interstitialAd?.fullScreenContentDelegate = self

Objective-C

self.interstitial.fullScreenContentDelegate = self;

Protokół GADFullScreenContentDelegate obsługuje wywołania zwrotne w przypadku wyświetlenia reklamy (pomyślnie lub nie) oraz jej zamknięcia. Poniższy kod pokazuje, jak zastosować 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;
}

GADInterstitialAd to obiekt jednorazowego użytku. Oznacza to, że po wyświetleniu reklamy pełnoekranowej nie może ona być wyświetlana ponownie. Najlepszym rozwiązaniem jest wczytywanie kolejnej reklamy pełnoekranowej w metodzie adDidDismissFullScreenContent:GADFullScreenContentDelegate, aby następna reklama pełnoekranowa zaczęła się wczytywać, gdy tylko zamkniesz poprzednią.

Wyświetlanie reklamy

Reklamy pełnoekranowe powinny wyświetlać się w naturalnych przerwach w aplikacji. Dobrym przykładem jest przerwa między poziomami w grze lub po wykonaniu zadania przez użytkownika.

Swift

ad.present(from: self!)

SwiftUI

Odbieraj zdarzenia interfejsu użytkownika w widoku, aby określić, kiedy wyświetlić reklamę.

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 poziomu 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 punktami przejścia. Taki punkt może powstać na przykład po zakończeniu zadania w aplikacji, takiego jak udostępnienie zdjęcia lub ukończenie poziomu gry. Użytkownik spodziewa się przerwy w działaniu, więc łatwo jest wyświetlić reklamę pełnoekranową bez zakłócania jego doświadczeń. Zastanów się, w jakich momentach w przebiegu działania aplikacji będziesz wyświetlać reklamy pełnoekranowe i jak użytkownik zareaguje na nie.
Pamiętaj, aby wstrzymać działanie podczas wyświetlania reklamy pełnoekranowej.
Dostępne są różne typy reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Pamiętaj, aby podczas wyświetlania przez aplikację reklamy interaktywnej wstrzymać korzystanie z niektórych zasobów, aby reklama mogła z nich korzystać. Gdy na przykład wywołasz wyświetlenie reklamy interwsty, zatrzymaj wszystkie dźwięki generowane przez aplikację. Możesz wznowić odtwarzanie dźwięku w obiekcie adDidDismissFullScreenContent:, który zostanie wywołany, gdy użytkownik zakończy interakcję z reklamą. Dodatkowo rozważ tymczasowe wstrzymanie intensywnych obliczeń (np. pętli gry) podczas wyświetlania reklamy. Dzięki temu użytkownik nie będzie mieć problemów z powolnym działaniem grafiki lub z zawieszaniem się filmu.
Zaplanuj odpowiedni czas wczytywania.
Podobnie jak w przypadku reklam przejściowych ważne jest, aby wyświetlać je w odpowiednim momencie, ale też zadbać o to, aby użytkownik nie musiał czekać na ich załadowanie. Wczytanie reklamy z wyprzedzeniem, zanim zamierzasz ją wyświetlić, może zapewnić, że w momencie wyświetlenia reklamy w Twojej aplikacji będzie ona w pełni załadowana.
Nie zalewaj użytkownika reklamami.
Chociaż zwiększenie częstotliwości wyświetlania reklam przejściowych w aplikacji może wydawać się świetnym sposobem na zwiększenie przychodów, może też pogorszyć wrażenia użytkownika i obniżyć współczynnik klikalności. Zadbaj o to, aby użytkownicy nie byli zbyt często przerywane, ponieważ uniemożliwia im to korzystanie z aplikacji.
Nie używaj wywołania zwrotnego po zakończeniu wczytywania do wyświetlania reklamy pełnoekranowej.
Może to negatywnie wpłynąć na wygodę użytkowników. Zamiast tego pobierz reklamę z wyprzedzeniem, zanim będzie trzeba ją wyświetlić. Następnie sprawdź metodę canPresentFromRootViewController:error:GADInterstitialAd, aby dowiedzieć się, czy jest ona gotowa do wyświetlenia.

Dodatkowe materiały

Przykłady w GitHub

Wyświetl pełne przykłady reklam pełnoekranowych w wybranym języku:

Samouczki wideo z Garage dla reklam mobilnych

Historie sukcesu

Dalsze kroki