Banery reklamowe

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 zakotwiczonych banerów adaptacyjnych. Google Ads, 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

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: ca-app-pub-3940256099942544/2435281174

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 GADBannerView

Banery reklamowe wyświetlają się w: GADBannerView więc pierwszym krokiem do integracji banerów reklamowych jest dodanie tagu GADBannerView w hierarchii widoków. Zwykle odbywa się to automatycznie lub za pomocą Kreatora interfejsów.

Automatyzacja

Wystąpienie GADBannerView można też utworzyć bezpośrednio. Oto przykład, jak utworzyć GADBannerView. wyrównana do dołu i do środka bezpiecznego obszaru ekranu:

Swift

import GoogleMobileAds
import UIKit

class ViewController: UIViewController {

  var bannerView: GADBannerView!

  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 = GADBannerView(adSize: adaptiveSize)

    addBannerViewToView(bannerView)
  }

  func addBannerViewToView(_ bannerView: GADBannerView) {
    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) GADBannerView *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 = [[GADBannerView 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 GADBannerView 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, gdy wyświetli się baner adaptacyjny 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 GADBannerView i jego właściwościach czas załadować reklamę. Aby to zrobić, wywołaj loadRequest: na GADRequest. obiekt:

Swift

override func viewDidLoad() {
  super.viewDidLoad()
  ...
  
  //  Set the ad unit ID and view controller that contains the GADBannerView.
  bannerView.adUnitID = "ca-app-pub-3940256099942544/2435281174"
  bannerView.rootViewController = self

  bannerView.load(GADRequest())
}

Objective-C

-   (void)viewDidLoad {
  [super viewDidLoad];
  ...
  
  //  Set the ad unit ID and view controller that contains the GADBannerView.
  self.bannerView.adUnitID = @"ca-app-pub-3940256099942544/2435281174";
  self.bannerView.rootViewController = self;

  [self.bannerView loadRequest:[GADRequest request]];
}

obiekty GADRequest 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 AdMob. 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 GADBannerView 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: GADBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    ...
    bannerView.delegate = self
  }
}

Objective-C

@import GoogleMobileAds;

@interface ViewController () <GADBannerViewDelegate>

@property(nonatomic, strong) GADBannerView *bannerView;

@end

@implementation ViewController

-   (void)viewDidLoad {
  [super viewDidLoad];
  ...
  self.bannerView.delegate = self;
}

Implementowanie zdarzeń banerów

Każda metoda 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.

Szybkie Objective-C

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 GADBannerView 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:(GADBannerView *)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:(GADBannerView *)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

Dodatkowe materiały

Przykłady w GitHubie

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 .

Przeglądaj inne tematy