پرداز زدن آگهی iPhone X

این راهنما روال‌های مطلوب را درباره نحوه کدنویسی برنامه‌ها برای ارائه صحیح آگهی‌ها در iPhone X نشان می‌دهد.

پیش‌نیازها

آگهی‌های برنمایی باید در «منطقه امن» قرار داده شوند تا گوشه‌های گرد، محفظه حسگر، و نشانگر «صفحه اصلی» آن‌ها را نپوشاند. در این صفحه، نمونه‌هایی از نحوه افزودن محدودیت‌ها برای قرار دادن برنمای آگهی در بالا یا پایین «منطقه ایمن» را خواهید دید. هر دو محدودیت داستان مصور و برنامه‌ریزی‌شده در محیطی که از iOS 9+ و Xcode 9+ پشتیبانی می‌کند نشان داده شده است. راهکارهای دور زدن برای نسخه‌های قدیمی‌تر iOS و Xcode نیز ذکر شده است.

داستان‌نما/رابط‌ساز

اگر برنامه‌تان از «واسط ساز» استفاده می‌کند، ابتدا مطمئن شوید که راهنمای چیدمان «منطقه ایمن» را فعال کرده‌اید. برای انجام این کار باید از Xcode 9+ استفاده کنید و iOS 9+ را هدف‌یابی کنید.

فایل «سازنده میانای» خود را باز کنید و روی صحنه کنترل‌کننده نمای خود کلیک کنید. گزینه‌های سند سازنده میانای کاربری را در سمت چپ خواهید دید. استفاده از راهنمای چیدمان ناحیه ایمن را بررسی کنید و مطمئن شوید که حداقل برای iOS 9.0 و نسخه‌های جدیدتر می‌سازید.

توصیه می‌کنیم بااستفاده از محدودیت‌های عرض و ارتفاع، اندازه برنمای خود را به اندازه موردنیاز محدود کنید.

اکنون می‌توانید برنما را با محدود کردن ویژگی «بالای GAMBannerView» به بالای «منطقه امن» در بالای «منطقه امن» تراز کنید:

به‌همین ترتیب، می‌توانید برنما را با محدود کردن ویژگی «پایین» GAMBannerView به پایین «ناحیه ایمن» در پایین «ناحیه ایمن» تراز کنید:

اکنون محدودیت‌های شما باید شبیه نماگرفت زیر باشد (اندازه/موقعیت می‌تواند متفاوت باشد):

ViewController

در اینجا تکه‌کد کنترل‌کننده نمای ساده‌ای ارائه شده است که حداقل موارد لازم را برای نمایش برنما در GAMBannerView همان‌گونه که در داستان مصور بالا پیکربندی شده است انجام می‌دهد:

Swift

class ViewController: UIViewController {

  /// The banner view.
  @IBOutlet var bannerView: AdManagerBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()
    // Replace this ad unit ID with your own ad unit ID.
    bannerView.adUnitID = "/21775744923/example/adaptive-banner"
    bannerView.rootViewController = self
    bannerView.load(AdManagerRequest())
  }

}

آبجکتیو-سی

@interface ViewController()

@property(nonatomic, strong) IBOutlet GAMBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // Replace this ad unit ID with your own ad unit ID.
  self.bannerView.adUnitID = @"/21775744923/example/adaptive-banner";
  self.bannerView.rootViewController = self;
  GAMRequest *request = [GAMRequest request];
  [self.bannerView loadRequest:request];
}

تراز کردن برنمای‌ها با لبه منطقه امن

اگر می‌خواهید برنمایی با پهنای کامل و تراز چپ یا راست داشته باشید، لبه چپ/راست برنما را به لبه چپ/راست «منطقه امن» محدود کنید و نه به لبه چپ/راست نمای بالادستی.

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

پشتیبانی از iOS 8 و نسخه‌های پایین‌تر

اگر می‌خواهید از iOS 8 یا نسخه‌های پایین‌تر بااستفاده از «سازنده میانای کاربری» پشتیبانی کنید، باید گزینه استفاده از راهنمای چیدمان ناحیه ایمن را برای فایل‌های «سازنده میانای کاربری» و تابلوهای داستان لغو انتخاب کنید.

اکنون می‌توانید محدودیت‌هایی را به پایین راهنمای چیدمان بالا اضافه کنید (به‌جای بالای «منطقه امن»):

همچنین محدودیت‌هایی را به بالای راهنمای چیدمان پایین اضافه کنید (به‌جای پایین ناحیه امن):

برای برنمای تمام‌عرض (فقط تحت‌تأثیر «منطقه امن» در حالت افقی)، این راهنمای چیدمان وجود ندارد. گزینه ایمن در «سازنده میانای کاربری» باعث می‌شود محدودیت‌های لبه چپ و راست شما نسبت‌به حاشیه‌ها باشد:

این کار لبه برنما را کمی از لبه نمای‌بالا/منطقه ایمن دور می‌کند و تضمین می‌کند که برنما در جهت افقی در iPhone X پوشیده نشود. همچنین می‌توانید ازطریق برنامه‌نویسی به نتیجه دلخواهتان برسید.

برنامه‌ریزی‌شده

اگر برنامه‌تان آگهی‌های برنمایی را به‌صورت برنامه‌ریزی‌شده ایجاد می‌کند، می‌توانید محدودیت‌ها را تعریف کنید و آگهی برنمایی را در کد جای دهید. این مثال (برای iOS نسخه ۷.۰ و بالاتر) نشان می‌دهد که چگونه می‌توان برنمایی را محدود کرد تا به‌صورت افقی در پایین «منطقه ایمن» در مرکز قرار گیرد:

Swift

class ViewController: UIViewController {

