Reklamy natywne

Reklamy natywne to zasoby reklamy wyświetlane użytkownikom za pomocą komponentów interfejsu, które są natywne na platformie. Są wyświetlane z wykorzystaniem tych samych klas, które już wykorzystujesz w swoich scenorysach, i można je sformatować, aby pasowało do wyglądu aplikacji.

Po wczytaniu reklamy natywnej aplikacja otrzymuje obiekt reklamy zawierający jej zasoby i odpowiada za ich wyświetlanie aplikacja – w przeciwieństwie do pakietu SDK do reklam mobilnych Google.

Ogólnie mówiąc, prawidłowe wdrożenie reklam natywnych składa się z 2 etapów: wczytania reklamy za pomocą pakietu SDK i wyświetlania jej treści w aplikacji.

Na tej stronie pokazujemy, jak używać pakietu SDK do wczytywania reklam natywnych.

Wymagania wstępne

Zawsze korzystaj z reklam testowych

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

Najprostszym sposobem wczytywania reklam testowych jest użycie naszego dedykowanego identyfikatora testowej jednostki reklamowej dla reklam natywnych na iOS:

ca-app-pub-3940256099942544/3986624511

Został on specjalnie skonfigurowany tak, aby zwracał reklamy testowe w odpowiedzi na każde żądanie i 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 Google znajdziesz w artykule Reklamy testowe.

Wczytaj reklamy

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

Inicjowanie modułu wczytywania reklam

Zanim wczytasz reklamę, musisz zainicjować program wczytujący reklamy. 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;

Potrzebujesz identyfikatora jednostki reklamowej (możesz użyć identyfikatora testu), stałych przesyłanych w tablicy adTypes, by określić, o jakie formaty natywne chcesz wysyłać żądania, oraz wszelkich opcji, które chcesz ustawić w parametrze options. Listę możliwych wartości parametru options znajdziesz na stronie ustawiania opcji reklam natywnych.

Tablica adTypes powinna zawierać tę stałą :

Wdrażanie przedstawiciela programu wczytywania reklam

Osoba, której przekazano dostęp do ładowania reklam, musi wdrożyć protokoły odpowiednie dla Twojego typu reklamy. W przypadku reklam natywnych protokół GADNativeAdLoaderDelegate zawiera komunikat, który jest wysyłany 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 GADAdLoader wywołaj jego metodę loadRequest:, aby zażądać reklamy:

Swift

adLoader.load(GADRequest())

Objective-C

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

Metoda loadRequest: w elemencie GADAdLoader akceptuje te same obiekty GADRequest co banery i reklamy pełnoekranowe. Za pomocą obiektów żądań możesz dodawać informacje o kierowaniu, tak jak w przypadku innych typów reklam.

Wczytywanie wielu reklam (opcjonalnie)

Aby wczytać większą liczbę reklam w jednym żądaniu, ustaw obiekt GADMultipleAdsAdLoaderOptions podczas inicjowania elementu 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, więc nie ma gwarancji, że pakiet SDK zwróci dokładną liczbę żądanych reklam.

Wyświetlane reklamy Google różnią się od siebie, chociaż reklamy z zarezerwowanych zasobów reklamowych lub reklam zewnętrznych kupujących nie muszą być niepowtarzalne.

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

Ustalam, kiedy zakończy się wczytywanie

Gdy aplikacja wywoła metodę loadRequest:, może uzyskać wyniki żądania, używając wywołań:

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

Żądanie wielu reklam spowoduje co najmniej 1 wywołanie zwrotne powyższych metod, ale nie przekroczy maksymalnej liczby żądanych reklam.

Dodatkowo GADAdLoaderDelegate oferuje wywołanie zwrotne adLoaderDidFinishLoading. Ta metoda przekazywania dostępu oznacza, że moduł wczytywania reklam zakończył wczytywanie reklam i w przypadku tego żądania nie są zgłaszane żadne inne reklamy ani błędy. Oto przykład użycia tej funkcji podczas jednoczesnego wczytywania kilku reklam natywnych:

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 określa 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 związanych z reklamami natywnymi

Aby otrzymywać powiadomienia o zdarzeniach związanych z interakcjami z reklamami natywnymi, ustaw właściwość przekazywania dostępu reklamy natywnej:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Następnie zaimplementuj funkcję GADNativeAdDelegate, aby odbierać te wywołania z przekazanym dostępem:

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

Przestrzegaj tych reguł podczas wczytywania reklam.

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

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

  • Nie wywołuj ponownie funkcji loadRequest: w metodzie GADAdLoader, dopóki nie zakończy się wczytywanie poprzedniego żądania, tak jak wskazuje adLoaderDidFinishLoading:.

Wyświetl reklamę

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