تبلیغات بومی

تبلیغات بومی، دارایی‌های تبلیغاتی هستند که از طریق اجزای رابط کاربری بومی پلتفرم به کاربران ارائه می‌شوند. آن‌ها با استفاده از همان کلاس‌هایی که قبلاً در استوری‌بوردهای خود استفاده می‌کنید، نمایش داده می‌شوند و می‌توانند برای مطابقت با طراحی بصری برنامه شما قالب‌بندی شوند.

وقتی یک تبلیغ بومی بارگذاری می‌شود، برنامه شما یک شیء تبلیغ دریافت می‌کند که شامل دارایی‌های آن است و برنامه - به جای SDK تبلیغات موبایلی گوگل - مسئول نمایش آنها است.

به طور کلی، دو بخش برای اجرای موفقیت‌آمیز تبلیغات بومی وجود دارد: بارگذاری یک تبلیغ با استفاده از SDK و سپس نمایش محتوای تبلیغ در برنامه شما.

این صفحه نحوه استفاده از SDK برای بارگذاری تبلیغات بومی را نشان می‌دهد.

پیش‌نیازها

همیشه با تبلیغات آزمایشی تست کنید

هنگام ساخت و آزمایش برنامه‌های خود، مطمئن شوید که از تبلیغات آزمایشی به جای تبلیغات زنده و تولیدی استفاده می‌کنید.

ساده‌ترین راه برای بارگذاری تبلیغات آزمایشی، استفاده از شناسه واحد تبلیغاتی آزمایشی اختصاصی ما برای تبلیغات بومی در iOS است:

/21775744923/example/native

این ابزار به طور ویژه برای برگرداندن تبلیغات آزمایشی برای هر درخواست پیکربندی شده است و می‌توانید از آن در برنامه‌های خود هنگام کدنویسی، آزمایش و اشکال‌زدایی استفاده کنید. فقط قبل از انتشار برنامه، مطمئن شوید که آن را با شناسه واحد تبلیغاتی خود جایگزین می‌کنید.

برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK تبلیغات موبایلی گوگل، به تبلیغات آزمایشی مراجعه کنید.

بارگذاری تبلیغات

تبلیغات بومی با کلاس GADAdLoader بارگذاری می‌شوند که طبق پروتکل GADAdLoaderDelegate پیام‌هایی را به نمایندگان خود ارسال می‌کند.

علاوه بر قالب بومی تعریف‌شده توسط سیستم، می‌توانید قالب‌های تبلیغاتی بومی سفارشی خود را نیز ایجاد کنید که می‌توانند برای تبلیغات بومی با فروش مستقیم استفاده شوند. قالب‌های تبلیغاتی بومی سفارشی به شما امکان می‌دهند داده‌های ساختاریافته دلخواه را به برنامه خود منتقل کنید. این تبلیغات توسط کلاس GADCustomNativeAd نمایش داده می‌شوند.

مقداردهی اولیه‌ی بارگذاری‌کننده‌ی تبلیغات

قبل از اینکه بتوانید یک تبلیغ را بارگذاری کنید، باید بارگذاری‌کننده‌ی تبلیغ را مقداردهی اولیه کنید. کد زیر نحوه‌ی مقداردهی اولیه‌ی یک GADAdLoader را نشان می‌دهد:

سویفت

