本快速入门指南适用于希望使用 AdMob 通过使用 Firebase 构建的应用获利的发布商和开发人员。
如果您还没有,请了解结合使用 AdMob、Firebase 和 Google Analytics 的所有好处。
如果这是您第一次阅读本指南,我们建议您下载并使用Google 移动广告 C++ SDK 测试应用进行操作。
在你开始之前
如果您还没有 Firebase 项目和 Firebase 应用程序,请遵循 Firebase 入门指南:将 Firebase 添加到您的 C++ 项目。
确保在您的 Firebase 项目中启用了 Google Analytics:
如果您要创建新的 Firebase 项目,请在项目创建工作流程中启用 Google Analytics。
如果您有一个未启用 Google Analytics 的现有 Firebase 项目,您可以从您的Integrations选项卡中启用 Google Analytics。
>项目设置的
第 1 步:在您的 AdMob 帐户中设置您的应用
将您应用的每个平台变体注册为 AdMob 应用。
向 AdMob 注册您应用程序的每个平台变体。此步骤会创建一个具有唯一AdMob 应用程序 ID的 AdMob 应用程序,您将在本指南的后面部分用到它。
系统会要求您将移动广告 SDK 添加到您的应用中。在本指南的后面部分找到有关此任务的详细说明。
将您的每个 AdMob 应用程序链接到相应的 Firebase 应用程序。
此步骤是可选的,但强烈推荐。详细了解启用用户指标并将您的 AdMob 应用关联到 Firebase 的好处。
对于每个平台变体,请在您的 AdMob 帐户的应用仪表板中完成以下两个步骤:
启用用户指标以允许 AdMob 处理和显示您的 AdMob 帐户中的精选分析数据。这也是将 AdMob 应用链接到 Firebase 的必要设置。
将您的 AdMob 应用链接到您现有的 Firebase 项目和相应的 Firebase 应用。
请确保您输入的包名称 (Android) 或包 ID (iOS) 与您为 Firebase 应用输入的相同。在您的项目设置的您的应用卡片中找到您的 Firebase 应用的包名称或包 ID。
>
第 2 步:将您的 AdMob 应用 ID 添加到您的应用
安卓
通过添加<meta-data>
标记,将您的AdMob 应用 ID添加到应用的AndroidManifest.xml
文件中,如下所示。
<manifest> <application> <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ADMOB_APP_ID"/> </application> </manifest>
iOS
在您应用的Info.plist
文件中,添加一个GADApplicationIdentifier
键,其字符串值为您的AdMob App ID 。
您可以通过编程方式进行此更改:
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 --> <key>GADApplicationIdentifier</key> <string>ADMOB_APP_ID</string>
或者,在属性列表编辑器中编辑它:
第 3 步:添加 Google 移动广告 SDK
由于 Google 移动广告 C++ SDK 位于firebase::gma
命名空间中,因此请下载Firebase C++ SDK ,然后将其解压缩到您选择的目录中。
Firebase C++ SDK 不特定于平台,但它确实需要特定于平台的库配置。
安卓
在项目的
gradle.properties
文件中,指定解压缩的 SDK 的位置:systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
在项目的
settings.gradle
文件中,添加以下内容:def firebase_cpp_sdk_dir = System.getProperty('firebase_cpp_sdk.dir') gradle.ext.firebase_cpp_sdk_dir = "$firebase_cpp_sdk_dir" includeBuild "$firebase_cpp_sdk_dir"
在您的模块(应用级)Gradle 文件(通常是
app/build.gradle
)中,添加以下内容,其中包括 Google 移动广告 C++ SDK 的库依赖项。android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } # Add the dependency for the Google Mobile Ads C++ SDK apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { gma }
在项目的
CMakeLists.txt
文件中,添加以下内容。# Add Firebase libraries to the target using the function from the SDK. add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) # Add the Google Mobile Ads C++ SDK. # The Firebase C++ library `firebase_app` is required, # and it must always be listed last. set(firebase_libs firebase_gma firebase_app ) target_link_libraries(${target_name} "${firebase_libs}")
同步您的应用程序以确保所有依赖项都具有必要的版本。
一切就绪!您的 C++ 应用已配置为使用 Google 移动广告 C++ SDK。
iOS
本部分中的步骤是如何将 Google 移动广告 C++ SDK 添加到您的 iOS 项目的示例。
通过运行以下命令获取 CocoaPods 版本 1 或更高版本:
sudo gem install cocoapods --pre
从解压缩的 SDK 添加 Google Mobile Ads pod。
如果您还没有 Podfile,请创建一个:
cd YOUR_APP_DIRECTORY
pod init
在您的 Podfile 中,为 Google Mobile Ads C++ SDK 添加 pod:
pod 'Google-Mobile-Ads-SDK'
安装 pod,然后在 Xcode 中打开
.xcworkspace
文件。pod install
open YOUR_APP.xcworkspace
将 Firebase C++ SDK 中的以下框架添加到项目中:
-
xcframeworks/firebase.xcframework
-
xcframeworks/firebase_gma.xcframework
-
一切就绪!您的 C++ 应用已配置为使用 Google 移动广告 C++ SDK。
第 4 步:初始化 Google 移动广告 SDK
在加载广告之前,通过调用firebase::gma::Initialize()
初始化移动广告 SDK。
此调用返回一个firebase::Future
,它在初始化完成后(或 30 秒超时后)完成。仅调用此方法一次并尽早调用,最好是在应用程序启动时调用。
以下是如何调用Initialize()
的示例:
安卓
// Initialize the Google Mobile Ads library firebase::InitResult result; Future<AdapterInitializationStatus> future = firebase::gma::Initialize(jni_env, j_activity, &result); if (result != kInitResultSuccess) { // Initialization immediately failed, most likely due to a missing dependency. // Check the device logs for more information. return; } // Monitor the status of the future. // See "Use a Future to monitor the completion status of a method call" below. if (future.status() == firebase::kFutureStatusComplete && future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization completed. } else { // Initialization on-going, or an error has occurred. }
iOS
// Initialize the Google Mobile Ads library. firebase::InitResult result; Future<AdapterInitializationStatus> future = firebase::gma::Initialize(&result); if (result != kInitResultSuccess) { // Initialization immediately failed, most likely due to a missing dependency. // Check the device logs for more information. return; } // Monitor the status of the future. // See "Use a Future to monitor the completion status of a method call" below. if (future.status() == firebase::kFutureStatusComplete && future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization completed. } else { // Initialization on-going, or an error has occurred. }
使用Future
监控方法调用的完成状态
Future
为您提供了一种方法来确定异步方法调用的完成状态。
例如,当您的应用程序调用firebase::gma::Initialize()
时,将创建并返回一个新的firebase::Future
。然后,您的应用可以轮询Future
的status()
以确定初始化何时完成。完成后,您的应用程序可以调用result()
来获取生成的AdapterInitializationStatus
。
返回Future
的方法有一个相应的“最后结果”方法,应用程序可以使用该方法来检索给定操作的最新Future
。例如, firebase::gma::Initialize()
有一个名为firebase::gma::InitializeLastResult()
的对应方法,它返回一个Future
,您的应用可以使用它来检查上次调用firebase::gma::Initialize()
。
如果Future
的状态为完成且其错误代码为firebase::gma::kAdErrorCodeNone
,则操作已成功完成。
您还可以注册要在Future
完成时调用的回调。在某些情况下,回调将在不同的线程中运行,因此请确保您的代码是线程安全的。此代码片段使用函数指针进行回调:
// Registers the OnCompletion callback. user_data is a pointer that is passed verbatim
// to the callback as a void*. This allows you to pass any custom data to the callback
// handler. In this case, the app has no data, so you must pass nullptr.
firebase::gma::InitializeLastResult().OnCompletion(OnCompletionCallback,
/*user_data=*/nullptr);
// The OnCompletion callback function.
static void OnCompletionCallback(
const firebase::Future<AdapterInitializationStatus>& future, void* user_data) {
// Called when the Future is completed for the last call to firebase::gma::Initialize().
// If the error code is firebase::gma::kAdErrorCodeNone,
// then the SDK has been successfully initialized.
if (future.error() == firebase::gma::kAdErrorCodeNone) {
// success!
} else {
// failure.
}
}
第 5 步:选择要在您的应用中实施的广告格式
AdMob 提供多种不同的广告格式,因此您可以选择最适合您应用用户体验的格式。单击广告格式的按钮可查看 AdMob 文档中的详细实施说明。
横幅
出现在设备屏幕顶部或底部的矩形广告
当用户与应用程序交互时,横幅广告会停留在屏幕上,并且可以在一段时间后自动刷新。如果您不熟悉移动广告,它们是一个很好的起点。
实施横幅广告插页式
覆盖应用程序界面的全屏广告,直到被用户关闭
插页式广告最适用于应用程序执行流程中的自然停顿,例如游戏关卡之间或任务刚刚完成之后。
实施插页式广告奖励
奖励用户观看短视频并与可播放广告和调查互动的广告
奖励(或“基于奖励”的)广告可以帮助免费游戏用户获利。
其他感兴趣的话题
查看用户指标和分析数据
初始化后,移动广告 SDK 会自动开始从您的应用程序中记录分析事件和用户属性。您可以查看此数据,而无需向您的应用添加任何额外代码或实施任何广告。您可以在此处查看此分析数据:
在 AdMob 帐户的用户指标卡(首页或应用信息中心)中,您可以查看从收集的分析数据中派生的精选用户指标,例如平均会话时长、 ARPU和留存率。
在 Firebase 控制台的Analytics仪表板中,您可以查看聚合统计数据和关键指标摘要。如果添加适用于 Google Analytics 的 Firebase SDK ,您还可以在 Firebase 控制台中为广告活动标记转化并构建自定义受众群体。
请注意,为了更好地表示ARPU和ARPPU指标,您可能希望在这些指标的收入计算中包含来自名为ecommerce_purchase
的分析自定义事件的数据(了解如何操作)。
(可选)使用 Google Analytics 和 Firebase 的更多功能
利用更多机会和功能来提高应用程序的货币化和用户参与度:
添加和使用适用于 Google Analytics 的 Firebase SDK
在您的应用程序中实施自定义事件日志记录。
标记自定义广告活动的转化。
在ARPU和ARPPU指标的收入计算中包括
ecommerce_purchase
事件数据。
要了解更多信息,请访问将Google Analytics 和 Firebase 与 AdMob 应用程序结合使用的指南。
在您的应用中使用其他 Firebase 产品
添加适用于 Google Analytics 的 Firebase SDK 后,使用其他 Firebase 产品优化应用中的广告。
Remote Config使您能够更改应用程序的行为和外观,而无需为无限制的每日活跃用户免费发布应用程序更新。
A/B 测试使您能够测试对应用的 UI、功能或参与活动的更改,以了解它们是否会对您的关键指标(如收入和保留率)产生影响,然后再广泛推广这些更改。