Özel reklam biçimleri
Özel yerel reklam biçimleri, sistem tanımlı eşdeğerleri gibi GADAdLoader
nesneleri kullanılarak yüklenir. GADAdLoader
başlatılırken adTypes
dizisine GADAdLoaderAdTypeCustomNative
sabiti eklendiğinde, reklam yüklenirken özel yerel biçimler isteyecek şekilde yapılandırılır.
GADCustomNativeAdLoaderDelegate
Özel biçimleri yükleme protokolünün iki yöntemi vardır. Birincisi, GADAdLoader
tarafından hangi biçim kimliklerini istemesi gerektiğini bulmak için kullanılır:
Swift
public func customNativeAdFormatIDs(for adLoader: GADAdLoader) -> [Any]
Objective-C
- (NSArray *)customNativeAdFormatIDsForAdLoader:(GADAdLoader *)adLoader;
Her özel yerel reklam biçiminin, reklam biçimini tanımlayan bir biçim kimliği vardır. Bu yöntem çağrıldığında, uygulamanız görüntülemeye hazır olduğu reklamların biçim kimliklerini içeren bir dizi döndürmelidir.
İkinci mesaj, sistem tanımlı biçimlere benzer şekilde, özel yerel reklam yüklendiğinde gönderilir:
Swift
public func adLoader(_ adLoader: GADAdLoader, didReceive customNativeAd: GADCustomNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveCustomNativeAd:(GADCustomNativeAd *)customNativeAd;
Biçim Kimlikleri
Özel yerel reklam biçimlerini benzersiz bir şekilde işaret etmek için kullanılan biçim kimlikleri, Ad Manager kullanıcı arayüzünde Yayınlama açılır listesindeki Yerel bölümünde bulunabilir:
Her özel yerel reklamın biçim kimliği, adının yanında görünür. Adlardan birini tıkladığınızda, biçimin alanlarıyla ilgili bilgilerin gösterildiği bir ayrıntılar ekranına yönlendirilirsiniz:
Buradan bağımsız alanlar ekleyebilir, düzenleyebilir ve kaldırabilirsiniz. Her bir öğenin adını not edin. Ad, özel yerel reklam biçiminizi görüntülerken her bir öğenin verilerini almak için kullanılan anahtardır.
Özel yerel reklam biçimlerini gösterme
Özel yerel reklam biçimleri, yayıncıların bir reklamı oluşturan kendi öğe listesini tanımlama gücüne sahip olması açısından sistem tanımlı reklam biçimlerinden farklıdır. Bu nedenle, özel yerel reklamları görüntüleme süreci, sistem tanımlı biçimlere kıyasla birkaç açıdan farklıdır:
GADCustomNativeAd
, oluşturduğunuz özel yerel reklam biçimlerinden herhangi birini işleyeceği için adlandırılmış öğe erişimcilerine sahip değildir. Bunun yerine, alanın adını bağımsız değişken olarak alanimageForKey:
vestringForKey:
gibi yöntemler sunar.GADCustomNativeAd
ile kullanılacakGADNativeAdView
gibi özel bir reklam görüntüleme sınıfı yok. Kullanıcı deneyimi için uygun olan görünümleri kullanabilirsiniz.- Özel bir reklam görüntüleme sınıfı olmadığından, reklamın öğelerini görüntülemek için kullandığınız görünümlerin hiçbirini kaydetmeniz gerekmez.
Basit bir özel yerel reklam görüntüleyebilen bir reklam görünümü örneği aşağıda verilmiştir:
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 (alıntı)
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"]; } ...
Özel yerel reklam biçimleri için yerel video
Özel biçim oluştururken bu biçimi video için uygun hale getirme seçeneğiniz vardır.
Uygulama uygulamanızda, videonun görünümünü almak için GADCustomNativeAd.mediaView
özelliğini kullanabilirsiniz. Sonra bu görünümü görünüm hiyerarşinize ekleyin. Reklamın video içeriği yoksa reklamı video olmadan
göstermek için alternatif planlar yapın.
Aşağıdaki örnekte, reklamın video içeriği olup olmadığı kontrol edilir ve video yoksa yerine bir resim gösterilir:
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]]; } ...
Özel bir yerel reklamın video deneyimini nasıl özelleştirebileceğiniz hakkında daha fazla bilgi için GADVideoController bölümüne bakın.
Çalışan bir yerel video örneği için Ad Manager Özel Oluşturma örneğini indirin.
Özel yerel reklam tıklamalarını ve gösterimlerini işleme
Özel yerel reklam biçimlerinde, gösterimleri kaydetmek ve tıklama etkinliklerini SDK'ya raporlamak uygulamanızın sorumluluğundadır.
Gösterimler kaydediliyor
Özel bir yerel reklama ilişkin bir gösterim kaydetmek için karşılık gelen GADCustomNativeAd
öğesinde recordImpression
yöntemini çağırmanız yeterlidir:
Swift
myCustomNativeAd.recordImpression()
Objective-C
[myCustomNativeAd recordImpression];
Uygulamanız, aynı reklam için yöntemi yanlışlıkla birden fazla kez çağırırsa SDK, tek bir istek için yinelenen gösterimlerin kaydedilmesini engeller.
Raporlama tıklamaları
Öğe görünümünde bir tıklamanın gerçekleştiğini SDK'ya bildirmek için karşılık gelen GADCustomNativeAd
öğesinde performClickOnAssetWithKey:
yöntemini çağırın ve tıklanan öğenin adını iletin.
Örneğin, özel biçiminde "Ana Resim" adlı bir öğeniz varsa ve bu öğeye karşılık gelen görünümle ilgili bir tıklamayı bildirmek istiyorsanız kodunuz aşağıdaki gibi görünür:
Swift
myCustomNativeAd.performClickOnAsset(withKey: "MainImage")
Objective-C
[myCustomNativeAd performClickOnAssetWithKey:@"MainImage"];
Reklamınızla ilişkilendirilen her öğe görünümü için bu yöntemi çağırmanız gerekmediğini unutmayın. Örneğin, "Başlık" adlı başka bir öğeniz olması durumunda, bu öğenin kullanıcı tarafından tıklanmaması veya dokunmaması amaçlanıyorsa uygulamanızın bu görüntüleme için performClickOnAssetWithKey:
yöntemini çağırması gerekmez.
Özel tıklama işlemlerine yanıt verme
GADCustomNativeAd
, GADNativeAdCustomClickHandler
türünde customClickHandler
özelliğine sahip
Swift
typealias GADNativeAdCustomClickHandler = (assetID: String) -> Void
Objective-C
typedef void (^GADNativeAdCustomClickHandler)(NSString *assetID);
Tıklanan öğeyi tanımlayan assetID
giriş parametresi olarak kabul edilen bir blok (Objective-C) / kapanış (Swift) yöntemidir.
Özel yerel reklama tıklama yapıldığında SDK'dan verilen üç olası yanıt, sırasıyla denenir:
- Objective-C'de
customClickHandler
blokunu veya Swift'te kapatılmayı (ayarlanmadıysa) çağırın. - Reklamın derin bağlantı URL'lerini döngüye alın ve eşleşen uygulamanın bulunduğu ilk URL'yi açın.
- Bir tarayıcı açın ve reklamın geleneksel Hedef URL'sine gidin.
customClickHandler
mülkü, Objective-C'de bir engelleme ve Swift'te kapatma kabul eder. Bir engelleme veya kapatma ayarlarsanız SDK bunu çalıştırır ve başka bir işlem gerçekleştirmez. Ancak boş değer ayarlarsanız SDK, reklamla kaydedilen derin bağlantıyı ve/veya hedef URL'leri kullanır.
Özel tıklama işleyiciler, uygulamanızın bir tıklamaya yanıt olarak gerçekleştireceği en iyi işlemi (kullanıcı arayüzünü güncellemek, başka bir görünüm denetleyicisi sunmak veya yalnızca tıklamayı günlüğe kaydetmek gibi) kendi başına belirlemesini sağlar. Aşağıda, bir uyarı gösteren bir örnek verilmiştir:
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"];
Yerel reklam kodunu test etme
Doğrudan satılan reklamlar
Doğrudan satılan doğal reklamların ne olduğunu test etmek istiyorsanız şu Ad Manager reklam birimi kimliğinden yararlanabilirsiniz:
/6499/example/native
Örnek uygulama yükleme ve içerik reklamlarının yanı sıra aşağıdaki öğeleri içeren özel bir yerel reklam biçimi sunacak şekilde yapılandırılmıştır:
- Başlık (metin)
- Ana Resim (resim)
- Başlık (metin)
Yerel dolgu reklamlar
Yerel dolgu reklamların davranışını test etmek için şuAd Manager reklam birimini kullanın:
/6499/example/native-backfill
Reklam Seçenekleri yer paylaşımını içeren örnek uygulama yükleme ve içerik reklamları sunar.
Yayınlamadan önce, gerçek reklam birimi ve biçim kimliklerinize referans vermek için kodunuzu güncellemeyi unutmayın!