رندر تبلیغات آیفون X

این راهنما بهترین روش‌ها را در مورد نحوه کدنویسی برنامه‌های خود برای نمایش صحیح تبلیغات در iPhone X نشان می‌دهد.

پیش نیازها

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

Storyboard/Interface Builder

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

فایل Interface Builder خود را باز کنید و روی صحنه نمایش کنترلر خود کلیک کنید. در سمت راست گزینه های Interface Builder Document را خواهید دید. Use Safe Area Layout Guides را بررسی کنید و مطمئن شوید که حداقل برای iOS 9.0 و نسخه های جدیدتر می سازید.

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

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

به طور مشابه، می‌توانید با محدود کردن ویژگی GAMBannerView's Bottom در پایین ناحیه امن، بنر را در پایین منطقه امن تراز کنید:

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

ViewController

در اینجا یک قطعه کد ساده view controller وجود دارد که حداقل های لازم برای نمایش یک بنر در GAMBannerView را همانطور که در استوری بورد بالا پیکربندی شده است انجام می دهد:

سریع

class ViewController: UIViewController {

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

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

}

هدف-C

@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 = @"/6499/example/banner";
  self.bannerView.rootViewController = self;
  GAMRequest *request = [GAMRequest request];
  [self.bannerView loadRequest:request];
}

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

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

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

پشتیبانی از iOS 8 و پایین تر

اگر می‌خواهید با استفاده از Interface Builder از iOS 8 یا پایین‌تر پشتیبانی کنید، باید علامت Use Safe Area Layout Guides را برای فایل‌های Interface Builder و استوری‌بردهای خود بردارید.

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

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

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

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

برنامه ای

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

سریع

class ViewController: UIViewController {

  var bannerView: GAMBannerView!

  override func viewDidLoad() {
    super.viewDidLoad()

    // Instantiate the banner view with your desired banner size.
    bannerView = GAMBannerView(adSize: kGADAdSizeBanner)
    addBannerViewToView(bannerView)
    bannerView.rootViewController = self
    // Set the ad unit ID to your own ad unit ID here.
    bannerView.adUnitID = "/6499/example/banner"
    bannerView.load(GAMRequest())
  }

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

}

هدف-C

@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 = @"/6499/example/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 وجود خواهد داشت تا اطمینان حاصل شود که عناصر تبلیغاتی مانند دکمه بستن در جای درست نمایش داده می‌شوند. هنگامی که این تغییر در دسترس باشد، یادداشت های انتشار و این صفحه مستندات را به روز خواهیم کرد.