Reklamy pełnoekranowe zakrywają interfejs aplikacji, w której się wyświetlają, 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 kliknąć reklamę i przejść do miejsca docelowego lub zamknąć ją i wrócić do aplikacji. Studium przypadku
Z tego przewodnika dowiesz się, jak zintegrować reklamy pełnoekranowe z aplikacją na iOS.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
Zawsze testuj za pomocą reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych zamiast reklam produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.
Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowej jednostki reklamowej
w przypadku reklam pełnoekranowych na iOS:
ca-app-pub-3940256099942544/4411468910
Został 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 identyfikatorem swojej jednostki reklamowej.
Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych znajdziesz w artykule Reklamy testowe.
Implementacja
Główne etapy integracji reklam pełnoekranowych to:
- Wczytaj reklamę.
- Zarejestruj wywołania zwrotne.
- wyświetlać reklamę;
Wczytywanie reklamy
Wczytywanie 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ć wartość
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 w przypadku, gdy reklama zostanie wyświetlona lub nie, a także gdy zostanie zamknięta. Poniższy kod pokazuje, jak wdrożyć 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 jest obiektem jednorazowego użytku. Oznacza to, że po wyświetleniu reklamy pełnoekranowej nie można jej wyświetlić ponownie. Zalecamy wczytywanie kolejnej reklamy pełnoekranowej w metodzie adDidDismissFullScreenContent: w GADFullScreenContentDelegate, aby następna reklama pełnoekranowa zaczęła się wczytywać od razu po zamknięciu poprzedniej.
Wyświetlanie reklamy
Reklamy pełnoekranowe powinny się wyświetlać podczas naturalnych przerw w aplikacji, np. między poziomami gry lub po wykonaniu zadania przez użytkownika.
Swift
ad.present(from: self!)
SwiftUI
Odbieraj zdarzenia 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 reklam dla Twojej aplikacji.
- Reklamy pełnoekranowe sprawdzają się najlepiej w aplikacjach, w których występują naturalne punkty 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, więc łatwo jest 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 reagować.
- 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. Ważne jest, aby w momencie wyświetlania reklamy pełnoekranowej aplikacja zawieszała korzystanie z niektórych zasobów, aby umożliwić reklamie ich wykorzystanie. Na przykład, gdy wywołujesz funkcję wyświetlania reklamy pełnoekranowej, pamiętaj, aby wstrzymać odtwarzanie dźwięku przez aplikację. Możesz wznowić odtwarzanie dźwięków w procedurze obsługi zdarzeń adDidDismissFullScreenContent:, która zostanie wywołana, gdy użytkownik zakończy interakcję z reklamą. Dodatkowo rozważ tymczasowe wstrzymanie wszelkich zadań wymagających intensywnych obliczeń (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 ładowania.
- Podobnie jak ważne jest wyświetlanie reklam pełnoekranowych w odpowiednim momencie, ważne jest też, aby użytkownik nie musiał czekać na ich załadowanie. Wcześniejsze wczytanie reklamy, zanim zamierzasz ją wyświetlić, może zapewnić, że Twoja aplikacja będzie miała w pogotowiu w pełni załadowaną reklamę pełnoekranową, gdy nadejdzie czas na jej wyświetlenie.
- Nie zasypuj użytkownika 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żytkowników i obniżyć współczynniki klikalności. Zadbaj o to, aby użytkownicy nie byli tak często przerywani, że nie będą mogli korzystać z Twojej 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 wczytaj reklamę z wyprzedzeniem, zanim będziesz musiał ją wyświetlić. Następnie sprawdź metodę canPresentFromRootViewController:error:naGADInterstitialAd, aby dowiedzieć się, czy jest gotowa do wyświetlenia.
Dodatkowe materiały
Przykłady w GitHubie
Zobacz pełne przykłady reklam pełnoekranowych w wybranym języku:
Samouczki wideo w Mobile Ads Garage
Historie sukcesu
Dalsze kroki
- Jeśli nie masz jeszcze własnej pełnoekranowej jednostki reklamowej, utwórz ją w interfejsie AdMob.
- Dowiedz się więcej o kierowaniu reklam i wytycznych dotyczących reklam pełnoekranowych.
- Dowiedz się więcej o prywatności użytkowników.