横幅广告会占据应用布局中的一处位置,要么是设备屏幕的顶部,要么是底部。当用户与应用互动时,这类广告会停留在屏幕上,并且可在一段时间后自动刷新。如果您刚开始接触移动广告,建议从横幅广告着手。案例研究。
前提条件
- 完成入门指南。
- (仅限 Android)熟悉如何使用 JNI
jobject
引用(请参阅 Android JNI 提示)。
务必用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的账号被中止。
对于横幅广告,加载测试广告最简便的方法就是使用我们的专用测试广告单元 ID,该 ID 因设备平台而异:
- Android:
ca-app-pub-3940256099942544/6300978111
- iOS:
ca-app-pub-3940256099942544/2934735716
这些广告单元 ID 已经过专门配置,可为每个请求返回测试广告,您可以在自己应用的编码、测试和调试过程中随意使用这些广告单元 ID。只需确保在发布应用前用您自己的广告单元 ID 替换该测试广告单元 ID 即可。
如需详细了解移动广告 SDK 的测试广告如何运作,请参阅测试广告。
实现
配置 AdView
横幅广告在 AdView
对象中展示,因此植入横幅广告的第一步是创建并放置 AdView
。
将以下头文件添加到应用的 C++ 代码中:
#include "firebase/gma/ad_view.h"
声明并实例化一个
AdView
对象:firebase::gma::AdView* ad_view; ad_view = new firebase::gma::AdView();
创建一个
AdSize
,并使用AdParent
父视图初始化广告视图。父视图是对 AndroidActivity
的 JNIjobject
引用,或指向转换为AdParent
类型的 iOSUIView
的指针:// my_ad_parent is a jobject reference // to an Android Activity or a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future
result = ad_view->Initialize(ad_parent, kBannerAdUnit, firebase::gma::AdSize::kBanner); 除了将 Future 保留为变量之外,您还可以通过对
AdView
对象调用InitializeLastResult()
来定期检查初始化操作的状态。这可能有助于跟踪全局游戏循环中的初始化过程。// Monitor the status of the future in your game loop: firebase::Future<void> result = ad_view->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
如需详细了解如何使用
firebase::Future
,请参阅使用 Future 来监控方法调用的完成状态。
设置广告的位置
在 AdView
初始化后,您可以随时设置其位置:
firebase::Future<void> result = ad_view->SetPosition(firebase::gma::AdView::kPositionTop);
加载广告
初始化 AdView
后,您就可以加载广告了:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result = ad_view->LoadAd(my_ad_request);
AdRequest
对象代表单个广告请求,并包含定位等信息的属性。
展示广告
最后,通过调用 Show()
在界面上显示广告。在广告初始化后,可以随时调用此方法:
firebase::Future<void> result = ad_view->Show();
广告事件
Google 移动广告 C++ SDK 提供了一个 AdListener
类,您可以继承这个类并将其传递给 AdView::SetListener()
,以便在广告视图的状态发生更改时能收到通知。
扩展 AdListener
中的方法是可选的,因此您只需实现所需的方法即可。下面是继承了所有 AdListener
方法类的一个类的示例实现代码:
class ExampleAdListener : public firebase::gma::AdListener { public: ExampleAdListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdClosed() override { // This method is invoked when the user closes the ad. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdOpened() override { // This method is invoked when an ad opens an overlay that covers the screen. } }; ExampleAdListener* ad_listener = new ExampleAdListener(); ad_view->SetAdListener(ad_listener);
横幅尺寸
下表列出了标准的横幅广告尺寸。
尺寸(宽 x 高,以点为单位) | 说明 | 可用性 | firebase::gma::AdSize 常量 |
---|---|---|---|
320x50 | 横幅 | 手机和平板电脑 | kBanner |
320x100 | 大型横幅广告 | 手机和平板电脑 | kLargeBanner |
300x250 | IAB 中矩形 | 手机和平板电脑 | kMediumRectangle |
468x60 | IAB 全尺寸横幅广告 | 平板电脑 | kFullBanner |
728x90 | IAB 页首横幅 | 平板电脑 | kLeaderboard |
提供的宽度 x 自适应高度 | 自适应横幅广告 | 手机和平板电脑 | 不适用 |
自定义广告尺寸
如需指定自定义横幅广告尺寸,请使用带有宽度和高度参数的 firebase::gma::AdSize
构造函数设置所需的尺寸,如下所示:
firebase::gma::AdSize ad_size(/*width=*/320, /*height=*/50);
其他资源
GitHub 中的示例
- 在 GitHub 上查看快速入门示例应用的源代码。