在您的 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 應用結合使用的指南。