获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

在您的 C++ 项目中开始使用 AdMob

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本快速入门指南适用于希望使用 AdMob 通过使用 Firebase 构建的应用获利的发布商和开发者。

如果您还没有,请了解结合使用 AdMob、Firebase 和 Google Analytics 的所有好处

如果这是您第一次阅读本指南,我们建议您下载并使用Google Mobile Ads C++ SDK 测试应用程序进行操作。

在你开始之前

  • 如果您还没有 Firebase 项目和 Firebase 应用,请按照 Firebase 入门指南:将 Firebase 添加到您的 C++ 项目

  • 确保在您的 Firebase 项目中启用了 Google Analytics:

    • 如果您要创建新的 Firebase 项目,请在项目创建工作流程中启用 Google Analytics。

    • 如果您有一个未启用 Google Analytics 的现有 Firebase 项目,您可以从 >项目设置集成选项卡中启用 Google Analytics。

第 1 步:在您的 AdMob 帐户中设置您的应用

  1. 将您应用的每个平台变体注册为 AdMob 应用。

    1. 登录注册AdMob 帐户。

    2. 使用 AdMob 注册您应用的每个平台变体。此步骤会创建一个具有唯一AdMob 应用 ID的 AdMob 应用,您将在本指南后面部分使用该 ID。

    系统会要求您将移动广告 SDK 添加到您的应用中。在本指南的后面部分查找此任务的详细说明。

  2. 将您的每个 AdMob 应用链接到相应的 Firebase 应用。

    此步骤是可选的,但强烈推荐。详细了解启用用户指标以及将 AdMob 应用与 Firebase 相关联的好处

    对于每个平台变体,请在您的 AdMob 帐户的应用信息中心中完成以下两个步骤:

    1. 启用用户指标以允许 AdMob 在您的 AdMob 帐户中处理和显示精选分析数据。这也是您将 AdMob 应用与 Firebase 相关联的必需设置。

    2. 将您的 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 不是特定于平台的,但它确实需要特定于平台的库配置。

安卓

  1. 在项目的gradle.properties文件中,指定解压后的 SDK 的位置:

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. 在项目的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"
  3. 在您的模块(应用级)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
    }
  4. 在项目的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}")
  5. 同步您的应用程序以确保所有依赖项都具有必要的版本。

你都准备好了!您的 C++ 应用已配置为使用 Google 移动广告 C++ SDK。

iOS

本部分中的步骤是如何将 Google Mobile Ads C++ SDK 添加到您的 iOS 项目的示例。

  1. 运行以下命令获取 CocoaPods 版本 1 或更高版本:

    sudo gem install cocoapods --pre
  2. 从解压缩的 SDK 添加 Google 移动广告 pod。

    1. 如果您还没有 Podfile,请创建一个:

      cd YOUR_APP_DIRECTORY
      pod init
    2. 在您的 Podfile 中,为 Google Mobile Ads C++ SDK 添加 pod:

      pod 'Google-Mobile-Ads-SDK'
    3. 安装 pod,然后在 Xcode 中打开.xcworkspace文件。

      pod install
      open YOUR_APP.xcworkspace
    4. 将 Firebase C++ SDK 中的以下框架添加到项目中:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

你都准备好了!您的 C++ 应用已配置为使用 Google 移动广告 C++ SDK。

第 4 步:初始化 Google 移动广告 SDK

在加载广告之前,通过调用firebase::gma::Initialize()来初始化 Mobile Ads 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 。然后,您的应用可以轮询Futurestatus()以确定初始化何时完成。完成后,您的应用可以调用result()来获取结果AdapterInitializationStatus

返回Future的方法具有相应的“最后结果”方法,应用程序可以使用该方法来检索给定操作的最新Future 。例如, firebase::gma::Initialize()有一个相应的方法,称为firebase::gma::InitializeLastResult() ,它返回一个Future ,您的应用可以使用它来检查最后一次调用firebase::gma::Initialize()

如果Future的状态为 complete 且其错误代码为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 会自动开始记录您应用中的分析事件用户属性。您无需向应用添加任何额外代码或实施任何广告即可查看这些数据。您可以在此处查看此分析数据:

请注意,为了更好地表示ARPUARPPU指标,您可能希望在这些指标的收入计算中包含来自名为ecommerce_purchase的分析自定义事件的数据(了解如何)。

(可选)使用 Google Analytics 和 Firebase 的更多功能

利用更多机会和功能来提高应用获利和用户参与度:

  • 添加和使用 Firebase SDK for Google Analytics

  • 在您的应用中使用其他 Firebase 产品

    添加适用于 Google Analytics 的 Firebase SDK 后,使用其他 Firebase 产品来优化您应用中的广告。

    • 远程配置使您能够更改应用程序的行为和外观,而无需为无限的每日活跃用户免费发布应用程序更新。

    • A/B 测试使您能够测试对应用程序的 UI、功能或参与度活动的更改,以了解它们是否会对您的关键指标(如收入和留存率)产生影响,然后再广泛推广这些更改。

要开始使用,请访问将Google Analytics(分析)和 Firebase 与 AdMob 应用结合使用的指南。