了解 2023 年 Google I/O 大会上介绍的 Firebase 亮点。了解详情

在您的 C++ 項目中開始使用 AdMob

本快速入門指南適用於希望使用 AdMob 通過使用 Firebase 構建的應用獲利的發布商和開發人員。如果您不打算在您的應用中包含 Firebase,請訪問獨立的 AdMob 指南

如果您還沒有,請了解結合使用 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 帳戶中設置您的應用

  1. 將您應用的每個平台變體註冊為 AdMob 應用。

    1. 登錄註冊AdMob 帳戶。

    2. 向 AdMob 註冊您應用程序的每個平台變體。此步驟會創建一個具有唯一AdMob 應用程序 ID的 AdMob 應用程序,您將在本指南的後面部分用到它。

    系統會要求您將移動廣告 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 移動廣告 C++ SDK 添加到您的 iOS 項目的示例。

  1. 通過運行以下命令獲取 CocoaPods 版本 1 或更高版本:

    sudo gem install cocoapods --pre
  2. 從解壓縮的 SDK 添加 Google Mobile Ads 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()初始化移動廣告 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的狀態為完成且其錯誤代碼為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 的更多功能

利用更多機會和功能來提高應用程序的貨幣化和用戶參與度: