Reklamy natywne to komponenty reklamowe, które są 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
- Zapoznaj się z przewodnikiem dla początkujących.
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:
w 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 musi zwracać 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.
Nie używaj klasy GADMultipleAdsAdLoaderOptions, jeśli korzystasz z pośrednictwa, ponieważ żądania wielu reklam natywnych nie działają w przypadku identyfikatorów jednostek reklamowych skonfigurowanych pod kątem pośrednictwa.
Określanie, kiedy wczytywanie zostało zakończone
Po wywołaniu funkcji loadRequest: aplikacja może uzyskać wyniki żądania, wywołując te funkcje:
- adLoader:didFailToReceiveAdWithError:w:- GADAdLoaderDelegate
- adLoader:didReceiveNativeAd:w:- GADNativeAdLoaderDelegate
Żą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 adLoaderDidFinishLoading
oddzwonienie. 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:w- 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.