Reklamy pełnoekranowe

Reklamy pełnoekranowe zasłaniają interfejs aplikacji, dopóki użytkownik ich nie zamknie. Zazwyczaj wyświetlają się w naturalnych momentach przejściowych w aplikacji, np. między działaniami lub podczas przerwy między poziomami w grze. Gdy w aplikacji wyświetli się reklama pełnoekranowa, użytkownik może ją kliknąć i przejść do miejsca docelowego lub zamknąć aplikację i wrócić do aplikacji. Studium przypadku.

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

Wymagania wstępne

Zawsze korzystaj z reklam testowych

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

Najłatwiejszym sposobem wczytania reklam testowych jest użycie dedykowanego testowego identyfikatora jednostki reklamowej dla pełnoekranowych reklam w 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ć we własnych 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 etapy integracji reklam pełnoekranowych:

  1. Wczytaj reklamę.
  2. Zarejestruj się na wywołania zwrotne.
  3. Wyświetl reklamę i obsługuje zdarzenie nagrody.

Wczytywanie reklamy

Reklamę można wczytać za pomocą statycznej metody loadWithAdUnitID:request:completionHandler: w klasie GADInterstitialAd. Metoda wczytywania wymaga identyfikatora jednostki reklamowej, obiektu GADRequest i modułu obsługi uzupełniania, który jest wywoływany w przypadku udanego lub nieudanego wczytywania reklamy. Wczytany obiekt GADInterstitialAd jest dostarczany jako parametr w module obsługi uzupełniania. Poniższy przykład pokazuje, jak wczytać obiekt GADInterstitialAd w klasie ViewController.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request:request
                    completionHandler:^(GADInterstitialAd *ad, NSError *error) {
    if (error) {
      NSLog(@"Failed to load interstitial ad with error: %@", [error localizedDescription]);
      return;
    }
    self.interstitial = ad;
  }];
}

Zarejestruj się na wywołania zwrotne

Aby otrzymywać powiadomienia o zdarzeniach prezentacji, zaimplementuj protokół GADFullScreenContentDelegate i przypisz go do właściwości fullScreenContentDelegate zwróconej reklamy. Protokół GADFullScreenContentDelegate obsługuje wywołania zwrotne, gdy reklama wyświetla się prawidłowo lub nie udało się wyświetlić, i kiedy ją zamyka. Ten kod pokazuje, jak wdrożyć protokół i przypisać go do reklamy:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      interstitial = try await GADInterstitialAd.load(
        withAdUnitID: "ca-app-pub-3940256099942544/4411468910", request: GADRequest())
      interstitial?.fullScreenContentDelegate = self
    } catch {
      print("Failed to load interstitial ad with error: \(error.localizedDescription)")
    }
  }

  /// Tells the delegate that the ad failed to present full screen content.
  func ad(_ ad: GADFullScreenPresentingAd, didFailToPresentFullScreenContentWithError error: Error) {
    print("Ad did fail to present full screen content.")
  }

  /// Tells the delegate that the ad will present full screen content.
  func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad will present full screen content.")
  }

  /// Tells the delegate that the ad dismissed full screen content.
  func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
    print("Ad did dismiss full screen content.")
  }
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitialAd *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitialAd loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
                              request: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;
  }];
}

/// Tells the delegate that the ad failed to present full screen content.
- (void)ad:(nonnull id<GADFullScreenPresentingAd>)ad
didFailToPresentFullScreenContentWithError:(nonnull NSError *)error {
    NSLog(@"Ad did fail to present full screen content.");
}

/// Tells the delegate that the ad will present full screen content.
- (void)adWillPresentFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
    NSLog(@"Ad will present full screen content.");
}

/// Tells the delegate that the ad dismissed full screen content.
- (void)adDidDismissFullScreenContent:(nonnull id<GADFullScreenPresentingAd>)ad {
  NSLog(@"Ad did dismiss full screen content.");
}

