نمایش یک قالب تبلیغات بومی تعریف شده توسط سیستم
هنگامی که یک تبلیغ بومی بارگیری می شود، برنامه شما یک شی تبلیغاتی بومی را از طریق یکی از پیام های پروتکل GADAdLoaderDelegate
دریافت می کند. سپس برنامه شما مسئول نمایش آگهی است (البته لزوماً نباید فوراً این کار را انجام دهد). برای آسانتر کردن نمایش قالبهای تبلیغاتی تعریفشده توسط سیستم، SDK منابع مفیدی را ارائه میدهد.
GADNativeAdView
برای GADNativeAd
، یک کلاس "ad view" مربوطه وجود دارد: GADNativeAdView
. این کلاس مشاهده آگهی یک UIView
است که ناشران باید از آن برای نمایش آگهی استفاده کنند. برای مثال، یک GADNativeAdView
منفرد، میتواند یک نمونه از یک GADNativeAd
را نمایش دهد. هر یک از اشیاء UIView
که برای نمایش داراییهای آن تبلیغ استفاده میشوند باید زیرنماهای آن شی GADNativeAdView
باشند.
برای مثال، اگر تبلیغی را در UITableView
نمایش میدادید، سلسله مراتب مشاهده یکی از سلولها ممکن است به این صورت باشد:
کلاس GADNativeAdView
همچنین IBOutlets
را برای ثبت نمای مورد استفاده برای هر دارایی جداگانه و روشی برای ثبت خود شی GADNativeAd
ارائه می دهد. ثبت نماها به این روش به SDK اجازه می دهد تا به طور خودکار وظایفی مانند:
- ضبط کلیک ها
- ضبط برداشت ها (زمانی که اولین پیکسل روی صفحه قابل مشاهده است).
- نمایش همپوشانی AdChoices.
همپوشانی AdChoices
برای تبلیغات بومی غیرمستقیم (ارائه شده از طریق Ad Managerbackfill یا از طریق Ad Exchange یا AdSense)، یک پوشش AdChoices توسط SDK اضافه میشود. لطفاً برای نشانواره AdChoices که بهطور خودکار درج میشود، در گوشه دلخواه خود در نمای تبلیغات بومی خود، فضای خالی بگذارید. همچنین، مطمئن شوید که همپوشانی AdChoices روی محتوایی قرار گرفته باشد که به آسانی نماد را مشاهده کنید. برای اطلاعات بیشتر در مورد ظاهر و عملکرد پوشش، دستورالعملهای اجرای تبلیغات بومی برنامهریزی شده را ببینید.
تخصیص آگهی برای تبلیغات بومی برنامهریزیشده
هنگام نمایش تبلیغات بومی برنامهریزی شده، باید یک انتساب آگهی را نمایش دهید تا نشان دهد که این نما یک تبلیغ است.برای دستورالعمل های خط مشی به این صفحه مراجعه کنید.
نمونه کد
بیایید نگاهی به نحوه نمایش تبلیغات بومی با استفاده از نماهایی که به صورت پویا از فایلهای xib بارگذاری میشوند، بیاندازیم. این می تواند یک رویکرد بسیار مفید در هنگام استفاده از GADAdLoaders
پیکربندی شده برای درخواست فرمت های متعدد باشد.
چیدمان UIViws
اولین قدم، چیدمان UIViews
است که دارایی های تبلیغاتی بومی را نمایش می دهد. شما می توانید این کار را در Interface Builder همانطور که هنگام ایجاد هر فایل xib دیگری انجام می دهید، انجام دهید. در اینجا طرح بندی برای یک آگهی بومی ممکن است به نظر برسد:
به مقدار Custom Class در سمت راست بالای تصویر توجه کنید. تنظیم شده است
GADNativeAdView
. این کلاس نمایش آگهی است که برای نمایش یک GADNativeAd
استفاده می شود.
همچنین باید کلاس سفارشی را برای GADMediaView
تنظیم کنید، که برای نمایش ویدیو یا تصویر برای تبلیغ استفاده میشود.
پیوند دادن رسانه ها به بازدیدها
هنگامی که نماها در جای خود قرار گرفتند و کلاس درستی از نمای تبلیغات را به طرح بندی اختصاص دادید، خروجی های دارایی نمای تبلیغات را به UIViews
که ایجاد کرده اید پیوند دهید. در اینجا نحوه پیوند دارایی های نمای آگهی به UIViews
ایجاد شده برای یک آگهی آمده است:
در پانل خروجی، خروجی ها در GADNativeAdView
به UIViews
که در Interface Builder گذاشته شده اند، مرتبط شده اند. این به SDK اجازه میدهد بداند کدام UIView
کدام دارایی را نمایش میدهد. همچنین مهم است به یاد داشته باشید که این رسانه ها نمایانگر نماهایی هستند که در آگهی قابل کلیک هستند.
نمایش آگهی
هنگامی که چیدمان کامل شد و خروجی ها به یکدیگر متصل شدند، آخرین مرحله این است که کدی را به برنامه خود اضافه کنید که یک تبلیغ را پس از بارگیری نمایش می دهد. در اینجا روشی برای نمایش یک تبلیغ در نمای تعریف شده در بالا آمده است:
سریع
// 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 }
هدف-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 ما دارای پیاده سازی کامل برایتبلیغات رندر سفارشی بومی نوشته شده در Swift و Objective-C است.
دانلود Google Ad Manager Custom Rendering Example
GADMediaView
دارایی های تصویر و ویدئو از طریق GADMediaView
به کاربران نمایش داده می شود. این یک UIView
است که می تواند در یک فایل xib تعریف شود یا به صورت پویا ساخته شود. باید مانند هر نمای دارایی دیگر در سلسله مراتب نمای یک GADNativeAdView
قرار گیرد.
مانند همه نماهای دارایی، نمای رسانه باید محتوای آن پر شود. این با استفاده از ویژگی mediaContent
در GADMediaView
تنظیم شده است. ویژگی mediaContent
GADNativeAd
حاوی محتوای رسانه ای است که می تواند به یک GADMediaView
منتقل شود.
در اینجا قطعهای ازمثال رندر سفارشی ( Swift | Objective-C )است که نشان میدهد چگونه GADMediaSetatives را با استفاده از GADMediaView
با استفاده از GADMediaContent
با استفاده از GADNativeAd
پر کنید. :
سریع
nativeAdView.mediaView?.mediaContent = nativeAd.mediaContent
هدف-C
nativeAdView.mediaView.mediaContent = nativeAd.mediaContent;
مطمئن شوید که در فایل سازنده رابط خود برای نمای تبلیغات بومی خود، کلاس سفارشی views را روی GADMediaView
تنظیم کرده اید و آن را به خروجی mediaView
متصل کرده اید.
تغییر حالت محتوای تصویر
کلاس GADMediaView
هنگام نمایش تصاویر به ویژگی UIView
contentMode
احترام می گذارد. اگر میخواهید نحوه اندازهگیری یک تصویر را در GADMediaView
تغییر دهید، UIViewContentMode
مربوطه را روی ویژگی contentMode
GADMediaView
تنظیم کنید تا به این هدف برسید.
به عنوان مثال، برای پر کردن GADMediaView
هنگام نمایش تصویر (تبلیغ بدون ویدیو):
سریع
nativeAdView.mediaView?.contentMode = .aspectFill
هدف-C
nativeAdView.mediaView.contentMode = UIViewContentModeAspectFill;
GADMediaContent
کلاس GADMediaContent
داده های مربوط به محتوای رسانه ای تبلیغات بومی را نگه می دارد که با استفاده از کلاس GADMediaView
نمایش داده می شود. وقتی روی ویژگی GADMediaView
mediaContent
تنظیم شده است:
اگر دارایی ویدیویی در دسترس باشد، بافر می شود و در
GADMediaView
شروع به پخش می کند. با بررسیhasVideoContent
میتوانید متوجه شوید که دارایی ویدیویی در دسترس است.اگر آگهی حاوی دارایی ویدیویی نباشد، دارایی
mainImage
دانلود شده و در داخلGADMediaView
قرار می گیرد.
مراحل بعدی
درباره حریم خصوصی کاربر بیشتر بیاموزید.