Hướng dẫn này trình bày các phương pháp hay nhất về cách mã hoá ứng dụng của bạn để hiển thị quảng cáo đúng cách trên iPhone X.
Điều kiện tiên quyết
- Hoàn thành các bước trong phần Bắt đầu sử dụng.
Quảng cáo biểu ngữ
Bạn phải đặt quảng cáo biểu ngữ ở "Vùng an toàn" để tránh bị góc bo tròn, vỏ cảm biến và thanh chỉ báo Màn hình chính che khuất. Trên trang này, bạn sẽ tìm thấy các ví dụ về cách thêm các quy tắc ràng buộc để đặt một biểu ngữ ở trên cùng hoặc dưới cùng của Vùng an toàn. Cả ràng buộc trên bảng phân cảnh và ràng buộc có lập trình đều được minh hoạ trong một môi trường hỗ trợ iOS 9 trở lên và Xcode 9 trở lên. Các giải pháp cho các phiên bản cũ của iOS và Xcode cũng được lưu ý.
Bảng phân cảnh/Trình tạo giao diện
Nếu ứng dụng của bạn sử dụng Trình tạo giao diện, trước tiên hãy đảm bảo rằng bạn đã bật chỉ dẫn bố cục Vùng an toàn. Để làm điều này, bạn phải đang chạy Xcode 9+ và nhắm đến iOS 9+.
Mở tệp Trình tạo giao diện rồi nhấp vào khung cảnh của trình kiểm soát chế độ xem. Bạn sẽ thấy các lựa chọn Tài liệu trình tạo giao diện ở bên phải. Đánh dấu chọn Sử dụng chỉ dẫn bố cục vùng an toàn và đảm bảo rằng bạn đang tạo ứng dụng cho iOS 9.0 trở lên.
Bạn nên ràng buộc biểu ngữ theo kích thước bắt buộc bằng cách sử dụng các quy tắc ràng buộc đối với chiều rộng và chiều cao.
Bây giờ, bạn có thể căn chỉnh biểu ngữ lên đầu Vùng an toàn bằng cách ràng buộc thuộc tính Top của GAMBannerView ở đầu Vùng an toàn:
Tương tự, bạn có thể căn chỉnh biểu ngữ ở dưới cùng của Vùng an toàn bằng cách ràng buộc thuộc tính Bottom của GAMBannerView ở dưới cùng của vùng an toàn:
Các quy tắc ràng buộc của bạn hiện sẽ trông giống như ảnh chụp màn hình bên dưới (kích thước/vị trí có thể khác nhau):
ViewController
Đây là một đoạn mã đơn giản của trình kiểm soát chế độ xem có chức năng tối thiểu cần thiết để
hiển thị biểu ngữ trong GAMBannerView
như đã định cấu hình trong bảng phân cảnh ở trên:
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]; }
Căn chỉnh các biểu ngữ theo cạnh của vùng an toàn
Nếu bạn muốn biểu ngữ có chiều rộng đầy đủ, được căn trái hoặc căn phải, hãy đặt cố định cạnh trái/phải của biểu ngữ theo cạnh trái/phải của Vùng an toàn, thay vì theo cạnh trái/phải của chế độ xem superview.
Nếu bạn đã bật tuỳ chọn Use Safe Area Layout Guides (Sử dụng hướng dẫn đặt bố cục cho vùng an toàn), thì trình tạo giao diện sẽ mặc định sử dụng cạnh của vùng an toàn khi thêm các quy tắc ràng buộc vào chế độ xem.
Hỗ trợ iOS 8 trở xuống
Nếu muốn hỗ trợ iOS 8 trở xuống bằng Trình tạo giao diện, bạn nên bỏ chọn Sử dụng chỉ dẫn bố cục vùng an toàn cho các tệp và bảng phân cảnh của Trình tạo giao diện.
Giờ đây, bạn có thể thêm các quy tắc ràng buộc vào cuối hướng dẫn bố cục trên cùng (thay vì đầu Vùng an toàn):
Ngoài ra, hãy thêm các quy tắc ràng buộc vào đầu hướng dẫn bố cục dưới cùng (thay vì cuối Vùng an toàn):
Đối với biểu ngữ trải toàn chiều rộng (chỉ chịu ảnh hưởng của Vùng an toàn ở chế độ ngang), các hướng dẫn bố cục này không tồn tại. Lựa chọn an toàn trong Trình tạo giao diện là đặt các quy tắc ràng buộc hiển thị theo cạnh trái và cạnh phải tương ứng với lề:
Điều này sẽ bù đắp một chút cho cạnh của biểu ngữ so với cạnh của superview/Vùng an toàn, đảm bảo rằng biểu ngữ của bạn sẽ không bị che khuất ở hướng ngang trên iPhone X. Bạn cũng có thể đạt được kết quả mong muốn theo phương thức có lập trình.
Có lập trình
Nếu ứng dụng của bạn tạo quảng cáo biểu ngữ theo phương thức lập trình, bạn có thể xác định các quy tắc ràng buộc và đặt quảng cáo biểu ngữ trong mã. Ví dụ này (dành cho iOS phiên bản 7.0 trở lên) cho thấy cách ràng buộc để hiển thị một biểu ngữ được căn giữa theo chiều ngang ở dưới cùng của Vùng an toàn:
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
Bạn có thể dễ dàng dùng các phương pháp trên để bắt buộc biểu ngữ hiển thị ở phía trên cùng của vùng an toàn bằng cách sửa đổi các thuộc tính và thẻ liên kết được sử dụng.
Quảng cáo gốc
Nếu ứng dụng của bạn ghim quảng cáo gốc vào phần trên cùng hoặc dưới cùng của màn hình, thì các nguyên tắc tương tự áp dụng cho quảng cáo gốc cũng sẽ được áp dụng cho quảng cáo biểu ngữ.
Điểm khác biệt lớn nhất là thay vì thêm các quy tắc ràng buộc vào GAMBannerView
, bạn sẽ cần thêm các quy tắc ràng buộc vào GADNativeAppInstallAdView
và GADNativeContentAdView
(hoặc chế độ xem có chứa quảng cáo) để tuân theo chỉ dẫn bố cục Vùng an toàn. Đối với các chế độ xem gốc, bạn nên cung cấp các quy tắc ràng buộc rõ ràng hơn về kích thước.
Quảng cáo xen kẽ và quảng cáo có tặng thưởng
SDK Quảng cáo trên thiết bị di động của Google sẽ hiển thị các định dạng quảng cáo toàn màn hình, bao gồm cả quảng cáo xen kẽ và quảng cáo có tặng thưởng. SDK quảng cáo trên thiết bị di động của Google sẽ có một bản cập nhật để đảm bảo các phần tử quảng cáo như nút đóng hiển thị ở đúng vị trí. Chúng tôi sẽ cập nhật ghi chú phát hành và trang tài liệu này khi thay đổi này có hiệu lực.