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, Twoje konto może zostać zawieszone.

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 reklamach testowych znajdziesz w artykule Włączanie reklam testowych.Google Mobile Ads SDK

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

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 momentami przejściowymi. Takim momentem może być zakończenie zadania w aplikacji, np. udostępnienie obrazu 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 w ścieżce użytkownika w aplikacji będziesz wyświetlać reklamy pełnoekranowe i jak użytkownik może na nie zareagować.
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 aplikacja podczas wyświetlania reklamy pełnoekranowej zawieszała też 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, 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 powolną lub niereagującą 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żytkowników. 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 w GitHub

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

Dalsze kroki