透過原生樣式設定,Google Ad Manager 能依照您在產品中指定的樣式,自動呈現原生廣告。您只需先設定好廣告大小和目標對象,再加入 HTML、CSS 和 JavaScript 定義程式碼,就能打造出在各種螢幕上出色呈現的回應式廣告。您無需自行設定廣告顯示方式,Ad Manager 會自動根據放送位置套用合適的原生樣式。原生樣式和橫幅廣告一樣是用 GAMBannerView
導入,可以使用預先設定的固定廣告大小,也可以採用在執行階段動態調整的彈性大小。
必備條件
- Google Mobile Ads SDK 7.14.0 以上版本
本指南假設您對 Google Mobile Ads SDK 已有基本瞭解。如果您還不熟悉這個 SDK,建議先參閱「開始使用」指南。
固定大小
採用固定大小的原生樣式時,您可以控制廣告的寬度和高度。如要設定固定大小,請按照下列步驟操作:
在 Ad Manager 使用者介面中建立委刊項,然後從
Size
欄位下拉式選單中選取一個預先定義的大小。在 Interface Builder 中,將
GAMBannerView
的寬度和高度設為步驟 1 所選的預先定義大小。在「橫幅大小」一節,您可以查看各種大小和對應的GADAdSize
常數。
如要實作固定大小的原生樣式,只要按照「您的第一個橫幅廣告請求」中的指示操作即可。此外,您可以自由調整 HTML、CSS 和 JavaScript 程式碼,讓橫幅廣告的外觀和風格更貼近應用程式的整體設計,自然融入使用者體驗。
自動調整大小
有時候,固定大小的廣告可能不太適用。舉例來說,您可能希望廣告寬度與應用程式內容一致,但高度能依廣告內容動態調整。如有這種需求,您可以在 Ad Manager 使用者介面中將廣告大小設為 Fluid
,代表廣告大小會在應用程式執行階段決定。SDK 提供特殊的 GADAdSize
常數 kGADAdSizeFluid
,專門用於處理這種情況。自動調整大小的廣告會根據發布商設定的寬度動態調整,讓 GAMBannerView
的高度與廣告素材一致。
自動調整請求
與其他廣告格式不同,kGADAdSizeFluid
廣告大小沒有預先定義的寬度,因此請務必在程式碼或 Interface Builder 中明確設定橫幅廣告的畫面寬度。如未指定寬度,SDK 預設會根據裝置全寬來設定橫幅廣告的高度。
如果您發送的多尺寸請求包含 kGADAdSizeFluid
,傳回的廣告一定會放在自動調整的容器中,並以自動調整廣告的形式呈現。如果自動調整容器傳回非自動調整的廣告素材,SDK 會將廣告置中,避免每次傳回新廣告時,都需要修改寬度限制。
無論是請求單一還是多尺寸的自動調整廣告,實作方式幾乎相同。唯一的差別是,多尺寸請求需要利用 validAdSizes
屬性指定可接受的廣告大小。
Swift
bannerView.validAdSizes = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]
Objective-C
_bannerView.validAdSizes = @[ NSValueFromGADAdSize(kGADAdSizeFluid),
NSValueFromGADAdSize(kGADAdSizeBanner) ];
以下是完整的實作程式碼範例:
Swift
var bannerView: AdManagerBannerView!
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 = AdManagerBannerView(adSize: AdSizeFluid)
var frameRect = bannerView.frame
frameRect.size.width = view.bounds.width
bannerView.frame = frameRect
// Uncomment this code for a multisize fluid request.
// bannerView.validAdSizes = [nsValue(for: AdSizeFluid), nsValue(for: AdSizeBanner)]
bannerView.adUnitID = "YOUR_AD_UNIT_ID"
bannerView.rootViewController = self
// Make the ad request.
bannerView.load(AdManagerRequest())
}
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 試用版應用程式
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: BannerView, willChangeAdSizeTo adSize: AdSize) {
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;
}