GADInterstitialAd to obiekt jednorazowy. Oznacza to, że raz wyświetlonej reklamy pełnoekranowej nie można pokazać ponownie. Zgodnie ze sprawdzoną metodą ładuj kolejną reklamę pełnoekranową w metodzie adDidDismissFullScreenContent: w dniu GADFullScreenContentDelegate, tak aby następna reklama pełnoekranowa zaczęła się wczytywać zaraz po zamknięciu poprzedniej.

Wyświetl reklamę

Reklamy pełnoekranowe powinny się wyświetlać podczas naturalnych przerw w korzystaniu z aplikacji. Dobrym przykładem są między poziomami gry lub po wykonaniu przez użytkownika zadania. Oto przykład, jak to zrobić w jednej z metod działań w UIViewController:

Swift

@IBAction func doSomething(_ sender: Any) {
  guard let interstitial = interstitial else {
    return print("Ad wasn't ready.")
  }

  // The UIViewController parameter is an optional.
  interstitial.present(fromRootViewController: nil)
}

Objective-C

- (IBAction)doSomething:(id)sender {
  if (self.interstitial) {
    // The UIViewController parameter is nullable.
    [self.interstitial presentFromRootViewController:nil];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Sprawdzone metody

Zastanów się, czy reklamy pełnoekranowe to odpowiedni typ reklamy dla Twojej aplikacji.
Reklamy pełnoekranowe sprawdzają się najlepiej w aplikacjach z naturalnymi punktami przejściowymi. Może to być na przykład zakończenie zadania w aplikacji, np. udostępnienie obrazu lub ukończenie poziomu gry. Ponieważ użytkownik spodziewa się przerwy w działaniu, może wyświetlić reklamę pełnoekranową bez zakłócania wrażeń użytkownika. Zastanów się, w którym momencie procesu w aplikacji będą się wyświetlać reklamy pełnoekranowe i jak użytkownik na nie zareaguje.
Pamiętaj, aby wstrzymać tę czynność podczas wyświetlania reklamy pełnoekranowej.
Dostępnych jest wiele różnych typów reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Gdy aplikacja wyświetla reklamę pełnoekranową, nie może też korzystać z niektórych zasobów, by reklama mogła z nich korzystać. Na przykład gdy wywołujesz wywołanie reklamy pełnoekranowej, pamiętaj, by wstrzymać odtwarzanie dźwięku generowanego przez aplikację. Możesz wznowić odtwarzanie dźwięków w module obsługi zdarzeń adDidDismissFullScreenContent:, który będzie wywoływany, gdy użytkownik zakończy interakcję z reklamą. Rozważ też tymczasowe przerwanie wykonywania bardziej intensywnych zadań obliczeniowych (np. pętli gry) na czas wyświetlania reklamy. Dzięki temu użytkownik nie zobaczy powolnej lub nieresponującej grafiki albo zacinania się filmów.
Zadbaj o odpowiedni czas wczytywania.
Równie ważne jest, aby wyświetlać reklamy pełnoekranowe w odpowiednim czasie, ale należy też upewnić się, że użytkownik nie będzie musiał czekać, aż się załadują. Wcześniejsze wczytanie reklamy przed jej wyświetleniem może mieć pewność, że w aplikacji będzie w pełni wczytana reklama pełnoekranowa w chwili wyświetlenia.
Nie zasypuj reklam reklamami.
Zwiększenie częstotliwości wyświetlania reklam pełnoekranowych w aplikacji może wydawać się ś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 przerywali Ci korzystania z aplikacji tak często, że nie będą mogli dalej z niej korzystać.
Nie używaj wywołania zwrotnego ukończenia wczytywania do wyświetlenia reklamy pełnoekranowej.
Może to negatywnie wpłynąć na wrażenia użytkowników. Zamiast tego trzeba będzie wstępnie załadować reklamę, zanim trzeba będzie ją wyświetlić. Następnie sprawdź metodę canPresentFromRootViewController:error: w GADInterstitialAd, by dowiedzieć się, czy jest ona gotowa do wyświetlenia.

Dodatkowe zasoby

Przykłady na GitHubie

Samouczki wideo w garażu reklam mobilnych

Historie sukcesu

Dalsze kroki