Niestandardowe formaty reklam
Podobnie jak ich odpowiedniki zdefiniowane w systemie, niestandardowe formaty reklam natywnych są wczytywane przy użyciu obiektów GADAdLoader
. Wpisanie stałej GADAdLoaderAdTypeCustomNative
w tablicy adTypes
podczas inicjowania obiektu GADAdLoader
spowoduje, że podczas wczytywania reklam będzie ona wysyłać do niej żądania niestandardowych formatów natywnych.
GADCustomNativeAdLoaderDelegate
Protokół wczytywania formatów niestandardowych ma 2 metody. Pierwszy z nich jest używany przez funkcję GADAdLoader
do sprawdzania, o jakie identyfikatory formatów powinna prosić:
Swift
public func customNativeAdFormatIDs(for adLoader: GADAdLoader) -> [Any]
Objective-C
- (NSArray *)customNativeAdFormatIDsForAdLoader:(GADAdLoader *)adLoader;
Każdy niestandardowy format reklamy natywnej ma odpowiedni identyfikator, który go identyfikuje. Po wywołaniu tej metody aplikacja powinna zwrócić tablicę zawierającą identyfikatory formatów reklam, które jest przygotowane do wyświetlenia.
Druga wiadomość jest wysyłana po wczytaniu niestandardowej reklamy natywnej, podobnie jak w przypadku formatów zdefiniowanych przez system:
Swift
public func adLoader(_ adLoader: GADAdLoader, didReceive customNativeAd: GADCustomNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveCustomNativeAd:(GADCustomNativeAd *)customNativeAd;
Identyfikatory formatów
Identyfikatory formatów, które służą do jednoznacznego odwoływania się do niestandardowych formatów reklam natywnych, znajdziesz w interfejsie Ad Manager w sekcji Natywna w menu Wyświetlanie:
Identyfikator formatu każdej niestandardowej reklamy natywnej jest widoczny obok jej nazwy. Kliknij jedną z nazwy, aby wyświetlić ekran ze szczegółowymi informacjami o polach formatu:
W tym miejscu można dodawać, edytować i usuwać poszczególne pola. Zapisz nazwę każdego zasobu. Nazwa to klucz służący do pobierania danych dla każdego zasobu podczas wyświetlania niestandardowego formatu reklamy natywnej.
Wyświetlanie niestandardowych formatów reklam natywnych
Niestandardowe formaty reklam natywnych różnią się od formatów zdefiniowanych w systemie tym, że wydawcy mogą definiować własną listę zasobów, z których składa się reklama. Z tego powodu proces wyświetlania niestandardowych reklam natywnych różni się od procedury dla formatów zdefiniowanych przez system pod kilkoma względami:
GADCustomNativeAd
ma obsługiwać wszystkie utworzone przez Ciebie niestandardowe formaty reklam natywnych, dlatego nie ma nazwanych akcesorów zasobów. Zamiast tego udostępniane są metody takie jakimageForKey:
istringForKey:
, które wykorzystują nazwę pola jako argument.- Nie ma żadnej dedykowanej klasy widoku reklamy, takiej jak
GADNativeAdView
, której można użyć w komponencieGADCustomNativeAd
. Możesz wybrać dowolny widok, który ma sens w przypadku Twoich oczekiwań. - Nie ma żadnej dedykowanej klasy wyświetlenia reklamy, więc nie musisz rejestrować żadnych obejrzeń, z których korzystasz do wyświetlania zasobów reklamy.
Oto przykład widoku reklamy, który może wyświetlać prostą niestandardową reklamę natywną:
MySimpleNativeAdView.h
Swift
import UIKit import GoogleMobileAds /// Custom native ad view class with format ID 10063170. class MySimpleNativeAdView: UIView { /// Weak references to this ad's asset views. @IBOutlet weak var headlineView: UILabel! @IBOutlet weak var mainImageView: UIImageView! @IBOutlet weak var captionView: UILabel! ... /// Populates the ad view with the custom native ad object. func populateWithCustomNativeAd(_ customNativeAd: GADCustomNativeAd) { ... } }
Objective-C
@import UIKit; @import GoogleMobileAds; /// View representing a custom native ad format with format ID 10063170. @interface MySimpleNativeAdView : UIView // Weak references to this ad's asset views. @property(weak, nonatomic) IBOutlet UILabel *headlineView; @property(weak, nonatomic) IBOutlet UIImageView *mainImageView; @property(weak, nonatomic) IBOutlet UILabel *captionView; /// Populates the ad view with the custom native ad object. - (void)populateWithCustomNativeAd:(GADCustomNativeAd *)customNativeAd; @end
My SimpleNativeAdView.m (fragment)
Swift
... func populateWithCustomNativeAd(_ customNativeAd: GADCustomNativeAd) { self.customNativeAd = customNativeAd // Populate the custom native ad assets. headlineView.text = self.customNativeAd.stringForKey("Headline") mainImageView.image = self.customNativeAd.imageForKey("MainImage")?.image captionView.text = self.customNativeAd.stringForKey("Caption") } ...
Objective-C
... - (void)populateWithCustomNativeAd:(GADCustomNativeAd *)customNativeAd { self.customNativeAd = customNativeAd; // Populate the custom native ad assets. self.headlineView.text = [customNativeAd stringForKey:@"Headline"]; self.mainImageView.image = [customNativeAd imageForKey:@"MainImage"].image; self.captionView.text = [customNativeAd stringForKey:@"Caption"]; } ...
Natywne reklamy wideo do niestandardowych formatów reklam natywnych
Podczas tworzenia formatu niestandardowego możesz dodać go do filmów.
W implementacji aplikacji możesz użyć właściwości GADCustomNativeAd.mediaView
, aby uzyskać widok filmu. Następnie dodaj ten widok do
hierarchii widoków. Jeśli reklama nie zawiera treści wideo, zaplanuj alternatywne
wyświetlanie reklamy bez filmu.
W podanym niżej przykładzie sprawdzamy, czy reklama zawiera treści wideo, i jeśli reklama wideo jest niedostępna, wyświetla się w jej miejscu obraz:
Swift
... /// Populates the ad view with the custom native ad object. func populate(withCustomNativeAd customNativeAd: GADCustomNativeAd) { if customNativeAd.videoController.hasVideoContent(), let mediaView = customNativeAd.mediaView { updateMainView(mediaView) } else { // Assumes your native format has an image asset with the name MainImage. let image: UIImage? = customNativeAd.image(forKey: "MainImage")?.image updateMainView(UIImageView(image: image)) } } private func updateMainView(_ mainView:UIView) { // Assumes you have a placeholder view for your media content. // Remove all the placeholder's subviews. for subview: UIView in mainPlaceholder.subviews { subview.removeFromSuperview() } mainPlaceholder.addSubview(mainView) // Size the media view to fill our container size. mainView.translatesAutoresizingMaskIntoConstraints = false let viewDictionary: [AnyHashable: Any] = ["mainView":mainView] mainPlaceholder.addConstraints(NSLayoutConstraint.constraints( withVisualFormat: "H:|[mainView]|", options: [], metrics: nil, views: viewDictionary as? [String : Any] ?? [String : Any]())) mainPlaceholder.addConstraints(NSLayoutConstraint.constraints( withVisualFormat: "V:|[mainView]|", options: [], metrics: nil, views: viewDictionary as? [String : Any] ?? [String : Any]())) } ...
Objective-C
... - (void)populateWithCustomNativeAd:(GADCustomNativeAd *)ad { UIView *mainView = nil; if (ad.videoController.hasVideoContent) { mainView = ad.mediaView; } else { // Assumes your native format has an image asset with the name MainImage. UIImage *image = [ad imageForKey:@"MainImage"].image; mainView = [[UIImageView alloc] initWithImage:image]; } // Assumes you have a placeholder view for your media content. for (UIView *subview in self.mainPlaceholder.subviews) { [subview removeFromSuperview]; } [self.mainPlaceholder addSubview:mainView]; // Size the main view to fill our container size. [mainView setTranslatesAutoresizingMaskIntoConstraints:NO]; NSDictionary *viewDictionary = NSDictionaryOfVariableBindings(mainView); [self.mainPlaceholder addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[mainView]|" options:0 metrics:nil views:viewDictionary]]; [self.mainPlaceholder addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[mainView]|" options:0 metrics:nil views:viewDictionary]]; } ...
Więcej informacji o sposobie dostosowywania sposobu wyświetlania reklam wideo w niestandardowej reklamie natywnej znajdziesz w artykule GADVideoController.
Pobierz przykład renderowania niestandardowego w usłudze Ad Manager, aby zobaczyć przykład działania natywnej reklamy wideo w praktyce.
Obsługa niestandardowych kliknięć i wyświetleń reklam natywnych
W przypadku niestandardowych formatów reklam natywnych aplikacja odpowiada za rejestrowanie wyświetleń i raportowanie zdarzeń kliknięć do pakietu SDK.
Rejestrowanie wyświetleń
Aby zarejestrować wyświetlenie niestandardowej reklamy natywnej, wywołaj po prostu metodę recordImpression
w odpowiednim elemencie GADCustomNativeAd
:
Swift
myCustomNativeAd.recordImpression()
Objective-C
[myCustomNativeAd recordImpression];
SDK zapobiega rejestrowaniu zduplikowanych wyświetleń w przypadku pojedynczego żądania. Jeśli aplikacja przypadkowo wywoła tę metodę wiele razy w przypadku tej samej reklamy.
Raportowanie kliknięć
Aby zgłosić do pakietu SDK, że wystąpiło kliknięcie w widoku zasobów, wywołaj metodę performClickOnAssetWithKey:
w odpowiednim elemencie GADCustomNativeAd
i przekaż nazwę klikniętego zasobu.
Jeśli np. masz zasób w formacie niestandardowym o nazwie „Obraz główny”
i chcesz zgłosić kliknięcie widoku powiązanego z tym zasobem, kod będzie wyglądać tak:
Swift
myCustomNativeAd.performClickOnAsset(withKey: "MainImage")
Objective-C
[myCustomNativeAd performClickOnAssetWithKey:@"MainImage"];
Pamiętaj, że nie musisz wywoływać tej metody w przypadku każdego widoku komponentów powiązanego z Twoją reklamą. Jeśli masz na przykład inny zasób o nazwie „Napisy”, który miał zostać wyświetlony, ale nie został kliknięty ani kliknięty przez użytkownika, aplikacja nie musi wywoływać funkcji performClickOnAssetWithKey:
dla tego wyświetlenia.
Reagowanie na niestandardowe działania dotyczące kliknięć
GADCustomNativeAd
ma właściwość customClickHandler
typu GADNativeAdCustomClickHandler
Swift
typealias GADNativeAdCustomClickHandler = (assetID: String) -> Void
Objective-C
typedef void (^GADNativeAdCustomClickHandler)(NSString *assetID);
Jest to blok (Objective-C) / zamknięcie (Swift), który akceptuje assetID
jako parametr wejściowy, który identyfikuje kliknięty zasób.
Po kliknięciu niestandardowej reklamy natywnej pakiet SDK może odpowiedzieć na 3 sposoby w tej kolejności:
- Wywołaj blok
customClickHandler
w języku Objective-C lub zamknięcie w Swift, jeśli został ustawiony. - Przejrzyj adresy URL precyzyjnych linków w reklamie i otwórz pierwszy z nich, który pasuje do aplikacji.
- Otwórz przeglądarkę i przejdź do tradycyjnego docelowego adresu URL reklamy.
Właściwość customClickHandler
akceptuje blokadę w języku Objective-C i zamknięcie w Swift. Jeśli ustawisz blokadę lub zamknięcie, pakiet SDK uruchomi ją i nie będzie podejmować żadnych dalszych działań. Jeśli jednak ustawisz wartość zerową, pakiet SDK użyje precyzyjnego linku lub docelowych adresów URL zarejestrowanych w reklamie.
Dzięki niestandardowym modułom obsługi kliknięć aplikacja może samodzielnie zdecydować, jakie działanie najlepiej podjąć w odpowiedzi na kliknięcie – może to być aktualizacja interfejsu, prezentacja innego kontrolera widoku danych, czy tylko zarejestrowanie kliknięcia. Oto przykład, który pokazuje taki alert:
Swift
myCustomNativeAd.customClickHandler = { assetID in if assetID == "MainImage" { let alertView = UIAlertView(title: "Custom Click", message: "You just clicked on the image!", delegate: self, cancelButtonTitle: "OK") alertView.alertViewStyle = .default alertView.show() } } myCustomNativeAd.performClickOnAsset(withKey: "MainImage")
Objective-C
[self.customNativeAd setCustomClickHandler:^(NSString *assetID){ if ([assetID isEqualToString:@"MainImage"]) { [[[UIAlertView alloc] initWithTitle:@"Custom Click" message:@"You just clicked on the image!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } }]; [self.customNativeAd performClickOnAssetWithKey:@"MainImage"];
Testowanie kodu reklamy natywnej
Reklamy sprzedawane bezpośrednio
Jeśli chcesz sprawdzić, jak działają reklamy natywne sprzedawane bezpośrednio, możesz użyć tego Ad Manager identyfikatora jednostki reklamowej:
/6499/example/native
Jest skonfigurowana tak, aby wyświetlać przykładowe reklamy promujące instalacje aplikacji i reklamy z treścią, a także niestandardowy format reklamy natywnej z tymi zasobami:
- Nagłówek (text)
- MainImage (obraz)
- Podpis (tekst)
Natywne reklamy zapasowe
Aby przetestować działanie natywnych reklam zapasowych, użyj tej jednostki reklamowejAd Manager :
/6499/example/native-backfill
Wyświetla przykładowe reklamy promujące instalacje aplikacji i reklamy z treścią zawierające nakładkę Informacja.
Pamiętaj, aby przed publikacją zaktualizować kod, tak aby odwołuje się do rzeczywistych identyfikatorów jednostek reklamowych i formatu.