Reklamy pełnoekranowe

Reklamy pełnoekranowe zakrywają interfejs aplikacji, dopóki użytkownik ich nie zamknie. Wyświetlają się zwykle w naturalnych punktach przejścia 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 testowej jednostki reklamowej na reklamy pełnoekranowe na iOS:
ca-app-pub-3940256099942544/4411468910

Jest 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 SDKreklamach testowych znajdziesz w artykule Włączanie reklam testowych.

Implementacja

Główne kroki 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 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;
    }];

Zarejestruj wywołania zwrotne

Aby otrzymywać powiadomienia o zdarzeniach związanych z wyświetlaniem, 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;
}

GADInterstitialAd 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 się wyświetlać podczas naturalnych przerw w aplikacji. Dobrym przykładem jest przerwa między poziomami gry lub moment po wykonaniu zadania przez użytkownika.

Swift

ad.present(from: self!)

SwiftUI

Nasłuchuj zdarzeń interfejsu 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 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 punktami przejścia. Takim punktem może być zakończenie zadania w aplikacji, np. 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.
Istnieje kilka różnych typów reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Ważne jest, aby aplikacja podczas wyświetlania reklamy pełnoekranowej zawieszała też korzystanie z niektórych zasobów, aby reklama mogła z nich korzystać. Gdy na przykład wywołujesz funkcję wyświetlania reklamy pełnoekranowej, pamiętaj, aby wstrzymać odtwarzanie dźwięku w aplikacji. Możesz wznowić odtwarzanie dźwięków w adDidDismissFullScreenContent: procedurze obsługi zdarzenia, która zostanie wywołana, gdy użytkownik zakończy interakcję z reklamą. Dodatkowo rozważ tymczasowe wstrzymanie intensywnych zadań obliczeniowych (np. pętli 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 może zapewnić, że aplikacja będzie miała w pełni wczytaną reklamę pełnoekranową, gdy nadejdzie czas jej wyświetlenia.
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 GADInterstitialAd, aby dowiedzieć się, czy reklama jest gotowa do wyświetlenia.

Dodatkowe materiały

Przykłady na GitHubie

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

Samouczki wideo w Mobile Ads Garage

Historie sukcesu

Dalsze kroki