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 korzystania z pakietu SDK do wczytywania reklam natywnych.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
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 delegatów 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 opcje, 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:
w GADAdLoader
akceptuje te same GADRequest
obiekty 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:
adLoader:didFailToReceiveAdWithError:
w:GADAdLoaderDelegate
adLoader:didReceiveNativeAd:
w:GADNativeAdLoaderDelegate
Żądanie pojedynczej reklamy spowoduje jedno wywołanie jednej z tych metod.
Żądanie dotyczące wielu reklam spowoduje co najmniej 1 wywołanie powyższych metod, ale nie więcej niż maksymalną liczbę żądanych reklam.
Ponadto GADAdLoaderDelegate
oferuje adLoaderDidFinishLoading
telefoniczną prośbę o oddzwonienie. 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ą natywnej listy reklam, powinny z wyprzedzeniem przechowywać w pamięci podręcznej listę reklam.
Podczas wstępnego przechowywania reklam wyczyść pamięć podręczną i ponownie załaduj reklamy po upływie godziny.
Nie wywołuj ponownie
loadRequest:
w przypadkuGADAdLoader
, dopóki poprzednia prośba nie zostanie załadowana, co jest sygnalizowane przezadLoaderDidFinishLoading:
.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.