Reklamy natywne

Wybierz platformę: Android iOS Flutter Unity

Reklamy natywne to komponenty reklamowe wyświetlane użytkownikom za pomocą komponentów interfejsu, które są natywne dla platformy. Są one wyświetlane przy użyciu tych samych klas, których używasz już w scenorysach, i można je formatować tak, aby pasowały do projektu graficznego aplikacji.

Gdy reklama natywna się wczyta, aplikacja otrzyma obiekt reklamy zawierający jej komponenty. Za wyświetlanie tych komponentów odpowiada aplikacja, a nie pakiet SDK do reklam mobilnych Google.

Wprowadzenie reklam natywnych składa się z 2 etapów: ładowania reklamy za pomocą pakietu SDK, a następnie wyświetlania treści reklamy w aplikacji.

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

Wymagania wstępne

Zawsze testuj za pomocą reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych zamiast reklam produkcyjnych.

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowej jednostki reklamowej w przypadku 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ć w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, 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 narzędzia do wczytywania reklam

Zanim będzie można wczytać reklamę, musisz zainicjować moduł wczytywania reklam. Poniższy kod pokazuje, jak zainicjować GADAdLoader:

Swift

adLoader = AdLoader(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;

Będziesz potrzebować identyfikatora jednostki reklamowej (możesz użyć identyfikatora testowego), stałych do przekazania w tablicy adTypes, aby określić, o które formaty natywne chcesz wysłać żądanie, oraz wszelkich opcji, które chcesz ustawić w parametrze options. Listę możliwych wartości parametru options znajdziesz na stronie Ustawianie opcji reklam natywnych.

Tablica adTypes powinna zawierać tę stałą :

Implementowanie delegata modułu wczytywania reklam

Delegat modułu wczytywania reklam musi implementować protokoły specyficzne dla danego typu reklamy. W przypadku reklam natywnych protokół GADNativeAdLoaderDelegate zawiera wiadomość wysyłaną do delegata po wczytaniu reklamy natywnej.

Swift

public func adLoader(_ adLoader: AdLoader,
            didReceive nativeAd: NativeAd)

Objective-C

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

Wyślij żądanie

Po zainicjowaniu GADAdLoader wywołaj jego metodę loadRequest:, aby wysłać żądanie reklamy:

Swift

adLoader.load(Request())

Objective-C

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

Metoda loadRequest:GADAdLoader akceptuje te same obiekty GADRequest co banery i reklamy pełnoekranowe. Obiekty żądań możesz wykorzystywać 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 = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(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 ]];

Liczba reklam na żądanie jest ograniczona do 5, a pakiet SDK nie gwarantuje zwrócenia dokładnej liczby żądanych reklam.

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

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.

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

Po wywołaniu funkcji loadRequest: aplikacja może uzyskać wyniki żądania, wywołując te funkcje:

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

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

Dodatkowo GADAdLoaderDelegate oferuje adLoaderDidFinishLoadingoddzwanianie. Ta metoda delegowania wskazuje, że moduł wczytywania reklam zakończył wczytywanie reklam i w przypadku tego żądania nie będą zgłaszane żadne inne reklamy ani błędy. Oto przykład użycia tej metody podczas wczytywania kilku reklam natywnych naraz:

Swift

class ViewController: UIViewController, NativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = MultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = AdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
        // The UIViewController parameter is optional.
        rootViewController: rootViewController,
        adTypes: [ .native ],
        options: [ multipleAdOptions ])

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

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

  func adLoaderDidFinishLoading(_ adLoader: AdLoader) {
    // 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 określa komunikat wysyłany, gdy nie uda się wczytać reklam.

Swift

public func adLoader(_ adLoader: AdLoader,
    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 reklamą natywną, ustaw właściwość delegate reklamy natywnej:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

Następnie zaimplementuj GADNativeAdDelegate aby otrzymywać te wywołania delegowane:

Swift

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

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

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

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

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

func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
  // 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 buforować listę reklam.

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

  • Nie wywołuj ponownie funkcji loadRequest:GADAdLoader, dopóki nie zakończy się wczytywanie poprzedniej prośby, co jest sygnalizowane przez adLoaderDidFinishLoading:.

  • Ogranicz buforowanie reklam natywnych tylko do niezbędnych elementów. Na przykład podczas wstępnego buforowania buforuj tylko reklamy, które są od razu widoczne na ekranie. Reklamy natywne zajmują dużo pamięci, a ich buforowanie bez usuwania powoduje nadmierne wykorzystanie pamięci.

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

Wyświetlanie reklamy

Po wczytaniu reklamy wystarczy wyświetlić ją użytkownikom. Aby dowiedzieć się, jak to zrobić, zapoznaj się z naszym przewodnikiem po reklamach natywnych w wersji zaawansowanej.