Reklamy natywne to zasoby reklamy wyświetlane użytkownikom za pomocą komponentów interfejsu występujących na 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.
Po wczytaniu reklamy natywnej Twoja aplikacja otrzymuje obiekt reklamy zawierający jej zasoby i za ich wyświetlenie odpowiada aplikacja (a nie pakiet SDK do reklam mobilnych Google).
Ogólnie rzecz biorąc, skuteczne wdrożenie reklam natywnych składa się z 2 etapów: Wczytywanie reklamy za pomocą pakietu SDK, a następnie wyświetlenie jej treści w aplikacji.
Z tego artykułu dowiesz się, jak za pomocą pakietu SDK wczytać reklamy natywne.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
Zawsze korzystaj z reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie produkcyjnych reklam.
Najłatwiejszym sposobem wczytania reklam testowych jest użycie dedykowanego testowego identyfikatora jednostki reklamowej przeznaczonej do 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ć we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, by przed opublikowaniem aplikacji zastąpić go identyfikatorem jednostki reklamowej.
Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych Google znajdziesz w artykule Reklamy testowe.
Wczytaj reklamy
Reklamy natywne są ładowane za pomocą klasy GADAdLoader
, która wysyła wiadomości do przedstawicieli zgodnie z protokołem GADAdLoaderDelegate
.
Inicjowanie wczytywania reklam
Zanim załadujesz reklamę, musisz zainicjować moduł wczytywania reklam.
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;
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 Ustawianie opcji reklam natywnych.
Tablica adTypes
powinna zawierać tę stałą :
Wdrażanie przekazywania procesu wczytywania reklam
Moduł wczytywania reklam musi wdrożyć protokoły właściwe 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 obiektu GADAdLoader
wywołaj jego metodę loadRequest:
, aby zażądać reklamy:
Swift
adLoader.load(GADRequest())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
Metoda loadRequest:
w GADAdLoader
akceptuje te same obiekty GADRequest
co banery i reklamy pełnoekranowe. 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, ustaw obiekt GADMultipleAdsAdLoaderOptions
podczas inicjowania 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 i nie ma gwarancji, że pakiet SDK zwróci dokładną liczbę żądanych reklam.
Zwrócone reklamy Google będą się od siebie różnić, jednak nie ma gwarancji, że reklamy pochodzące z zarezerwowanych zasobów reklamowych lub od zewnętrznych kupujących będą niepowtarzalne.
Jeśli korzystasz z zapośredniczenia, nie używaj klasy GADMultipleAdsAdLoaderOptions
, ponieważ żądania dotyczące wielu reklam natywnych nie działają obecnie w przypadku identyfikatorów jednostek reklamowych skonfigurowanych do zapośredniczenia.
Określanie, kiedy wczytywanie się zakończy
Gdy aplikacja wywoła metodę loadRequest:
, może uzyskać wyniki żądania za pomocą wywołań, aby:
adLoader:didFailToReceiveAdWithError:
w:GADAdLoaderDelegate
adLoader:didReceiveNativeAd:
w:GADNativeAdLoaderDelegate
Żądanie pojedynczej reklamy spowoduje jedno wywołanie jednej z tych metod.
Żądanie wielu reklam spowoduje co najmniej jedno wywołanie zwrotne do powyższych metod, ale nie więcej niż maksymalna liczba żądanych reklam.
Dodatkowo GADAdLoaderDelegate
oferuje wywołanie zwrotne adLoaderDidFinishLoading
. Ta metoda przekazywania wskazuje, że moduł wczytywania reklam zakończył wczytywanie reklam i dla żądania nie są raportowane żadne inne reklamy ani błędy. Oto przykład użycia go podczas wczytywania kilku reklam natywnych naraz:
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 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;
Otrzymywanie powiadomień o zdarzeniach reklamy natywnej
Aby otrzymywać powiadomienia o zdarzeniach związanych z interakcjami z reklamą natywną, ustaw właściwość przekazywania reklamy natywnej:
Swift
nativeAd.delegate = self
Objective-C
nativeAd.delegate = self;
Następnie zaimplementuj GADNativeAdDelegate
, aby odbierać te wywołania przekazywania:
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 reguł.
Aplikacje, które używają reklam natywnych na liście, powinny wstępnie zapisywać listę reklam w pamięci podręcznej.
Podczas wstępnego buforowania reklam wyczyść pamięć podręczną i załaduj ponownie po godzinie.
Nie wywołuj identyfikatora
loadRequest:
ponownie na urządzeniuGADAdLoader
, dopóki nie zakończy się wczytywanie poprzedniego żądania, jak wskazuje toadLoaderDidFinishLoading:
.
Wyświetlanie reklamy
Po załadowaniu reklamy pozostaje już tylko ją wyświetlić użytkownikom. Aby dowiedzieć się, jak to zrobić, przeczytaj przewodnik po zaawansowanych reklamach natywnych.