横幅广告会占据应用布局中的一处位置,要么是顶部,要么是 设备屏幕当用户与应用互动时,这类广告会停留在屏幕上 并可在一段时间后自动刷新。如果您刚开始接触 是理想的入手点 案例研究。
前提条件
- 完成入门指南。
- (仅限 Android)熟悉 JNI
jobject
引用(请参阅 Android JNI 提示)。
始终使用测试广告进行测试
在构建和测试应用时,请务必使用测试广告, 实际投放的广告。否则,可能会导致您的账号被暂停。
要加载测试广告,最简便的方法就是使用我们的专用测试广告单元 ID 横幅广告,具体方式因设备平台而异:
- Android:
ca-app-pub-3940256099942544/6300978111
- iOS:
ca-app-pub-3940256099942544/2934735716
这些广告单元 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
引用 或者将指向 iOSUIView
的指针转换为AdParent
类型的指针:// 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 中的示例
- 查看我们的源代码 快速入门应用示例 。
成功案例
- 示例用例。