Reklamy natywne

Reklamy natywne to zasoby reklamy wyświetlane użytkownikom za pomocą komponentów interfejsu występujących na platformie. Są wyświetlane przy użyciu tych samych klas, które są już używane w Twoich scenorysach, i można je sformatować tak, aby pasowały do wizualnego projektu aplikacji.

Po wczytaniu reklamy natywnej Twoja aplikacja otrzymuje obiekt reklamy zawierający jej zasoby i za ich wyświetlenie odpowiada aplikacja (a nie pakiet SDK do reklam mobilnych Google).

Ogólnie rzecz biorąc, skuteczne wdrożenie reklam natywnych składa się z 2 etapów: Wczytywanie reklamy za pomocą pakietu SDK, a następnie wyświetlenie jej treści w aplikacji.

Z tego artykułu dowiesz się, jak za pomocą pakietu SDK wczytać reklamy natywne.

Wymagania wstępne

Zawsze korzystaj z reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie produkcyjnych reklam.

Najłatwiejszym sposobem wczytania reklam testowych jest użycie dedykowanego testowego identyfikatora jednostki reklamowej przeznaczonej do reklam natywnych na iOS:

ca-app-pub-3940256099942544/3986624511

Został on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w przypadku każdego żądania. Możesz go używać we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, by przed opublikowaniem aplikacji zastąpić go identyfikatorem jednostki reklamowej.

Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych Google znajdziesz w artykule Reklamy testowe.

Wczytaj reklamy

Reklamy natywne są ładowane za pomocą klasy GADAdLoader, która wysyła wiadomości do przedstawicieli zgodnie z protokołem GADAdLoaderDelegate.

Inicjowanie wczytywania reklam

Zanim załadujesz reklamę, musisz zainicjować moduł wczytywania reklam. Ten kod pokazuje, jak zainicjować GADAdLoader:

Swift

adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

Potrzebny będzie identyfikator jednostki reklamowej (możesz użyć identyfikatora testowego), stałe przekazywane w tablicy adTypes, które określają, które formaty natywne mają być wysyłane, oraz wszelkie opcje, które można ustawić w parametrze options. Listę możliwych wartości parametru options znajdziesz na stronie Ustawianie opcji reklam natywnych.

Tablica adTypes powinna zawierać tę stałą :

Wdrażanie przekazywania procesu wczytywania reklam

Moduł wczytywania reklam musi wdrożyć protokoły właściwe dla danego typu reklamy. W przypadku reklam natywnych protokół GADNativeAdLoaderDelegate zawiera wiadomość, która jest wysyłana do przedstawiciela po wczytaniu reklamy natywnej.

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

Wyślij żądanie

Po zainicjowaniu obiektu GADAdLoader wywołaj jego metodę loadRequest:, aby zażądać reklamy:

Swift

adLoader.load(GADRequest())

Objective-C

[self.adLoader loadRequest:[GADRequest request]];

Metoda loadRequest: w GADAdLoader akceptuje te same obiekty GADRequest co banery i reklamy pełnoekranowe. Obiektów żądań możesz używać do dodawania informacji o kierowaniu, tak jak w przypadku innych typów reklam.

Wczytywanie wielu reklam (opcjonalnie)

Aby wczytać wiele reklam w jednym żądaniu, ustaw obiekt GADMultipleAdsAdLoaderOptions podczas inicjowania GADAdLoader.

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

Objective-C

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

Liczba reklam na żądanie jest ograniczona do 5 i nie ma gwarancji, że pakiet SDK zwróci dokładną liczbę żądanych reklam.

Zwrócone reklamy Google będą się od siebie różnić, jednak nie ma gwarancji, że reklamy pochodzące z zarezerwowanych zasobów reklamowych lub od zewnętrznych kupujących będą niepowtarzalne.

Jeśli korzystasz z zapośredniczenia, nie używaj klasy GADMultipleAdsAdLoaderOptions, ponieważ żądania dotyczące wielu reklam natywnych nie działają obecnie w przypadku identyfikatorów jednostek reklamowych skonfigurowanych do zapośredniczenia.

Określanie, kiedy wczytywanie się zakończy

Gdy aplikacja wywoła metodę loadRequest:, może uzyskać wyniki żądania za pomocą wywołań, aby:

Żądanie pojedynczej reklamy spowoduje jedno wywołanie jednej z tych metod.

Żądanie wielu reklam spowoduje co najmniej jedno wywołanie zwrotne do powyższych metod, ale nie więcej niż maksymalna liczba żądanych reklam.

Dodatkowo GADAdLoaderDelegate oferuje wywołanie zwrotne adLoaderDidFinishLoading. Ta metoda przekazywania wskazuje, że moduł wczytywania reklam zakończył wczytywanie reklam i dla żądania nie są raportowane żadne inne reklamy ani błędy. Oto przykład użycia go podczas wczytywania kilku reklam natywnych naraz:

Swift

class ViewController: UIViewController, GADNativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        rootViewController: self,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

    adLoader.delegate = self
    adLoader.load(GADRequest())
  }

  func adLoader(_ adLoader: GADAdLoader,
       didReceive nativeAd: GADNativeAd) {
    // A native ad has loaded, and can be displayed.
  }

  func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
    // The adLoader has finished loading ads, and a new request can be sent.
  }

}

Objective-C

@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
      [[GADMultipleAdsAdLoaderOptions alloc] init];
  multipleAdsOptions.numberOfAds = 5;
  self.adLoader = [[GADAdLoader alloc]
        initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
      rootViewController:rootViewController
                 adTypes:@[ GADAdLoaderAdTypeNative ]
                 options:@[ multipleAdsOptions ]];

  self.adLoader.delegate = self;
  [self.adLoader loadRequest:[GADRequest request]];
}

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd {
  // A native ad has loaded, and can be displayed.
}

- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
  // The adLoader has finished loading ads, and a new request can be sent.
}

@end

Obsługa nieudanych żądań

Powyższe protokoły rozszerzają protokół GADAdLoaderDelegate, który definiuje wiadomość wysyłaną, gdy nie uda się wczytać reklam.

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

Otrzymywanie powiadomień o zdarzeniach reklamy natywnej

Aby otrzymywać powiadomienia o zdarzeniach związanych z interakcjami z reklamą natywną, ustaw właściwość przekazywania reklamy natywnej:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Następnie zaimplementuj GADNativeAdDelegate, aby odbierać te wywołania przekazywania:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Sprawdzone metody

Podczas wczytywania reklam przestrzegaj tych reguł.

  • Aplikacje, które używają reklam natywnych na liście, powinny wstępnie zapisywać listę reklam w pamięci podręcznej.

  • Podczas wstępnego buforowania reklam wyczyść pamięć podręczną i załaduj ponownie po godzinie.

  • Nie wywołuj identyfikatora loadRequest: ponownie na urządzeniu GADAdLoader, dopóki nie zakończy się wczytywanie poprzedniego żądania, jak wskazuje to adLoaderDidFinishLoading:.

Wyświetlanie reklamy

Po załadowaniu reklamy pozostaje już tylko ją wyświetlić użytkownikom. Aby dowiedzieć się, jak to zrobić, przeczytaj przewodnik po zaawansowanych reklamach natywnych.