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
- 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 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:
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
oddzwanianie. 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:
wGADAdLoader
, dopóki nie zakończy się wczytywanie poprzedniej prośby, co jest sygnalizowane przezadLoaderDidFinishLoading:
.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.