Reklamy pełnoekranowe

Reklamy pełnoekranowe zakrywają interfejs aplikacji do momentu, zamknięte przez użytkownika. Zazwyczaj wyświetlają się w naturalnych punktach przejścia przepływu aplikacji, np. między działaniami lub podczas przerwy między działaniami poziomów w grze. Gdy w aplikacji wyświetli się reklama pełnoekranowa, użytkownik może wybrać, 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

Zawsze korzystaj z reklam testowych

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

Najłatwiejszym sposobem wczytania reklam testowych jest użycie naszego dedykowanego testowego identyfikatora jednostki reklamowej dla reklam pełnoekranowych iOS:
ca-app-pub-3940256099942544/4411468910

Został on specjalnie skonfigurowany tak, aby wyświetlać reklamy testowe w odpowiedzi na każde żądanie. do wykorzystania we własnych aplikacjach przy kodowaniu, testowaniu i debugowaniu. Po prostu zrób zastąp go identyfikatorem jednostki reklamowej przed opublikowaniem aplikacji.

Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych znajdziesz na stronie 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

Do wczytywania reklamy służy funkcja load(adUnitID:request) na GADInterstitial zajęcia.

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  private var interstitial: GADInterstitial?

  override func viewDidLoad() {
    super.viewDidLoad()

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

SwiftUI

import GoogleMobileAds

class InterstitialViewModel: NSObject, GADFullScreenContentDelegate {
  private var interstitialAd: GADInterstitialAd?

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

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController ()

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  GADRequest *request = [GADRequest request];
  [GADInterstitial loadWithAdUnitID:@"ca-app-pub-3940256099942544/4411468910"
      request:request
      completionHandler:^(GADInterstitial *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 wydarzeniach prezentacji, musisz zaimplementować protokół GADFullScreenContentDelegate i przypisz go do właściwość fullScreenContentDelegate zwróconej reklamy. Protokół GADFullScreenContentDelegate obsługuje wywołania zwrotne, gdy reklama jest wyświetlany prawidłowo lub nieskutecznie oraz kiedy jest zamykany. Poniżej pokazuje, jak wdrożyć protokół i przypisać go do reklamy:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController, GADFullScreenContentDelegate {

  private var interstitial: GADInterstitial?

  override func viewDidLoad() {
    super.viewDidLoad()

    Task {
      do {
        interstitial = try await GADInterstitial.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.")
  }
}

SwiftUI

Przypisz właściwość fullScreenContentDelegate do zwróconej reklamy:

interstitialAd?.fullScreenContentDelegate = self

Zaimplementuj protokół:

func adDidRecordImpression(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidRecordClick(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func ad(
  _ ad: GADFullScreenPresentingAd,
  didFailToPresentFullScreenContentWithError error: Error
) {
  print("\(#function) called")
}

func adWillPresentFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adWillDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
}

func adDidDismissFullScreenContent(_ ad: GADFullScreenPresentingAd) {
  print("\(#function) called")
  // Clear the interstitial ad.
  interstitialAd = nil
}

Objective-C

@import GoogleMobileAds;
@import UIKit;

@interface ViewController () <GADFullScreenContentDelegate>

@property(nonatomic, strong) GADInterstitial *interstitial;

@end

@implementation ViewController

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

GADInterstitial to obiekt jednorazowy. Ten co oznacza, że raz wyświetlonej reklamy pełnoekranowej nie można pokazać ponownie. Najlepszy to wczytanie kolejnej reklamy pełnoekranowej w aplikacji Metoda adDidDismissFullScreenContent: na GADFullScreenContentDelegate tak że następna reklama pełnoekranowa rozpoczyna się zaraz po tym, jak poprzednia odrzucono.

Wyświetl reklamę

Reklamy pełnoekranowe powinny się wyświetlać podczas naturalnych przerw w korzystaniu z aplikacji. Dobrym przykładem jest przechodzenie między poziomami gry lub zakończenie zadania przez użytkownika.

Swift

guard let interstitial = interstitial else {
  return print("Ad wasn't ready.")
}

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

SwiftUI

Wykrywaj 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(fromRootViewController: nil)
}

Objective-C

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. Zakończenie zadania w aplikacji, np. udostępnienie obrazu lub ukończenie zadania poziom gry, tworzy taki punkt. Ponieważ użytkownik oczekuje przerwy wyświetlania reklamy pełnoekranowej bez zakłócania jej działania z myślą o użytkownikach. Zastanów się, na których etapach pracy w aplikacji jak wyświetlają się reklamy pełnoekranowe i jak prawdopodobne jest, że użytkownik zareaguje.
Pamiętaj, aby wstrzymać tę czynność podczas wyświetlania reklamy pełnoekranowej.
Jest wiele różnych typów reklam pełnoekranowych: tekstowe, graficzne, wideo i inne materiały. Upewnij się, że gdy aplikacja wyświetla reklama pełnoekranowa wstrzymuje również korzystanie z niektórych zasobów, aby umożliwić jak je wykorzystać. Na przykład gdy wykonujesz wywołanie dotyczące wyświetlenia reklama pełnoekranowa, pamiętaj o wstrzymaniu wszystkich wyjść audio generowanych przez aplikację. Możesz wznowić odtwarzanie dźwięków w adDidDismissFullScreenContent: moduł obsługi zdarzeń, który jest wywoływany, gdy użytkownik zakończy interakcję. z reklamą. Rozważ też tymczasowe przerwanie wykonywania intensywnej operacji obliczeniowej wykonywania zadań (np. pętli gry) podczas wyświetlania reklamy. Dzięki temu by grafika nie była powolna, nie odpowiadała ani się nie zacinała. film.
Zadbaj o odpowiedni czas wczytywania.
Równie ważne jest wyświetlanie reklam pełnoekranowych w odpowiednim czasie, należy również upewnić się, że użytkownik nie musi i poczekaj, aż się załadują. Wczytanie reklamy z wyprzedzeniem przed rozpoczęciem jej wyświetlania by zapewnić, że Twoja aplikacja będzie mieć w pełni wczytaną reklamę pełnoekranową przychodzi czas na ich wyświetlenie.
Nie zasypuj reklam 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ż pogarszać wrażenia użytkowników i niższych współczynnikach klikalności. Dopilnuj, aby użytkownicy nie zaglądali zbyt często gdy użytkownik nie może już korzystać z Twojej aplikacji.
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 wczytaj reklamę wcześniej które trzeba pokazać. Następnie sprawdź metodę canPresentFromRootViewController:error: w aplikacji GADInterstitial, aby sprawdzić, czy usługa jest gotowa do wyświetlane.

Dodatkowe materiały

Przykłady w GitHubie

Zobacz przykłady pełnych reklam pełnoekranowych w wybranym przez Ciebie języku:

Samouczki wideo w warsztatach reklam mobilnych

Historie sukcesu

Dalsze kroki