Reklamy natywne

Reklamy natywne to komponenty reklamowe, które są wyświetlane użytkownikom za pomocą komponentów interfejsu użytkownika dostępnych na danej platformie. Są one wyświetlane za pomocą tych samych klas, których używasz w storyboardach, i można je sformatować tak, aby pasowały do projektu graficznego 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 treści reklamy w aplikacji.

Na tej stronie znajdziesz instrukcje wczytywania reklam natywnych za pomocą pakietu SDK.

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 wczytywania 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 komunikaty do swoich delegowanych 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;

Potrzebujesz identyfikatora jednostki reklamowej (możesz użyć identyfikatora testowego), stałych wartości do przekazania w tablicy adTypes, aby określić formaty natywne, których chcesz użyć, oraz opcji, które chcesz ustawić w parametrze options. Listę możliwych wartości parametru options znajdziesz na stronie ustawień opcji reklam natywnych.

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 delegata po załadowaniu 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 GADRequestobiekty co banery i interstitial. Podobnie jak w przypadku innych typów reklam, możesz używać obiektów żądania do dodawania informacji kierunkowych.

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 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ą obsługę klienta. 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ń

Wymienione wyżej protokoły rozszerzają protokół GADAdLoaderDelegate, który definiuje wiadomość wysyłaną, gdy nie udaje się załadować 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ą na liście reklam natywnych, 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 ponownie loadRequest: w przypadku GADAdLoader, dopóki poprzednia prośba nie zostanie załadowana, co jest sygnalizowane przez adLoaderDidFinishLoading:.

  • Ogranicz buforowanie reklam natywnych tylko do tego, co jest potrzebne. Na przykład podczas wstępnego buforowania przechowuj w pamięci podręcznej tylko reklamy, które są widoczne na ekranie. Reklamy natywne zajmują dużo pamięci, a ich buforowanie bez ich niszczenia 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ć, zapoznaj się z przewodnikiem dotyczącym zaawansowanych funkcji natywnych.