Reklamy natywne

Reklamy natywne to zasoby reklamowe, które są wyświetlane użytkownikom za pomocą komponentów interfejsu użytkownika dostępnych na danej 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.

Gdy wczytuje się reklama natywna, aplikacja otrzymuje obiekt reklamy zawierający jej komponenty. Za wyświetlanie reklamy odpowiada aplikacja, a nie pakiet SDK do reklam mobilnych Google.

Ogólnie rzecz biorąc, wdrożenie reklam natywnych składa się z 2 części: wczytywania reklamy za pomocą pakietu SDK i wyświetlania jej treści w aplikacji.

Na tej stronie dowiesz się, jak za pomocą pakietu SDK wczytywać reklamy natywne.

Wymagania wstępne

Zawsze testuj reklamy za pomocą reklam testowych

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

Najłatwiejszym sposobem wczytania reklam testowych jest użycie dedykowanego identyfikatora testowej jednostki reklamowej na potrzeby reklam natywnych na iOS:

ca-app-pub-3940256099942544/3986624511

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

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

Wczytywanie reklam

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

Inicjowanie ładowarki reklam

Zanim wczytasz reklamę, musisz zainicjować ładowarkę reklam. Poniższy kod pokazuje, jak zainicjować GADAdLoader:

Swift

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

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
    // The UIViewController parameter is nullable.
    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 ustawień opcji reklam natywnym.

Tablica adTypes powinna zawierać tę stałą :

Implementowanie delegata ładowarki reklam

Delegowany komponent ładowarki reklam musi implementować protokoły odpowiednie 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 GADAdLoader wywołaj metodę loadRequest:, aby poprosić o reklamę:

Swift

adLoader.load(GADRequest())

Objective-C

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

Metoda loadRequest:GADAdLoader akceptuje te same GADRequest obiekty co banery i interstitial. 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, podczas inicjowania obiektu GADAdLoader ustaw obiekt GADMultipleAdsAdLoaderOptions.

Swift

let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
    // The UIViewController parameter is optional.
    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"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

Maksymalna liczba reklam na żądanie to 5, a nie można zagwarantować, że pakiet SDK zwróci dokładnie taką liczbę reklam, o którą prosisz.

Zwrócone reklamy Google będą się od siebie różnić, ale nie ma gwarancji, że reklamy z rezerwowanych zasobów reklamowych lub od zewnętrznych kupujących będą unikalne.

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

Określanie, kiedy wczytywanie zostało zakończone

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

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

Żądanie dotyczące wielu reklam spowoduje wywołanie co najmniej jednej z wymienionych powyżej metod, ale nie więcej niż maksymalną liczbę żądanych reklam.

Ponadto GADAdLoaderDelegate oferuje adLoaderDidFinishLoadingtelefoniczną prośbę o oddzwonienie. Ta metoda delegowana wskazuje, że ładowarka reklam zakończyła wczytywanie reklam i nie będzie już zgłaszać żadnych innych reklam ani błędów dotyczących tego żądania. Oto przykład użycia tej funkcji podczas wczytywania kilku natywnych reklam jednocześnie:

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",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        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"
      // The UIViewController parameter is nullable.
      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;

otrzymywać powiadomienia o zdarzeniach związanych z reklamami natywnymi,

Aby otrzymywać powiadomienia o interakcjach z reklamami natywnymi, ustaw właściwość delegate reklamy natywnej:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Następnie wprowadź GADNativeAdDelegate, aby odbierać te wywołania delegowane:

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 zasad.

  • Aplikacje, które używają natywnej listy reklam, powinny z wyprzedzeniem przechowywać w pamięci podręcznej listę reklam.

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

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

  • Ogranicz buforowanie reklam natywnych tylko do tego, co jest potrzebne. Na przykład podczas wstępnego buforowania zapisuj w pamięci podręcznej tylko te reklamy, które są natychmiast widoczne na ekranie. Reklamy natywne zajmują dużo pamięci, a ich zapisywanie w pamięci podręcznej bez ich zniszczenia powoduje nadmierne wykorzystanie pamięci.

  • usuwać reklamy natywne, gdy nie są już używane.

Wyświetlanie reklamy

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