Reklamy natywne to zasoby reklamy wyświetlane użytkownikom za pomocą komponentów interfejsu, które są natywne na platformie. Są wyświetlane z wykorzystaniem tych samych klas, które już wykorzystujesz w swoich scenorysach, i można je sformatować, aby pasowało do wyglądu aplikacji.
Po wczytaniu reklamy natywnej aplikacja otrzymuje obiekt reklamy zawierający jej zasoby i odpowiada za ich wyświetlanie aplikacja – w przeciwieństwie do pakietu SDK do reklam mobilnych Google.
Ogólnie mówiąc, prawidłowe wdrożenie reklam natywnych składa się z 2 etapów: wczytania reklamy za pomocą pakietu SDK i wyświetlania jej treści w aplikacji.
Na tej stronie pokazujemy, jak używać pakietu SDK do wczytywania reklam natywnych.
Wymagania wstępne
- Wykonaj czynności opisane w przewodniku dla początkujących.
Zawsze korzystaj z reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie aktywnych reklam produkcyjnych.
Najprostszym sposobem wczytywania reklam testowych jest użycie naszego dedykowanego identyfikatora testowej jednostki reklamowej dla reklam natywnych na iOS:
ca-app-pub-3940256099942544/3986624511
Został on specjalnie skonfigurowany tak, aby zwracał reklamy testowe w odpowiedzi na każde żądanie i możesz go używać we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj, by przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.
Więcej informacji o działaniu reklam testowych z pakietu SDK do reklam mobilnych Google znajdziesz w artykule Reklamy testowe.
Wczytaj reklamy
Reklamy natywne są wczytywane za pomocą klasy GADAdLoader
, która wysyła wiadomości do przedstawicieli zgodnie z protokołem GADAdLoaderDelegate
.
Inicjowanie modułu wczytywania reklam
Zanim wczytasz reklamę, musisz zainicjować program wczytujący reklamy.
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;
Potrzebujesz identyfikatora jednostki reklamowej (możesz użyć identyfikatora testu), stałych przesyłanych w tablicy adTypes
, by określić, o jakie formaty natywne chcesz wysyłać żądania, oraz wszelkich opcji, które chcesz ustawić w parametrze options
. Listę możliwych wartości parametru options
znajdziesz na stronie ustawiania opcji reklam natywnych.
Tablica adTypes
powinna zawierać
tę stałą :
Wdrażanie przedstawiciela programu wczytywania reklam
Osoba, której przekazano dostęp do ładowania reklam, musi wdrożyć protokoły odpowiednie dla Twojego typu reklamy.
W przypadku reklam natywnych protokół GADNativeAdLoaderDelegate
zawiera komunikat, który jest wysyłany 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 jego metodę loadRequest:
, aby zażądać reklamy:
Swift
adLoader.load(GADRequest())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
Metoda loadRequest:
w elemencie GADAdLoader
akceptuje te same obiekty GADRequest
co banery i reklamy pełnoekranowe. Za pomocą obiektów żądań możesz dodawać informacje o kierowaniu, tak jak w przypadku innych typów reklam.
Wczytywanie wielu reklam (opcjonalnie)
Aby wczytać większą liczbę reklam w jednym żądaniu, ustaw obiekt GADMultipleAdsAdLoaderOptions
podczas inicjowania elementu 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, więc nie ma gwarancji, że pakiet SDK zwróci dokładną liczbę żądanych reklam.
Wyświetlane reklamy Google różnią się od siebie, chociaż reklamy z zarezerwowanych zasobów reklamowych lub reklam zewnętrznych kupujących nie muszą być niepowtarzalne.
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.
Ustalam, kiedy zakończy się wczytywanie
Gdy aplikacja wywoła metodę loadRequest:
, może uzyskać wyniki żądania, używając wywołań:
adLoader:didFailToReceiveAdWithError:
w:GADAdLoaderDelegate
adLoader:didReceiveNativeAd:
w:GADNativeAdLoaderDelegate
Żądanie jednej reklamy spowoduje jedno wywołanie jednej z tych metod.
Żądanie wielu reklam spowoduje co najmniej 1 wywołanie zwrotne powyższych metod, ale nie przekroczy maksymalnej liczby żądanych reklam.
Dodatkowo GADAdLoaderDelegate
oferuje wywołanie zwrotne adLoaderDidFinishLoading
. Ta metoda przekazywania dostępu oznacza, że moduł wczytywania reklam zakończył wczytywanie reklam i w przypadku tego żądania nie są zgłaszane żadne inne reklamy ani błędy. Oto przykład użycia tej funkcji podczas jednoczesnego wczytywania kilku reklam natywnych:
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 określa 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 związanych z reklamami natywnymi
Aby otrzymywać powiadomienia o zdarzeniach związanych z interakcjami z reklamami natywnymi, ustaw właściwość przekazywania dostępu reklamy natywnej:
Swift
nativeAd.delegate = self
Objective-C
nativeAd.delegate = self;
Następnie zaimplementuj funkcję GADNativeAdDelegate
, aby odbierać te wywołania z przekazanym dostępem:
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
Przestrzegaj tych reguł podczas wczytywania reklam.
Aplikacje, które używają reklam natywnych na liście, powinny zapisać ją w pamięci podręcznej.
Podczas wstępnego buforowania reklam wyczyść pamięć podręczną i załaduj ją ponownie po godzinie.
Nie wywołuj ponownie funkcji
loadRequest:
w metodzieGADAdLoader
, dopóki nie zakończy się wczytywanie poprzedniego żądania, tak jak wskazujeadLoaderDidFinishLoading:
.
Wyświetl reklamę
Po załadowaniu reklamy pozostaje Ci już tylko wyświetlić ją użytkownikom. Aby dowiedzieć się, jak to zrobić, przeczytaj przewodnik dotyczący zaawansowanych reklam natywnych.