原生样式设置
让 Google Ad Manager 根据原生广告
您在商品中指定的样式。首先,指定尺寸和定位条件。
然后,添加 HTML、CSS 和 JavaScript 以定义自适应广告
从而在所有屏幕上获得高品质的显示效果您无需执行
呈现的任何内容;Ad Manager 会自动应用合适的原生样式
。原生样式的植入方式与横幅广告一样
使用 GAMBannerView
。此类广告可与固定广告搭配使用
尺寸,也可以是在运行时确定的自适应广告尺寸。
前提条件
- Google 移动广告 SDK 7.14.0 或更高版本
本指南假定您已经掌握了一些 Google 移动广告 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 = [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 演示应用。
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;
}