Z tego przewodnika dowiesz się, jak prawidłowo kodować aplikacje, aby wyświetlać w nich reklamy na iPhonie X.
Wymagania wstępne
- Wykonaj czynności opisane w sekcji Pierwsze kroki.
Banery reklamowe
Banery reklamowe muszą być umieszczane w „bezpiecznym obszarze”, aby nie były zasłaniane przez zaokrąglone rogi, obudowę czujnika i wskaźnik ekranu głównego. Na tej stronie znajdziesz przykłady dodawania ograniczeń, które pozwalają umieścić baner u góry lub u dołu bezpiecznego obszaru. Ograniczenia w przypadku storyboardu i programowania są przedstawione w środowisku obsługującym iOS 9+ i Xcode 9+. Wskazano też obejścia dla wcześniejszych wersji iOS i Xcode.
Kreator scenorysów/interfejsów
Jeśli aplikacja korzysta z Interface Builder, najpierw włącz wytyczne układu Safe Area. Aby to zrobić, musisz mieć Xcode w wersji 9 lub nowszej i kierować reklamy na iOS w wersji 9 lub nowszej.
Otwórz plik Interface Builder i kliknij scenę kontrolera widoku. Po prawej stronie zobaczysz opcje Dokumentu Interface Builder. Zaznacz opcję Use Safe Area Layout Guides i upewnij się, że tworzysz aplikację na iOS 9.0 lub nowszy.

Zalecamy ograniczenie rozmiaru banera do wymaganego rozmiaru za pomocą ograniczeń szerokości i wysokości.

Teraz możesz wyrównać baner do góry obszaru bezpiecznego, ograniczając właściwość Top elementu GAMBannerView do góry obszaru bezpiecznego:

Podobnie możesz wyrównać baner do dołu obszaru bezpiecznego, ograniczając właściwość Bottom obiektu GAMBannerView do dołu obszaru bezpiecznego:

Ograniczenia powinny teraz wyglądać podobnie do tych na zrzucie ekranu poniżej (rozmiar i położenie mogą się różnić):

ViewController
Oto prosty fragment kodu kontrolera widoku, który wykonuje minimalne czynności potrzebne do wyświetlenia banera w obszarze GAMBannerView skonfigurowanym w scenorysie powyżej:
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()) } }
Objective-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 = @"/21775744923/example/adaptive-banner"; self.bannerView.rootViewController = self; GAMRequest *request = [GAMRequest request]; [self.bannerView loadRequest:request]; }
Wyrównywanie banerów do krawędzi bezpiecznego obszaru
Jeśli chcesz, aby baner był wyświetlany na całej szerokości ekranu i wyrównany do lewej lub prawej krawędzi, ogranicz jego lewą lub prawą krawędź do lewej lub prawej krawędzi obszaru bezpiecznego, a nie do lewej lub prawej krawędzi widoku nadrzędnego.
Jeśli masz włączoną opcję Use Safe Area Layout Guides (Używaj linii pomocniczych układu bezpiecznego obszaru), podczas dodawania ograniczeń do widoku domyślnie będą używane krawędzie bezpiecznego obszaru.
Obsługa systemu iOS 8 i starszych wersji
Jeśli chcesz obsługiwać system iOS 8 lub starszy za pomocą narzędzia Interface Builder, odznacz opcję Use Safe Area Layout Guides w przypadku plików narzędzia Interface Builder i scenorysów.
Teraz możesz dodawać ograniczenia u dołu górnej linii układu (zamiast u góry obszaru bezpiecznego):

Dodaj też ograniczenia do górnej części dolnego układu pomocniczego (zamiast do dolnej części bezpiecznego obszaru):

W przypadku banerów o pełnej szerokości (na które ma wpływ tylko bezpieczny obszar w trybie poziomym) te wytyczne dotyczące układu nie istnieją. Bezpieczna opcja w Interface Builderze polega na ustawieniu ograniczeń lewej i prawej krawędzi względem marginesów:

Dzięki temu krawędź banera będzie nieco odsunięta od krawędzi widoku nadrzędnego lub bezpiecznego obszaru, co zapewni, że baner nie będzie zasłonięty w orientacji poziomej na iPhonie X. Możesz też osiągnąć pożądany rezultat programowo.
Automatyczna
Jeśli Twoja aplikacja tworzy banery reklamowe automatycznie, możesz zdefiniować ograniczenia i umieścić baner reklamowy w kodzie. Ten przykład (dla iOS w wersji 7.0 i nowszej) pokazuje, jak ograniczyć baner, aby był wyśrodkowany poziomo u dołu bezpiecznego obszaru:
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)) } }
Objective-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 = @"/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
Powyższe techniki można łatwo wykorzystać do ograniczenia obszaru do górnej części obszaru bezpiecznego, modyfikując używane atrybuty i punkty zakotwiczenia.
Reklamy natywne
Jeśli Twoja aplikacja przypina reklamy natywne u góry lub u dołu ekranu, obowiązują te same zasady, co w przypadku banerów reklamowych.
Główna różnica polega na tym, że zamiast dodawać ograniczenia do elementu GAMBannerView, musisz dodać ograniczenia do elementów GADNativeAppInstallAdView i GADNativeContentAdView (lub widoku zawierającego reklamę), aby uwzględnić wytyczne układu bezpiecznego obszaru. W przypadku widoków natywnych zalecamy podanie bardziej szczegółowych ograniczeń rozmiaru.
Reklamy pełnoekranowe i reklamy z nagrodą
Formaty reklam pełnoekranowych, w tym reklamy pełnoekranowe i reklamy z nagrodą, są renderowane przez Google Mobile Ads SDK. Wprowadzimy aktualizację pakietu SDK Google Mobile Ads SDK, aby elementy reklam, takie jak przycisk zamykania, były renderowane we właściwym miejscu. Gdy ta zmiana będzie dostępna, zaktualizujemy informacje o wersji i tę stronę dokumentacji.