Sistem tanımlı bir yerel reklam biçimi görüntüleme
Yerel bir reklam yüklendiğinde, uygulamanız GADAdLoaderDelegate
protokol mesajlarından biri aracılığıyla yerel bir reklam nesnesi alır. Uygulamanız bu durumda reklamı görüntülemekten sorumludur (ancak bunu hemen yapması gerekmez). Sistem tanımlı reklam biçimlerinin görüntülenmesini kolaylaştırmak için SDK, bazı yararlı kaynaklar sunar.
GADNatifReklam Görünümü
GADNativeAd
için karşılık gelen bir "reklam görünümü" sınıfı vardır: GADNativeAdView
. Bu reklam görüntüleme sınıfı, yayıncıların reklamı görüntülemek için kullanması gereken bir UIView
. Örneğin, tek bir GADNativeAdView
, tek bir GADNativeAd
örneğini görüntüleyebilir. Bu reklamın varlıklarını görüntülemek için kullanılan UIView
nesnelerinin her biri, o GADNativeAdView
nesnesinin alt görünümleri olmalıdır.
Örneğin, bir UITableView
bir reklam gösteriyorsanız, hücrelerden birinin görünüm hiyerarşisi şöyle görünebilir:
GADNativeAdView
sınıfı ayrıca her bir bağımsız varlık için kullanılan görünümü kaydetmek için kullanılan IBOutlets
ve GADNativeAd
nesnesinin kendisini kaydetmek için bir yöntem sağlar. Görünümlerin bu şekilde kaydedilmesi, SDK'nın aşağıdakiler gibi görevleri otomatik olarak işlemesine olanak tanır:
- Tıklamaları kaydetme.
- Gösterimleri kaydetme (ilk piksel ekranda göründüğünde).
- Reklam Seçenekleri yer paylaşımını görüntüleme.
Reklam Seçenekleri yer paylaşımı
Dolaylı yerel reklamlar için ( AdMobdolgu yoluyla veya Ad Exchange veya AdSense aracılığıyla sunulur), SDK tarafından bir AdChoices yer paylaşımı eklenir. Lütfen otomatik olarak eklenen Reklam Seçenekleri logosu için yerel reklam görünümünüzün tercih ettiğiniz köşesinde boşluk bırakın. Ayrıca, Reklam Seçenekleri yer paylaşımının, simgenin kolayca görülebilmesini sağlayan içeriğe yerleştirildiğinden emin olun. Yer paylaşımının görünümü ve işlevi hakkında daha fazla bilgi için programatik yerel reklam uygulama yönergelerine bakın.
reklam ilişkilendirme
Programatik yerel reklamları görüntülerken, görünümün bir reklam olduğunu belirtmek için bir reklam ilişkilendirmesi göstermelisiniz.
Kod örneği
Şimdi, xib dosyalarından dinamik olarak yüklenen görünümleri kullanarak yerel reklamların nasıl görüntüleneceğine bir göz atalım. Bu, birden çok biçim istemek üzere yapılandırılmış GADAdLoaders
kullanırken çok yararlı bir yaklaşım olabilir.
UIView'ları Yerleştirme
İlk adım, yerel reklam varlıklarını görüntüleyecek UIViews
düzenlemektir. Bunu, başka bir xib dosyası oluştururken yaptığınız gibi Arayüz Oluşturucu'da yapabilirsiniz. Yerel bir reklamın düzeni şu şekilde görünebilir:
Resmin sağ üst köşesindeki Özel Sınıf değerini not edin. olarak ayarlandı
GADNativeAdView
. Bu, bir GADNativeAd
görüntülemek için kullanılan reklam görüntüleme sınıfıdır.
Ayrıca, reklam için videoyu veya resmi görüntülemek için kullanılan GADMediaView
için özel sınıf ayarlamanız gerekir.
Çıkışları görünümlere bağlama
Görünümler yerleştirildikten ve düzene doğru reklam görünümü sınıfını atadıktan sonra, reklam görünümünün varlık çıkışlarını oluşturduğunuz UIViews
. Reklam görünümünün varlık çıkışlarını bir reklam için oluşturulan UIViews
şu şekilde bağlayabilirsiniz:
Çıkış panelinde, UIViews
GADNativeAdView
. Bu, SDK'nın hangi UIView
hangi varlığı görüntülediğini bilmesini sağlar. Bu satış noktalarının reklamda tıklanabilir görünümleri temsil ettiğini de unutmamak önemlidir.
Reklamın görüntülenmesi
Düzen tamamlandıktan ve çıkışlar bağlandıktan sonra, son adım, yüklendikten sonra bir reklam görüntüleyen uygulamanıza kod eklemektir. Bir reklamı yukarıda tanımlanan görünümde görüntülemek için bir yöntem:
Süratli
// Mark: - GADNativeAdLoaderDelegate func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADNativeAd) { print("Received native ad: \(nativeAd)") refreshAdButton.isEnabled = true // Create and place ad in view hierarchy. let nibView = Bundle.main.loadNibNamed("NativeAdView", owner: nil, options: nil)?.first guard let nativeAdView = nibView as? GADNativeAdView else { return } setAdView(nativeAdView) // Set ourselves as the native ad delegate to be notified of native ad events. nativeAd.delegate = self // Populate the native ad view with the native ad assets. // The headline and mediaContent are guaranteed to be present in every native ad. (nativeAdView.headlineView as? UILabel)?.text = nativeAd.headline nativeAdView.mediaView?.mediaContent = nativeAd.mediaContent // This app uses a fixed width for the GADMediaView and changes its height to match the aspect // ratio of the media it displays. if let mediaView = nativeAdView.mediaView, nativeAd.mediaContent.aspectRatio > 0 { let heightConstraint = NSLayoutConstraint( item: mediaView, attribute: .height, relatedBy: .equal, toItem: mediaView, attribute: .width, multiplier: CGFloat(1 / nativeAd.mediaContent.aspectRatio), constant: 0) heightConstraint.isActive = true } // These assets are not guaranteed to be present. Check that they are before // showing or hiding them. (nativeAdView.bodyView as? UILabel)?.text = nativeAd.body nativeAdView.bodyView?.isHidden = nativeAd.body == nil (nativeAdView.callToActionView as? UIButton)?.setTitle(nativeAd.callToAction, for: .normal) nativeAdView.callToActionView?.isHidden = nativeAd.callToAction == nil (nativeAdView.iconView as? UIImageView)?.image = nativeAd.icon?.image nativeAdView.iconView?.isHidden = nativeAd.icon == nil (nativeAdView.starRatingView as? UIImageView)?.image = imageOfStars( fromStarRating: nativeAd.starRating) nativeAdView.starRatingView?.isHidden = nativeAd.starRating == nil (nativeAdView.storeView as? UILabel)?.text = nativeAd.store nativeAdView.storeView?.isHidden = nativeAd.store == nil (nativeAdView.priceView as? UILabel)?.text = nativeAd.price nativeAdView.priceView?.isHidden = nativeAd.price == nil (nativeAdView.advertiserView as? UILabel)?.text = nativeAd.advertiser nativeAdView.advertiserView?.isHidden = nativeAd.advertiser == nil // In order for the SDK to process touch events properly, user interaction should be disabled. nativeAdView.callToActionView?.isUserInteractionEnabled = false // Associate the native ad view with the native ad object. This is // required to make the ad clickable. // Note: this should always be done after populating the ad views. nativeAdView.nativeAd = nativeAd }
Amaç-C
#pragma mark GADNativeAdLoaderDelegate implementation - (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeAd:(GADNativeAd *)nativeAd { NSLog(@"Received native ad: %@", nativeAd); self.refreshButton.enabled = YES; // Create and place ad in view hierarchy. GADNativeAdView *nativeAdView = [[NSBundle mainBundle] loadNibNamed:@"NativeAdView" owner:nil options:nil].firstObject; [self setAdView:nativeAdView]; // Set the mediaContent on the GADMediaView to populate it with available // video/image asset. nativeAdView.mediaView.mediaContent = nativeAd.mediaContent; // Populate the native ad view with the native ad assets. // The headline is guaranteed to be present in every native ad. ((UILabel *)nativeAdView.headlineView).text = nativeAd.headline; // These assets are not guaranteed to be present. Check that they are before // showing or hiding them. ((UILabel *)nativeAdView.bodyView).text = nativeAd.body; nativeAdView.bodyView.hidden = nativeAd.body ? NO : YES; [((UIButton *)nativeAdView.callToActionView)setTitle:nativeAd.callToAction forState:UIControlStateNormal]; nativeAdView.callToActionView.hidden = nativeAd.callToAction ? NO : YES; ((UIImageView *)nativeAdView.iconView).image = nativeAd.icon.image; nativeAdView.iconView.hidden = nativeAd.icon ? NO : YES; ((UIImageView *)nativeAdView.starRatingView).image = [self imageForStars:nativeAd.starRating]; nativeAdView.starRatingView.hidden = nativeAd.starRating ? NO : YES; ((UILabel *)nativeAdView.storeView).text = nativeAd.store; nativeAdView.storeView.hidden = nativeAd.store ? NO : YES; ((UILabel *)nativeAdView.priceView).text = nativeAd.price; nativeAdView.priceView.hidden = nativeAd.price ? NO : YES; ((UILabel *)nativeAdView.advertiserView).text = nativeAd.advertiser; nativeAdView.advertiserView.hidden = nativeAd.advertiser ? NO : YES; // In order for the SDK to process touch events properly, user interaction // should be disabled. nativeAdView.callToActionView.userInteractionEnabled = NO; // Associate the native ad view with the native ad object. This is // required to make the ad clickable. nativeAdView.nativeAd = nativeAd; }
GitHub depomuz, hem Swift hem de Objective-C ile yazılmışYerel Gelişmiş reklamlar için eksiksiz uygulamalara sahiptir.
Yerel Gelişmiş Örneği İndirinGADMediaView
Görüntü ve video varlıkları, kullanıcılara GADMediaView
aracılığıyla gösterilir. Bu, bir xib dosyasında tanımlanabilen veya dinamik olarak oluşturulabilen bir UIView
. Diğer varlık görünümlerinde olduğu gibi, bir GADNativeAdView
görünüm hiyerarşisi içine yerleştirilmelidir.
Tüm varlık görünümlerinde olduğu gibi, medya görünümünün içeriğinin doldurulması gerekir. Bu, GADMediaView üzerindeki mediaContent
özelliği kullanılarak GADMediaView
. mediaContent
özelliği, bir GADNativeAd
GADMediaView
medya içeriği içerir.
İşte,Yerel Gelişmiş örneğinden ( Swift | Objective-C ), GADNativeAd
GADMediaContent
GADMediaView
reklam varlıklarıyla nasıl doldurulacağını gösterir. :
Süratli
nativeAdView.mediaView?.mediaContent = nativeAd.mediaContent
Amaç-C
nativeAdView.mediaView.mediaContent = nativeAd.mediaContent;
Yerel reklam görünümünüz için arayüz oluşturucu dosyanızda, görünümler özel sınıfının GADMediaView
olarak ayarlandığından ve bunu mediaView
çıkışına bağladığınızdan emin olun.
Görüntü İçeriği Modunu Değiştirme
GADMediaView
sınıfı, görüntüleri görüntülerken UIView
contentMode
özelliğine uyar. GADMediaView
bir görüntünün nasıl ölçeklendirileceğini değiştirmek istiyorsanız, bunu başarmak için GADMediaView
contentMode
karşılık gelen UIViewContentMode
ayarlayın.
Örneğin, bir resim görüntülendiğinde (reklamda video yokken) GADMediaView
doldurmak için:
Süratli
nativeAdView.mediaView?.contentMode = .aspectFill
Amaç-C
nativeAdView.mediaView.contentMode = UIViewContentModeAspectFill;
GADMedya İçeriği
GADMediaContent
sınıfı, GADMediaView
sınıfı kullanılarak görüntülenen yerel reklamın medya içeriğiyle ilgili verileri tutar. GADMediaView
mediaContent
özelliğinde ayarlandığında:
Bir video varlığı varsa, arabelleğe alınır ve
GADMediaView
içinde oynatılmaya başlar.hasVideoContent
kontrol ederek bir video öğesinin kullanılabilir olup olmadığını anlayabilirsiniz.Reklam bir video öğesi içermiyorsa
mainImage
öğesi indirilir ve bunun yerineGADMediaView
içine yerleştirilir.