本快速入門指南適用於想使用 AdMob,透過以 Firebase 建構的應用程式營利的發布商和開發人員。如果不想在應用程式中導入 Firebase,請改為參閱獨立AdMob指南。
如果您尚未瞭解,請參閱這篇文章,瞭解如何搭配使用 AdMob、Firebase 和 Google Analytics。
如果您是第一次閱讀本指南,建議您下載 Google Mobile Ads C++ SDK 測試應用程式,並按照指南操作。
事前準備
- 如果您還沒有 Firebase 專案和 Firebase 應用程式,請按照 Firebase 入門指南操作: 將 Firebase 新增至 C++ 專案。 
- 確認已在 Firebase 專案中啟用 Google Analytics: - 如果您要建立新的 Firebase 專案,請在專案建立工作流程中啟用 Google Analytics。 
- 如果您現有的 Firebase 專案未啟用 Google Analytics,可以前往 - >「專案設定」的「整合」分頁標籤啟用 Google Analytics。 
 
步驟 1:在 AdMob 帳戶中設定應用程式
- 將應用程式的每個平台變體註冊為 AdMob 應用程式。 
- 使用 AdMob 註冊應用程式的每個平台變體。這個步驟會建立 AdMob 應用程式,並產生專屬的 AdMob 應用程式 ID (本指南後續步驟會用到)。 
 - 系統會要求您將 Mobile Ads SDK 新增至應用程式。如需這項工作的詳細操作說明,請參閱本指南後續內容。 
- 將每個 AdMob 應用程式連結至對應的 Firebase 應用程式。 - 這是選用步驟,但強烈建議執行。進一步瞭解啟用使用者指標並將 AdMob 應用程式連結至 Firebase 的好處。 - 針對每個平台變體,在 AdMob 帳戶的「應用程式」資訊主頁中完成下列兩個步驟: 
步驟 2:將 AdMob 應用程式 ID 新增至應用程式
Android
將AdMob應用程式 ID新增至應用程式的 AndroidManifest.xml 檔案,方法是加入 <meta-data> 標記,如下所示。
<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應用程式 ID 設定字串值。
您可以透過程式輔助方式進行這項變更:
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 --> <key>GADApplicationIdentifier</key> <string>ADMOB_APP_ID</string>
您也可以在屬性清單編輯器中編輯該設定檔:
步驟 3:加入 Google Mobile Ads SDK
由於 Google Mobile Ads C++ SDK 位於 firebase::gma 命名空間中,請下載 Firebase C++ SDK,然後解壓縮至您選擇的目錄。
Firebase C++ SDK 並非平台專屬,但需要平台專屬的程式庫設定。
Android
- 在專案的 - 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 Mobile Ads 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 Mobile Ads C++ SDK。
iOS
本節的步驟是範例,說明如何將 Google Mobile Ads C++ SDK 新增至 iOS 專案。
- 執行下列指令,取得 CocoaPods 1 以上版本: - sudo gem install cocoapods --pre
- 從解壓縮的 SDK 新增 Google Mobile Ads Pod。 - 如果沒有 Podfile,請先建立 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 Mobile Ads C++ SDK。
步驟 4:初始化 Google Mobile Ads SDK
載入廣告前,請呼叫 firebase::gma::Initialize() 初始化 Mobile Ads SDK。
這個呼叫會回傳 firebase::Future,並在初始化完成後 (或 30 秒逾時後) 執行完畢。請盡早呼叫這個方法一次,最佳時機是應用程式啟動時。
以下範例說明如何呼叫 Initialize():
Android
// 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說明文件中查看詳細的導入說明。
橫幅
顯示在裝置畫面頂端或底部的矩形廣告
使用者操作應用程式時,橫幅廣告會持續停留在畫面上,並能定時自動更新內容。對剛接觸行動廣告的新手來說,這是很好的入門選擇。
導入橫幅廣告插頁式
完全覆蓋應用程式介面的全螢幕廣告,使用者需自行關閉
插頁式廣告最適合出現在應用程式執行流程中的自然停頓點,例如遊戲關卡之間或完成任務後。
導入插頁式廣告獎勵廣告
這類廣告能在使用者看完短片、與可試玩廣告互動,或完成問卷調查後提供獎勵
獎勵廣告 (或「以獎勵為基礎」的廣告) 有助於透過免費遊戲使用者營利。
其他感興趣的主題
查看使用者指標和數據分析資料
初始化後,Mobile Ads SDK 會自動開始記錄應用程式的 Analytics事件和使用者屬性。您不必在應用程式中新增任何程式碼或導入任何廣告,就能查看這項資料。您可以在下列位置查看這項數據分析資料:
- 在AdMob帳戶的「使用者指標」資訊卡 (「首頁」或「應用程式」資訊主頁),您可以查看從收集到的數據分析資料得出的精選使用者指標,例如平均工作階段時間、每位使用者平均收益和回訪率。 
- 在 Firebase 控制台的Analytics 資訊主頁中,您可以查看匯總統計資料和重要指標摘要。 如果您新增 Google Analytics 適用的 Firebase SDK,也可以在 Firebase 控制台中標記廣告活動的轉換,以及建立自訂目標對象。 
請注意,如要更準確地呈現每位使用者的平均收益 (ARPU) 和單一付費使用者平均收益 (ARPPU) 指標,您可能需要在這些指標的收益計算中納入名為 ecommerce_purchase 的 Analytics 自訂事件資料 (瞭解如何操作)。
(選用) 使用 Google Analytics 和 Firebase 的其他功能
善用更多商機和功能,提升應用程式營利成效和使用者參與度:
- 新增及使用適用於 Google Analytics 的 Firebase SDK 
- 在應用程式中使用其他 Firebase 產品 - 新增 Google Analytics 適用的 Firebase SDK 後,即可使用其他 Firebase 產品,在應用程式中放送最佳化廣告。 - Remote Config 可讓您直接變更應用程式行為和外觀 (不用發布應用程式更新),而且不限每日活躍使用者人數,完全免費。 
- 透過 A/B Testing,您可以測試對應用程式 UI、功能或參與度廣告活動所做的變更,瞭解變更是否會影響重要指標 (例如收益和留存率),再廣泛推出變更。