Banery reklamowe to prostokątne reklamy, które zajmują część układu aplikacji. Ta pozostają na ekranie, gdy użytkownicy wchodzą w interakcję z aplikacją – albo są zakotwiczone, w górnej lub dolnej części ekranu albo w tekście podczas przewijania. Baner reklamy mogą odświeżać się automatycznie po upływie określonego czasu. Przeczytaj Omówienie banerów reklamowych. .
Z tego przewodnika dowiesz się, jak zacząć korzystać z reklam zakotwiczonych adaptacyjne banery reklamowe, które pozwalają zmaksymalizować skuteczność reklam dzięki optymalizacji rozmiaru dla każdego urządzenia o określonej szerokości reklamy.
Zakotwiczony baner adaptacyjny
Zakotwiczone banery adaptacyjne to reklamy o stałym współczynniku proporcji reklamy reklam o stałym rozmiarze. Format obrazu jest podobny do standardu branżowego 320 x 50. Jednorazowo Jeśli podasz pełną szerokość, otrzymasz reklamę o optymalnym wysokość dla tej szerokości. Optymalna wysokość nie zmienia się w zależności od żądań z na tym samym urządzeniu, a widoki nie muszą przesuwać się, gdy reklama odświeża się.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
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 wczytywania reklam testowych jest użycie naszego dedykowanego testowego identyfikatora jednostki reklamowej do systemu iOS banery:
/21775744923/example/adaptive-banner
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 w artykule Testowanie Reklamy.
Tworzenie obiektu GAMBannerView
Banery reklamowe wyświetlają się w: GAMBannerView
więc pierwszym krokiem do integracji banerów reklamowych jest dodanie tagu GAMBannerView
w hierarchii widoków. Zwykle odbywa się to automatycznie lub
za pomocą Kreatora interfejsów.
Automatyzacja
Wystąpienie GAMBannerView
można też utworzyć bezpośrednio.
Oto przykład, jak utworzyć GAMBannerView
.
wyrównana do dołu i do środka bezpiecznego obszaru ekranu:
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController { var bannerView: GAMBannerView! override func viewDidLoad() { super.viewDidLoad() let viewWidth = view.frame.inset(by: view.safeAreaInsets).width // Here the current interface orientation is used. Use // GADLandscapeAnchoredAdaptiveBannerAdSizeWithWidth or // GADPortraitAnchoredAdaptiveBannerAdSizeWithWidth if you prefer to load an ad of a // particular orientation, let adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth) bannerView = GAMBannerView(adSize: adaptiveSize) addBannerViewToView(bannerView) } func addBannerViewToView(_ bannerView: GAMBannerView) { bannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(bannerView) view.addConstraints( [NSLayoutConstraint(item: bannerView, attribute: .bottom, relatedBy: .equal, toItem: view.safeAreaLayoutGuide, attribute: .bottom, multiplier: 1, constant: 0), NSLayoutConstraint(item: bannerView, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 1, constant: 0) ]) } }
Objective-C
@import GoogleMobileAds; @interface ViewController () @property(nonatomic, strong) GAMBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Here safe area is taken into account, hence the view frame is used after the // view has been laid out. CGRect frame = UIEdgeInsetsInsetRect(self.view.frame, self.view.safeAreaInsets); CGFloat viewWidth = frame.size.width; // Here the current interface orientation is used. If the ad is being preloaded // for a future orientation change or different orientation, the function for the // relevant orientation should be used. GADAdSize adaptiveSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth); // In this case, we instantiate the banner with desired ad size. self.bannerView = [[GAMBannerView alloc] initWithAdSize:adaptiveSize]; [self addBannerViewToView:self.bannerView]; } - (void)addBannerViewToView:(UIView *)bannerView { bannerView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:bannerView]; [self.view addConstraints:@[ [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view.safeAreaLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1 constant:0], [NSLayoutConstraint constraintWithItem:bannerView attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0] ]]; } @end
Pamiętaj, że w tym przypadku nie obowiązują ograniczenia szerokości ani wysokości, bo nada banerowi rozmiar treści widok.
Kreator interfejsów
Obiekt GAMBannerView
można dodać do scenorysu lub XIB
. Jeśli korzystasz z tej metody, pamiętaj, by ograniczenia pozycji dodawać tylko w przypadku
baner. Na przykład, kiedy baner adaptacyjny jest wyświetlany na dole
Ustaw widok banera na dole ekranu
Przewodnika po układzie i ustaw środkową część X wyrównaj się do środka X superwidoku.
Rozmiar reklamy banera jest ustalany automatycznie:
Swift
bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth)
Objective-C
self.bannerView.adSize = GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);
Wczytywanie reklamy
Po skonfigurowaniu interfejsu GAMBannerView
i jego właściwościach
czas załadować reklamę. Aby to zrobić, wywołaj loadRequest:
na
GAMRequest
.
obiekt:
Swift
override func viewDidLoad() { super.viewDidLoad() ... // Set the ad unit ID and view controller that contains the GAMBannerView. bannerView.adUnitID = "/21775744923/example/adaptive-banner" bannerView.rootViewController = self bannerView.load(GAMRequest()) }
Objective-C
- (void)viewDidLoad { [super viewDidLoad]; ... // Set the ad unit ID and view controller that contains the GAMBannerView. self.bannerView.adUnitID = @"/21775744923/example/adaptive-banner"; self.bannerView.rootViewController = self; [self.bannerView loadRequest:[GAMRequest request]]; }
obiekty GAMRequest reprezentują pojedyncze żądanie reklamy, zawierają właściwości, np. informacje o kierowaniu.
Jeśli reklama nie zostanie wczytana, nie trzeba wyraźnie żądać nowej, ponieważ jeśli jednostka reklamowa jest skonfigurowana pod kątem odświeżania, pakiet SDK do reklam mobilnych Google uwzględnia częstotliwość odświeżania określoną w usłudze Ad Manager, Interfejs. Jeśli odświeżanie nie jest włączone, musisz przesłać nową prośbę.
Zdarzenia reklamowe
Dzięki GADBannerViewDelegate
możesz nasłuchiwać zdarzeń cyklu życia,
np. gdy reklama zostanie zamknięta lub użytkownik opuści aplikację.
Rejestrowanie zdarzeń dotyczących banera
Aby rejestrować zdarzenia banerów reklamowych, ustaw właściwość delegate
na
GAMBannerView
do obiektu, który implementuje metodę
Protokół GADBannerViewDelegate
. Ogólnie rzecz biorąc, klasa, która stosuje baner,
Reklamy działają też jako klasa przedstawiciela. W takim przypadku właściwość delegate
może
ustaw na self
.
Swift
import GoogleMobileAds import UIKit class ViewController: UIViewController, GADBannerViewDelegate { var bannerView: GAMBannerView! override func viewDidLoad() { super.viewDidLoad() ... bannerView.delegate = self } }
Objective-C
@import GoogleMobileAds; @interface ViewController () <GADBannerViewDelegate> @property(nonatomic, strong) GAMBannerView *bannerView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ... self.bannerView.delegate = self; }
Implementowanie zdarzeń banerów
Każda z metod w aplikacji GADBannerViewDelegate
jest oznaczona jako opcjonalna, dlatego
implementować tylko te metody,
które chcesz zastosować. Ten przykład implementuje wszystkie metody
i rejestruje komunikat w konsoli:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { print("bannerViewDidReceiveAd") } func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) { print("bannerView:didFailToReceiveAdWithError: \(error.localizedDescription)") } func bannerViewDidRecordImpression(_ bannerView: GADBannerView) { print("bannerViewDidRecordImpression") } func bannerViewWillPresentScreen(_ bannerView: GADBannerView) { print("bannerViewWillPresentScreen") } func bannerViewWillDismissScreen(_ bannerView: GADBannerView) { print("bannerViewWillDIsmissScreen") } func bannerViewDidDismissScreen(_ bannerView: GADBannerView) { print("bannerViewDidDismissScreen") }
Objective-C
- (void)bannerViewDidReceiveAd:(GADBannerView *)bannerView { NSLog(@"bannerViewDidReceiveAd"); } - (void)bannerView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(NSError *)error { NSLog(@"bannerView:didFailToReceiveAdWithError: %@", [error localizedDescription]); } - (void)bannerViewDidRecordImpression:(GADBannerView *)bannerView { NSLog(@"bannerViewDidRecordImpression"); } - (void)bannerViewWillPresentScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewWillPresentScreen"); } - (void)bannerViewWillDismissScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewWillDismissScreen"); } - (void)bannerViewDidDismissScreen:(GADBannerView *)bannerView { NSLog(@"bannerViewDidDismissScreen"); }
W przykładzie tej osoby z przekazanym dostępem znajdziesz przykład implementacji metod przekazywania banera wersję demonstracyjną interfejsu API iOS.
Przypadki użycia
Oto kilka przykładów ich użycia.
dodawanie banera do hierarchii wyświetleń po otrzymaniu reklamy;
Możesz opóźnić dodanie GAMBannerView
do:
do momentu otrzymania reklamy. Możesz to zrobić, słuchając
dla wydarzenia bannerViewDidReceiveAd:
:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { // Add banner to view and add constraints as above. addBannerViewToView(bannerView) }
Objective-C
- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView { // Add bannerView to view and add constraints as above. [self addBannerViewToView:self.bannerView]; }
Animowanie banera reklamowego
Możesz też użyć zdarzenia bannerViewDidReceiveAd:
, aby animować baner reklamowy tylko raz
Jak widać w tym przykładzie:
Swift
func bannerViewDidReceiveAd(_ bannerView: GADBannerView) { bannerView.alpha = 0 UIView.animate(withDuration: 1, animations: { bannerView.alpha = 1 }) }
Objective-C
- (void)bannerViewDidReceiveAd:(GAMBannerView *)bannerView { bannerView.alpha = 0; [UIView animateWithDuration:1.0 animations:^{ bannerView.alpha = 1; }]; }
Wstrzymywanie i wznawianie aplikacji
Protokół GADBannerViewDelegate
udostępnia metody powiadamiania o zdarzeniach, takie jak:
, np. gdy kliknięcie powoduje wyświetlenie lub zamknięcie nakładki. Jeśli chcesz
śledzić, czy te zdarzenia były związane z reklamami, zarejestrować się na te
GADBannerViewDelegate
metody.
Aby przechwytywać wszystkie typy prezentacji w nakładkach lub wywołania zewnętrznych przeglądarek, nie
tylko tych, które pochodzą z kliknięć reklam,
aplikacja będzie lepiej wsłuchiwać się
równoważne metody w klasie UIViewController
lub UIApplication
. Oto tabela
równoważne metody iOS, które są wywoływane w tym samym czasie co
GADBannerViewDelegate
metody:
Metoda GADBannerViewDelegate | Metoda na iOS |
---|---|
bannerViewWillPresentScreen: |
viewWillDisappear: UIViewController |
bannerViewWillDismissScreen: |
viewWillAppear: UIViewController |
bannerViewDidDismissScreen: |
viewDidAppear: UIViewController |
Ręczne liczenie wyświetleń
Możesz ręcznie wysyłać pingi wyświetleń do Ad Managera, jeśli masz specjalne
określając, kiedy należy zarejestrować wyświetlenie. Można to zrobić w pierwszej kolejności:
włączenie GAMBannerView
na potrzeby ręcznych wyświetleń przed wczytaniem reklamy:
Swift
bannerView.enableManualImpressions = true
Objective-C
self.bannerView.enableManualImpressions = YES;
Po określeniu, że reklama została zwrócona i jest widoczna na ekranie, możesz samodzielnie uruchomić wyświetlenie:
Swift
bannerView.recordImpression()
Objective-C
[self.bannerView recordImpression];
Zdarzenia w aplikacjach
Zdarzenia w aplikacji umożliwiają tworzenie reklam, które mogą wysyłać komunikaty do kodu aplikacji. aplikacja może podejmować działania na podstawie tych komunikatów.
Możesz nasłuchiwać zdarzeń w aplikacji związanych z Ad Managerem za pomocą parametru GADAppEventDelegate
.
Mogą one wystąpić w dowolnym momencie cyklu życia reklamy, nawet przed
Wywoływana jest właściwość bannerViewDidReceiveAd:
obiektu GADBannerViewDelegate
.
Swift
// Implement your app event within this method. The delegate will be // notified when the SDK receives an app event message from the ad. // Called when the banner receives an app event. optional public func bannerView(_ banner: GAMBannerView, didReceiveAppEvent name: String, withInfo info: String?)
Objective-C
// Implement your app event within this method. The delegate will be // notified when the SDK receives an app event message from the ad. @optional // Called when the banner receives an app event. - (void)bannerView:(GAMBannerView *)banner didReceiveAppEvent:(NSString *)name withInfo:(NSString *)info;
Metody zdarzeń w aplikacji można wdrożyć w kontrolerze widoku:
Swift
import GoogleMobileAds class ViewController: UIViewController, GADAppEventDelegate { }
Objective-C
@import GoogleMobileAds; @interface ViewController : UIViewController <GADAppEventDelegate> { } @end
Pamiętaj, aby ustawić przedstawiciela za pomocą właściwości appEventDelegate
przed wykonaniem
żądania reklamy.
Swift
bannerView.appEventDelegate = self
Objective-C
self.bannerView.appEventDelegate = self;
Oto przykład, który pokazuje, jak zmienić kolor tła aplikacji przez Określanie koloru za pomocą zdarzenia w aplikacji:
Swift
func bannerView(_ banner: GAMBannerView, didReceiveAppEvent name: String, withInfo info: String?) { if name == "color" { guard let info = info else { return } switch info { case "green": // Set background color to green. view.backgroundColor = UIColor.green case "blue": // Set background color to blue. view.backgroundColor = UIColor.blue default: // Set background color to black. view.backgroundColor = UIColor.black } } }
Objective-C
- (void)bannerView:(GAMBannerView *)banner didReceiveAppEvent:(NSString *)name withInfo:(NSString *)info { if ([name isEqual:@"color"]) { if ([info isEqual:@"green"]) { // Set background color to green. self.view.backgroundColor = [UIColor greenColor]; } else if ([info isEqual:@"blue"]) { // Set background color to blue. self.view.backgroundColor = [UIColor blueColor]; } else // Set background color to black. self.view.backgroundColor = [UIColor blackColor]; } } }
A oto odpowiednia kreacja wysyłająca komunikaty o zdarzeniach w aplikacji kolorowych do
appEventDelegate
:
<html> <head> <script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script> <script> document.addEventListener("DOMContentLoaded", function() { // Send a color=green event when ad loads. admob.events.dispatchAppEvent("color", "green"); document.getElementById("ad").addEventListener("click", function() { // Send a color=blue event when ad is clicked. admob.events.dispatchAppEvent("color", "blue"); }); }); </script> <style> #ad { width: 320px; height: 50px; top: 0px; left: 0px; font-size: 24pt; font-weight: bold; position: absolute; background: black; color: white; text-align: center; } </style> </head> <body> <div id="ad">Carpe diem!</div> </body> </html>
W przykładzie Zdarzenia w aplikacji z Ad Managera znajdziesz przykład implementacji zdarzeń w aplikacji w interfejsie Aplikacja w wersji demonstracyjnej interfejsu API na iOS.
Dodatkowe materiały
Przykłady w GitHubie
- Przykład zakotwiczonych banerów adaptacyjnych: Swift | Objective-C
- Prezentacja funkcji zaawansowanych: Swift | Objective-C
Dalsze kroki
Banery zwijane
Zwijane banery reklamowe, które są początkowo wyświetlane jako większe z nakładką, z przyciskiem do zwijania reklamy do mniejszego rozmiaru. Warto z niej korzystać aby jeszcze bardziej zoptymalizować skuteczność. Więcej informacji znajdziesz w artykule o zwijanych banerach reklamowych.
Wbudowane banery adaptacyjne
Śródtekstowe banery adaptacyjne są większe i wyższe niż zakotwiczone banery adaptacyjne banerów. Mają zmienną wysokość i równą wysokość ekranu urządzenia. Wbudowane banery adaptacyjne są zalecane zamiast zakotwiczonych banerów adaptacyjnych w przypadku: które umieszczają banery reklamowe w treściach przewijanych. Zobacz Wbudowane reklamy adaptacyjne banerów .