Reklamy pełnoekranowe

Reklamy pełnoekranowe zajmują interfejs aplikacji, dopóki nie zostaną zamknięte przez użytkownika. Zwykle wyświetlają się one 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ą, może ją kliknąć i przejść do miejsca docelowego, a następnie 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

Zawsze korzystaj z reklam testowych

Tworząc i testując aplikacje, korzystaj z reklam testowych, a nie z aktywnych reklam produkcyjnych. Jeśli tego nie zrobisz, możemy zawiesić Twoje konto.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowej jednostki reklamowej dla reklam pełnoekranowych na iOS:
ca-app-pub-3940256099942544/4411468910

Został on tak skonfigurowany, by zwracać reklamy testowe dla każdego żądania, i można używać go we własnych aplikacjach w zakresie 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 pakietu SDK do reklam mobilnych znajdziesz w artykule Reklamy testowe.

Wdrażanie

Główne kroki integracji reklam pełnoekranowych:

  1. Wczytaj reklamę.
  2. Zarejestruj się na oddzwonienie.
  3. wyświetlać reklamę i obsługiwać zdarzenie związane z nagrodą;

Wczytywanie reklamy

Wczytywanie reklamy odbywa się za pomocą statycznej metody loadWithAdUnitID:request:completionHandler: w klasie GADInterstitialAd. Metoda wczytywania wymaga identyfikatora jednostki reklamowej, obiektu GADRequest i modułu obsługi wywołania, które jest wywoływane, gdy ładowanie reklamy się powiedzie. Wczytany obiekt GADInterstitialAd jest przekazywany jako parametr w module obsługi ukończenia. Poniższy przykład pokazuje, jak wczytać GADInterstitialAd w klasie ViewController.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                      }
    )
  }
}

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 oddzwonienie

Aby otrzymywać powiadomienia o zdarzeniach prezentacji, musisz wdrożyć protokół GADFullScreenContentDelegate i przypisać go do właściwości fullScreenContentDelegate w zwróconej reklamie. Protokół GADFullScreenContentDelegate obsługuje wywołania zwrotne w przypadku udanych lub nieudanych wyświetleń reklamy i jej odrzucenia. Ten kod pokazuje, jak wdrożyć protokół i przypisać go do reklamy:

Swift

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    let request = GADRequest()
    GADInterstitialAd.load(withAdUnitID: "ca-app-pub-3940256099942544/4411468910",
                                request: request,
                      completionHandler: { [self] ad, error in
                        if let error = error {
                          print("Failed to load interstitial ad with error: \(error.localizedDescription)")
                          return
                        }
                        interstitial = ad
                        interstitial?.fullScreenContentDelegate = self
                      }
    )
  }

  /// 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

@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 jednorazowy obiekt. Oznacza to, że po wyświetleniu reklamy pełnoekranowej nie można jej wyświetlić ponownie. Sprawdzoną metodą jest wczytanie innej reklamy pełnoekranowej w metodzie adDidDismissFullScreenContent: w witrynie GADFullScreenContentDelegate, dzięki czemu następna reklama pełnoekranowa zacznie się wczytywać, gdy tylko poprzednia zostanie zamknięta.

Wyświetl reklamę

Reklamy pełnoekranowe powinny wyświetlać się w naturalnych przerwach w korzystaniu z aplikacji. Dobrym przykładem jest poziom gry lub ukończenie zadania przez użytkownika. Oto przykład, jak to zrobić w jednej z metod działania w UIViewController:

Swift

@IBAction func doSomething(_ sender: Any) {
  if interstitial != nil {
    interstitial.present(fromRootViewController: self)
  } else {
    print("Ad wasn't ready")
  }
}

Objective-C

- (IBAction)doSomething:(id)sender {
  ...
  if (self.interstitial) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
}

Sprawdzone metody

Zastanów się, czy reklamy pełnoekranowe to odpowiedni typ aplikacji dla Twojej aplikacji.
Reklamy pełnoekranowe najlepiej sprawdzają się w aplikacjach z naturalnymi punktami przejścia. Może to być na przykład zakończenie zadania w aplikacji, takie jak udostępnienie obrazu czy ukończenie poziomu gry. Użytkownik oczekuje przerwy na działanie reklamy, dlatego łatwo jest wyświetlić reklamę pełnoekranową bez zakłócania komfortu użytkownika. Zastanów się, w którym momencie w aplikacji będziesz wyświetlać reklamy pełnoekranowe i jakie będą reakcje użytkowników.
Pamiętaj, by wstrzymać działanie wyświetlające się reklama pełnoekranowa.
Istnieje wiele różnych typów reklam pełnoekranowych: tekstowych, graficznych, wideo i innych. Ważne jest, aby gdy aplikacja wyświetla reklamę pełnoekranową, zawiesza też możliwość korzystania z niektórych zasobów, aby umożliwić korzystanie z tych reklam. Jeśli na przykład chcesz wywołać reklamę pełnoekranową, pamiętaj, by wstrzymać odtwarzanie dźwięku generowane przez aplikację. Odtwarzanie dźwięku możesz wznowić w module obsługi zdarzeń adDidDismissFullScreenContent:, który jest wywoływany, gdy użytkownik zakończy interakcję z reklamą. Możesz też tymczasowo wstrzymać intensywne zadania obliczeniowe (np. zapętlenia) w czasie wyświetlania reklamy. Dzięki temu użytkownicy nie będą zauważyć powolnej, niereagowanej grafiki ani zacinających się filmów.
Zapewnij wystarczający czas wczytywania.
Niezwykle istotne jest, aby wyświetlać reklamy pełnoekranowe o odpowiedniej porze, tak samo jak wtedy, gdy użytkownik nie musi czekać, aż się załaduje. Wczytywanie reklamy z wyprzedzeniem przed wyświetleniem reklamy może zapewnić, że w chwili wyświetlenia jej reklamy pełnoekranowej aplikacja będzie w pełni gotowa do wyświetlenia.
Nie zasypuj użytkowników reklamami.
Wydaje się, że zwiększenie częstotliwości wyświetlania reklam pełnoekranowych w aplikacji może być świetnym sposobem na zwiększenie przychodów, ale może też obniżyć komfort użytkowników i obniżyć współczynniki klikalności. Zadbaj o to, aby użytkownicy nie byli zbyt często przerywani podczas korzystania z Twojej aplikacji.
Nie używaj wywołania zwrotnego zakończenia wczytywania do pokazywania reklamy pełnoekranowej.
Pogarsza to komfort użytkowników. Wstępnie wczytuj reklamy przed wyświetleniem. Następnie sprawdź metodę canPresentFromRootViewController:error: w GADInterstitialAd, aby zobaczyć, czy jest gotowa do wyświetlania.

Dodatkowe materiały

Przykłady w usłudze GitHub

Samouczki wideo o reklamach mobilnych w garażu

Historie sukcesu

Dalsze kroki