adLoader = AdLoader(adUnitID: "/21775744923/example/native",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

هدف-سی

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"/21775744923/example/native"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

شما به یک شناسه واحد تبلیغ (می‌توانید از شناسه آزمایشی استفاده کنید)، ثابت‌هایی برای ارسال در آرایه adTypes جهت مشخص کردن فرمت‌های بومی که می‌خواهید درخواست کنید، و هر گزینه‌ای که می‌خواهید در پارامتر options تنظیم کنید، نیاز دارید. لیست مقادیر ممکن برای پارامتر options را می‌توانید در صفحه «تنظیمات گزینه‌های بومی تبلیغ» بیابید.

آرایه adTypes باید شامل یک یا چند ثابت زیر باشد:

پیاده‌سازی نماینده‌ی بارگذاری تبلیغات

نماینده‌ی بارگذاری تبلیغات باید پروتکل‌های مخصوص نوع تبلیغ شما را پیاده‌سازی کند. برای تبلیغات بومی، پروتکل GADNativeAdLoaderDelegate شامل پیامی است که هنگام بارگذاری یک تبلیغ بومی به نماینده ارسال می‌شود.

سویفت

public func adLoader(_ adLoader: AdLoader,
            didReceive nativeAd: NativeAd)

هدف-سی

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

پروتکل GADCustomNativeAdLoaderDelegate شامل پیامی است که هنگام بارگذاری یک تبلیغ قالب سفارشی به نماینده ارسال می‌شود.

سویفت

func adLoader(_ adLoader: AdLoader,
  Receive customNativeAd: CustomNativeAd)

هدف-سی

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveCustomNativeAd:(GADCustomNativeAd *) customNativeAd;

درخواست تبلیغات

پس از مقداردهی اولیه GADAdLoader ، متد loadRequest: آن را برای درخواست یک تبلیغ فراخوانی کنید:

سویفت

adLoader.load(AdManagerRequest())

هدف-سی

[self.adLoader loadRequest:[GAMRequest request]];

متد loadRequest: در GADAdLoader همان اشیاء GAMRequest را به عنوان بنرها و تبلیغات بینابینی می‌پذیرد. می‌توانید از اشیاء request برای افزودن اطلاعات هدف‌گیری استفاده کنید، درست مانند سایر انواع تبلیغات.

بارگذاری چندین تبلیغ (اختیاری)

برای بارگذاری چندین تبلیغ در یک درخواست واحد، هنگام مقداردهی اولیه GADAdLoader شیء GADMultipleAdsAdLoaderOptions را تنظیم کنید.

سویفت

let multipleAdOptions = MultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = AdLoader(adUnitID: "/21775744923/example/native",
    // The UIViewController parameter is optional.
    rootViewController: self,
    adTypes: [ .native ],
    options: [ multipleAdOptions ])

هدف-سی

GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
    [[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"/21775744923/example/native"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ multipleAdsOptions ]];

تعداد تبلیغات در هر درخواست به پنج عدد محدود شده است و تضمینی وجود ندارد که SDK تعداد دقیق تبلیغات درخواستی را برگرداند.

تبلیغات گوگل برگشتی همگی با یکدیگر متفاوت خواهند بود، اگرچه تضمینی وجود ندارد که تبلیغات از موجودی رزرو شده یا خریداران شخص ثالث منحصر به فرد باشند.

اگر از میانجیگری استفاده می‌کنید، از کلاس GADMultipleAdsAdLoaderOptions استفاده نکنید، زیرا درخواست‌های مربوط به چندین تبلیغ بومی برای شناسه‌های واحد تبلیغاتی که برای میانجیگری پیکربندی شده‌اند، کار نمی‌کنند.

تعیین زمان اتمام بارگیری

پس از اینکه یک برنامه تابع loadRequest: را فراخوانی می‌کند، می‌تواند نتایج درخواست را با استفاده از فراخوانی‌های زیر دریافت کند:

درخواست یک تبلیغ واحد منجر به یک تماس با یکی از این روش‌ها خواهد شد.

درخواست چندین تبلیغ منجر به حداقل یک فراخوانی مجدد به روش‌های فوق خواهد شد، اما نه بیشتر از حداکثر تعداد تبلیغات درخواستی.

علاوه بر این، GADAdLoaderDelegate تابع فراخوانی adLoaderDidFinishLoading را ارائه می‌دهد. این متد delegate نشان می‌دهد که یک ad loader بارگذاری تبلیغات را به پایان رسانده و هیچ تبلیغ یا خطای دیگری برای درخواست گزارش نخواهد شد. در اینجا مثالی از نحوه استفاده از آن هنگام بارگذاری چندین تبلیغ native به طور همزمان آورده شده است:

سویفت

class ViewController: UIViewController, NativeAdLoaderDelegate {

  var adLoader: GADAdLoader!

  override func viewDidLoad() {
    super.viewDidLoad()

    let multipleAdOptions = MultipleAdsAdLoaderOptions()
    multipleAdOptions.numberOfAds = 5;
    adLoader = AdLoader(adUnitID: "/21775744923/example/native",
        // 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.
  }

}

هدف-سی

@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:@"/21775744923/example/native"
      // 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

رسیدگی به درخواست‌های ناموفق

پروتکل‌های فوق، پروتکل GADAdLoaderDelegate را بسط می‌دهند که پیامی را تعریف می‌کند که هنگام عدم بارگذاری تبلیغات ارسال می‌شود.

سویفت

public func adLoader(_ adLoader: AdLoader,
    didFailToReceiveAdWithError error: NSError)

هدف-سی

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

از رویدادهای تبلیغات بومی مطلع شوید

برای اطلاع از رویدادهای مربوط به تعاملات تبلیغات بومی، ویژگی delegate مربوط به تبلیغ بومی را تنظیم کنید:

سویفت

nativeAd.delegate = self

هدف-سی

nativeAd.delegate = self;

سپس GADNativeAdDelegate برای دریافت فراخوانی‌های delegate زیر پیاده‌سازی کنید:

سویفت

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.
}

هدف-سی

- (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.
}

بهترین شیوه‌ها

هنگام بارگذاری تبلیغات، این قوانین را رعایت کنید.

  • برنامه‌هایی که از تبلیغات بومی در یک لیست استفاده می‌کنند، باید لیست تبلیغات را از قبل در حافظه پنهان (cache) ذخیره کنند.

  • هنگام پیش‌ذخیره‌سازی تبلیغات، حافظه پنهان (cache) خود را پاک کنید و پس از یک ساعت دوباره بارگذاری کنید.

  • تابع loadRequest: را دوباره روی یک GADAdLoader فراخوانی نکنید تا زمانی که بارگذاری درخواست قبلی به پایان برسد، همانطور که در adLoaderDidFinishLoading: نشان داده شده است.

  • ذخیره تبلیغات بومی را فقط به موارد مورد نیاز محدود کنید. برای مثال، هنگام پیش‌ذخیره‌سازی، فقط تبلیغاتی را که بلافاصله روی صفحه نمایش قابل مشاهده هستند، ذخیره کنید. تبلیغات بومی فضای زیادی از حافظه را اشغال می‌کنند و ذخیره تبلیغات بومی بدون از بین بردن آنها منجر به استفاده بیش از حد از حافظه می‌شود.

  • وقتی دیگر از تبلیغات بومی استفاده نمی‌کنید، آنها را از بین ببرید.

تبلیغ خود را نمایش دهید

پس از بارگذاری یک تبلیغ، تنها کاری که باقی می‌ماند نمایش آن به کاربران است. برای آشنایی با نحوه‌ی نمایش آن، به راهنمای پیشرفته‌ی بومی ما مراجعه کنید.