原生樣式

原生樣式設定 可讓 Google Ad Manager 根據原生廣告處理原生廣告的顯示方式 您在產品中指定的樣式。首先,請指定大小和指定目標 接著新增 HTML、CSS 和 JavaScript 來定義回應式廣告 並製作適合所有螢幕的畫質你不需要執行這項動作 任何轉譯情形;Ad Manager 會自動採用 目標位置原生樣式的導入方式與橫幅廣告類似 透過 GAMBannerView。這種素材資源可與固定廣告搭配使用 或是在執行階段決定的自動調整廣告大小

必要條件

  • Google Mobile Ads SDK 7.14.0 以上版本

本指南假設您對 Google Mobile Ads SDK 有一定程度的瞭解。 如果您還沒有這樣做,建議您參考 開始使用指南。

固定大小

大小固定的原生樣式可讓您控制寬度和高度 顯示內容如要設定固定大小,請按照下列步驟操作:

  1. 在 Ad Manager 使用者介面中建立委刊項,然後選取 自訂大小。Size

  2. 在介面建構工具中,設定 GAMBannerView 的寬度和高度 以便與您在步驟 1 中選取的預先定義大小相符您會看到 大小及其對應的 GADAdSize 常數清單 尺寸 專區。

實作採用固定大小的原生樣式的方法如下: 您的第一個橫幅廣告 要求 但您也能彈性調整 HTML、CSS 和 JavaScript ,賦予橫幅廣告原生的外觀和風格。

自動調整大小

在某些情況下,固定大小可能不合理。例如,你可以設定 希望廣告寬度與應用程式內容相符,但需要高度 配合廣告內容動態調整為了處理這種情況 您可以在 Ad Manager UI 中指定 Fluid 做為廣告大小 指定廣告在應用程式的執行階段中決定尺寸。 SDK 提供了特殊的 GADAdSize 常數 kGADAdSizeFluid、 來處理這個情況。系統會動態決定自動調整廣告大小的高度 以便根據發布商定義的寬度 GAMBannerView、 配合廣告素材的高度調整高度

自動調整要求

與其他廣告格式不同,kGADAdSizeFluid 廣告的大小不需要 預先定義的寬度,因此請務必明確設定橫幅廣告頁框 程式碼或 Interface Builder 中的寬度。如果未指定寬度 SDK 預設會根據 寬度。

如果您提出的多重大小要求包含 kGADAdSizeFluid, 傳回的廣告一定會放置在自動調整容器內 就像自動調整廣告一樣在非流動廣告素材 在這個自動調整容器中傳回的 SDK 會將廣告放在 這樣就不必修改寬度限制 每次傳回新的廣告時

採用單一尺寸和多重大小流動的導入做法 非常類似唯一的差別是 您設定了 validAdSizes 屬性來指定廣告 適用於廣告請求的大小:

Swift

bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
                           NSValueFromGADAdSize(kGADAdSizeBanner)]

Objective-C

_bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
                              NSValueFromGADAdSize(kGADAdSizeBanner) ];

在程式碼中,完整導入如下所示:

Swift

var bannerView: GAMBannerView!

override func viewDidLoad() {
  super.viewDidLoad()
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  bannerView = GAMBannerView(adSize: kGADAdSizeFluid)
  var frameRect = bannerView.frame
  frameRect.size.width = view.bounds.width
  bannerView.frame = frameRect

  // Uncomment this code for a multisize fluid request.
  // bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeFluid),
  //                            NSValueFromGADAdSize(kGADAdSizeBanner)]

  bannerView.adUnitID = "YOUR_AD_UNIT_ID"
  bannerView.rootViewController = self

  // Make the ad request.
  bannerView.load(GAMRequest())
}

Objective-C

GAMBannerView *_bannerView;

- (void)viewDidLoad {
  [super viewDidLoad];
  // Create the GAMBannerView and set its width to a width that makes sense for your
  // app. In this example, the width is set to the width of the UIViewController's
  // root view.
  _bannerView = [[GAMBannerView alloc] initWithAdSize:kGADAdSizeFluid];
  CGRect frameRect = _bannerView.frame;
  frameRect.size.width = CGRectGetWidth(self.view.bounds);
  _bannerView.frame = frameRect;

  // Uncomment this code for a multisize fluid request.
  // _bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
  //                               NSValueFromGADAdSize(kGADAdSizeBanner) ];

  _bannerView.adUnitID = @"YOUR_AD_UNIT_ID";
  _bannerView.rootViewController = self;

  // Make the ad request.
  [_bannerView loadRequest:[GAMRequest request]];
}

要查看 Ad Manager 自動調整廣告大小的導入範例 在 Swift 或 Objective-C 中下載 iOS API 試用版應用程式。

下載 API 示範影片

GADAdSizeDelegate 通訊協定

您可能會在廣告大小變更之前,先掌握橫幅廣告的高度。 adView:willChangeAdSizeTo: 回呼會在 橫幅檢視畫面會變更為新的 GADAdSize。要在以下時間之前收到通知 橫幅廣告檢視畫面有所變更時,您的類別必須符合 GADAdSizeDelegate 通訊協定。

以下是 adView:willChangeAdSizeTo: 的實作範例: 回呼顯示如何取得橫幅廣告新的寬度和高度:

Swift

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
bannerView.adSizeDelegate = self

// MARK: - GADAdSizeDelegate

func adView(_ bannerView: GADBannerView, willChangeAdSizeTo adSize: GADAdSize) {
  let height = adSize.size.height
  let width = adSize.size.width
}

Objective-C

// To be notified before the banner's ad size changes, your view controller class must
// conform to the GADAdSizeDelegate protocol.
_bannerView.adSizeDelegate = self;

#pragma mark - GADAdSizeDelegate

- (void)adView:(GADBannerView *)bannerView willChangeAdSizeTo:(GADAdSize)adSize {
  CGFloat height = adSize.size.height;
  CGFloat width = adSize.size.width;
}