  var bannerView: AdManagerBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()

    // Instantiate the banner view with your desired banner size.
    bannerView = AdManagerBannerView(adSize: AdSizeBanner)
    addBannerViewToView(bannerView)
    bannerView.rootViewController = self
    // Set the ad unit ID to your own ad unit ID here.
    bannerView.adUnitID = "/21775744923/example/adaptive-banner"
    bannerView.load(AdManagerRequest())
  }

  func addBannerViewToView(_ bannerView: UIView) {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    if #available(iOS 11.0, *) {
      positionBannerAtBottomOfSafeArea(bannerView)
    }
    else {
      positionBannerAtBottomOfView(bannerView)
    }
  }

  @available (iOS 11, *)
  func positionBannerAtBottomOfSafeArea(_ bannerView: UIView) {
    // Position the banner. Stick it to the bottom of the Safe Area.
    // Centered horizontally.
    let guide: UILayoutGuide = view.safeAreaLayoutGuide

    NSLayoutConstraint.activate(
      [bannerView.centerXAnchor.constraint(equalTo: guide.centerXAnchor),
       bannerView.bottomAnchor.constraint(equalTo: guide.bottomAnchor)]
    )
  }

  func positionBannerAtBottomOfView(_ bannerView: UIView) {
    // Center the banner horizontally.
    view.addConstraint(NSLayoutConstraint(item: bannerView,
                                          attribute: .centerX,
                                          relatedBy: .equal,
                                          toItem: view,
                                          attribute: .centerX,
                                          multiplier: 1,
                                          constant: 0))
    // Lock the banner to the top of the bottom layout guide.
    view.addConstraint(NSLayoutConstraint(item: bannerView,
                                          attribute: .bottom,
                                          relatedBy: .equal,
                                          toItem: self.bottomLayoutGuide,
                                          attribute: .top,
                                          multiplier: 1,
                                          constant: 0))
  }

}

آبجکتیو-سی

@interface ViewController()

@property(nonatomic, strong) GAMBannerView *bannerView;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  // Instantiate the banner view with your desired banner size.
  self.bannerView = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeBanner];
  [self addBannerViewToVIew:self.bannerView];

  // Replace this ad unit ID with your own ad unit ID.
  self.bannerView.adUnitID = @"/21775744923/example/adaptive-banner";
  self.bannerView.rootViewController = self;
  GAMRequest *request = [GAMRequest request];
  [self.bannerView loadRequest:request];
}

#pragma mark - view positioning

-(void)addBannerViewToView:(UIView *_Nonnull)bannerView {
  self.bannerView.translatesAutoresizingMaskIntoConstraints = NO;
  [self.view addSubview:self.bannerView];
  if (@available(ios 11.0, *)) {
    [self positionBannerViewAtBottomOfSafeArea:bannerView];
  } else {
    [self positionBannerViewAtBottomOfView:bannerView];
  }
}

- (void)positionBannerViewAtBottomOfSafeArea:(UIView *_Nonnull)bannerView NS_AVAILABLE_IOS(11.0) {
  // Position the banner. Stick it to the bottom of the Safe Area.
  // Centered horizontally.
  UILayoutGuide *guide = self.view.safeAreaLayoutGuide;
  [NSLayoutConstraint activateConstraints:@[
    [bannerView.centerXAnchor constraintEqualToAnchor:guide.centerXAnchor],
    [bannerView.bottomAnchor constraintEqualToAnchor:guide.bottomAnchor]
  ]];
}

- (void)positionBannerViewAtBottomOfView:(UIView *_Nonnull)bannerView {
  [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView
                                                        attribute:NSLayoutAttributeCenterX
                                                        relatedBy:NSLayoutRelationEqual
                                                           toItem:self.view
                                                        attribute:NSLayoutAttributeCenterX
                                                       multiplier:1
                                                         constant:0]];
  [self.view addConstraint:[NSLayoutConstraint constraintWithItem:bannerView
                                                        attribute:NSLayoutAttributeBottom
                                                        relatedBy:NSLayoutRelationEqual
                                                           toItem:self.bottomLayoutGuide
                                                        attribute:NSLayoutAttributeTop
                                                       multiplier:1
                                                         constant:0]];
}

@end

با تغییر دادن ویژگی‌ها و لنگرهای استفاده‌شده، می‌توان به‌راحتی از تکنیک‌های بالا برای محدود کردن به بالای ناحیه امن استفاده کرد.

آگهی‌های بومی

اگر برنامه شما آگهی‌های بومی را در بالا یا پایین صفحه سنجاق می‌کند، همان اصول برای آگهی‌های بومی اعمال می‌شود که برای آگهی‌های بنری اعمال می‌شود. تفاوت اصلی این است که به‌جای افزودن محدودیت به GAMBannerView، باید به GADNativeAppInstallAdView و GADNativeContentAdView (یا نمای حاوی آگهی) محدودیت اضافه کنید تا از راهنمای چیدمان «منطقه امن» پیروی کنید. برای نماهای بومی، توصیه می‌کنیم محدودیت‌های اندازه صریح‌تری ارائه دهید.

آگهی‌های بینابینی و پاداش‌دار

قالب‌های آگهی تمام‌صفحه، ازجمله آگهی‌های بینابینی و پاداش‌دار، توسط Google Mobile Ads SDK ارائه می‌شوند. به‌روزرسانی‌ای برای Google Mobile Ads SDK کیت توسعه نرم‌افزار ارائه خواهد شد تا اطمینان حاصل شود عناصر آگهی مثل دکمه بستن در جای درست پرداز می‌شوند. وقتی این تغییر دردسترس قرار گرفت، یادداشت‌های انتشار و این صفحه مستندات را به‌روز خواهیم کرد.