Reklamy pełnoekranowe zakrywają interfejs aplikacji do czasu, gdy użytkownik je zamknie. Zwykle wyświetlają się w naturalnych momentach przejściowych w aplikacji, np. między działaniami lub podczas przerwy między poziomami w grze. Gdy aplikacja wyświetla reklamę pełnoekranową, użytkownik może ją kliknąć i przejść do miejsca docelowego, lub ją zamknąć i wrócić do aplikacji.
Z tego przewodnika dowiesz się, jak zintegrować reklamy pełnoekranowe z aplikacją na iOS.
Wymagania wstępne
- Pakiet SDK do reklam mobilnych Google w wersji 8.0.0 lub nowszej.
- Wykonaj czynności opisane w przewodniku dla początkujących.
Zawsze korzystaj z reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie aktywnych reklam produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.
Najprostszym sposobem wczytywania reklam testowych jest użycie dedykowanego identyfikatora testowej jednostki reklamowej w przypadku pełnoekranowych reklam na iOS:
/6499/example/interstitial
Został on specjalnie skonfigurowany tak, aby zwracał reklamy testowe w odpowiedzi na każde żądanie. Możesz go używać we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj, by przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.
Więcej informacji o działaniu reklam testowych z pakietu SDK do reklam mobilnych znajdziesz w artykule Reklamy testowe.
Implementacja
Najważniejsze czynności, jakie musisz wykonać, aby zintegrować reklamy pełnoekranowe:
- Wczytaj reklamę.
- Zarejestruj się na wywołania zwrotne
- Wyświetlać reklamę i obsługiwać zdarzenie nagrody.
Wczytaj reklamę
Wczytywanie reklamy odbywa się za pomocą statycznej metody loadWithAdManagerAdUnitID:request:completionHandler:
w klasie GAMInterstitialAd
. Metoda wczytywania wymaga identyfikatora jednostki reklamowej, obiektu GAMRequest
oraz modułu obsługi uzupełniania, który jest wywoływany w przypadku powodzenia lub niepowodzenia wczytywania reklamy. Wczytywany obiekt GAMInterstitialAd
jest udostępniany jako parametr w module obsługi zakończenia. Poniższy przykład pokazuje, jak wczytać GAMInterstitialAd
w klasie ViewController
.
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
} catch {
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
}
}
}
Objective-C
@import GoogleMobileAds;
@import UIKit;
@interface ViewController ()
@property(nonatomic, strong) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/6499/example/interstitial"
request:request
completionHandler:^(GAMInterstitialAd *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 związanych z prezentacją, musisz wdrożyć protokół GADFullScreenContentDelegate
i przypisać go do właściwości fullScreenContentDelegate
zwróconej reklamy. Protokół GADFullScreenContentDelegate
obsługuje wywołania zwrotne w przypadku pomyślnego lub nieudanego przedstawienia reklamy oraz zamknięcia. Poniższy kod pokazuje, jak wdrożyć protokół i przypisać go do reklamy:
Swift
import GoogleMobileAds
import UIKit
class ViewController: UIViewController, GADFullScreenContentDelegate {
private var interstitial: GAMInterstitialAd?
override func viewDidLoad() {
super.viewDidLoad()
do {
interstitial = try await GAMInterstitialAd.load(
withAdUnitID: "/6499/example/interstitial", request: GAMRequest())
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) GAMInterstitialAd *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GAMRequest *request = [GAMRequest request];
[GAMInterstitialAd loadWithAdManagerAdUnitID:@"/6499/example/interstitial"
request: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;
}];
}
/// 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.");
}
GAMInterstitialAd
jest obiektem jednorazowym. Oznacza to, że raz wyświetlonej reklamy pełnoekranowej nie można wyświetlić jej ponownie. Sprawdzoną metodą jest wczytanie kolejnej reklamy pełnoekranowej w metodzie adDidDismissFullScreenContent:
w GADFullScreenContentDelegate
, tak aby następna reklama pełnoekranowa zaczęła się ładować natychmiast po zamknięciu poprzedniej.
Wyświetl reklamę
Reklamy pełnoekranowe powinny wyświetlać się przy naturalnych przerwach w korzystaniu z aplikacji.
Dobrym przykładem są przejścia między poziomami gry lub po wykonaniu przez użytkownika zadania.
Oto przykład, jak to zrobić w ramach 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");
}
}
Jeśli nie otrzymujesz żadnych reklam i pojawi się komunikat o błędzie „Request Error: No ads to view” (Błąd żądania: brak reklam do wyświetlenia), sprawdź, czy element zamówienia ma kreację kierowaną na odpowiedni rozmiar. Rozmiary reklam pełnoekranowych to 320 x 480 i 480 x 320 w przypadku telefonów oraz 1024 x 768 i 768 x 1024 w przypadku tabletów. Jeśli urządzenie nie jest wystarczająco duże, by zmieścić się w rozdzielczości 1024 x 768 lub 768 x 1024, zostanie z powrotem ustawiony rozmiar 320 x 480 lub 480 x 320.
Sprawdzone metody
- Zastanów się, czy reklamy pełnoekranowe to odpowiedni typ reklamy do Twojej aplikacji.
- Reklamy pełnoekranowe sprawdzają się najlepiej w aplikacjach z naturalnymi momentami przejściowymi. Takie zakończenie stanowi zakończenie zadania w aplikacji, np. udostępnienie obrazu czy ukończenie poziomu w grze. Ponieważ użytkownik oczekuje przerw w działaniu, łatwo jest wyświetlić reklamę pełnoekranową bez zakłócania wrażeń użytkownika. Zastanów się, w których momentach pracy w aplikacji będziesz wyświetlać reklamy pełnoekranowe i jak może na nie zareagować użytkownik.
- Pamiętaj, aby wstrzymać działanie podczas wyświetlania reklamy pełnoekranowej.
- Jest wiele różnych typów reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Ważne jest, by aplikacja, która wyświetla reklamę pełnoekranową, zawieszała wykorzystanie pewnych zasobów, by mogła je wykorzystać w aplikacji. Jeśli np. wywołujesz reklamę pełnoekranową, wstrzymaj odtwarzanie dźwięku generowane przez aplikację. Możesz wznowić odtwarzanie dźwięków w module obsługi zdarzeń
adDidDismissFullScreenContent:
, które jest wywoływane po zakończeniu interakcji użytkownika z reklamą. Rozważ też tymczasowe wstrzymanie wszelkich skomplikowanych zadań obliczeniowych (takich jak pętla gry) na czas wyświetlania reklamy. Dzięki temu użytkownik nie będzie widzieć wolnej i brakującej reakcji grafiki czy zacinania się filmów. - Zadbaj o odpowiedni czas wczytywania.
- Reklamy pełnoekranowe muszą być wyświetlane w odpowiednim czasie, ale nie tylko w których przypadku użytkownik nie musi czekać, aż się załaduje. Jeśli wczytasz reklamę z wyprzedzeniem przed jej wyświetleniem, będziesz mieć pewność, że w Twojej aplikacji będzie się wyświetlać w pełni wczytana reklama pełnoekranowa, która będzie gotowa, gdy nadejdzie czas jej wyświetlenia.
- Nie zasyp użytkowników 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 przeszkadzali im tak często, że nie będą mogli z niej korzystać.
- Nie używaj wywołania zwrotnego ukończenia wczytywania do wyświetlania reklamy pełnoekranowej.
- Może to negatywnie wpłynąć na wygodę użytkowników. Najpierw wczytaj reklamę
przed wyświetleniem. Następnie sprawdź metodę
canPresentFromRootViewController:error:
w systemieGAMInterstitialAd
, aby dowiedzieć się, czy jest gotowa do wyświetlania.
Przykłady na GitHubie
- Przykład reklam pełnoekranowych: Swift | Objective-C
Dalsze kroki
- Dowiedz się więcej o kierowaniu reklam i wskazówkach dotyczących reklam pełnoekranowych.
- Dowiedz się więcej o prywatności użytkownika.