建議使用 AdMob 的 iOS 和 Android SDK。
本快速入門指南適用於想透過 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,可以前往
> 「Project settings」(專案設定) 的 「Integrations」(整合) 分頁啟用 Google Analytics。
步驟 1:在 AdMob 帳戶中設定應用程式
將應用程式的每個平台版本註冊為 AdMob 應用程式。
使用 AdMob 註冊應用程式的各個平台變化版本。這個步驟會建立 AdMob 應用程式,並產生專屬的 AdMob 應用程式 ID (本指南後續步驟會用到)。
系統會要求您將 Mobile Ads SDK 新增至應用程式。本指南稍後會提供這項工作的詳細操作說明。
將每個 AdMob 應用程式連結至對應的 Firebase 應用程式。
這個步驟為選用,但強烈建議執行。進一步瞭解啟用使用者指標,以及將 AdMob 應用程式連結至 Firebase 的好處。
針對每個平台變化版本,請在 AdMob 帳戶的「Apps」資訊主頁中完成下列兩個步驟:
啟用使用者指標,AdMob 就能在您的 AdMob 帳戶中處理及顯示精選數據分析資料。此外,您也必須完成這項設定,才能將 AdMob 應用程式連結至 Firebase。
將AdMob應用程式連結至現有的 Firebase 專案和對應的 Firebase 應用程式。
請務必輸入與 Firebase 應用程式相同的套件名稱 (Android) 或軟體包 ID (iOS)。如要查看 Firebase 應用程式的套件名稱或軟體包 ID,請前往
>「專案設定」,然後查看「Your apps」資訊卡。
步驟 2:在應用程式中加入 AdMob 應用程式 ID
Android
請在應用程式的 AndroidManifest.xml 檔案中,加入 <meta-data> 標記,並填入 AdMob 應用程式 ID,如下所示。
<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
本節步驟示範如何在 iOS 專案中加入 Google Mobile Ads C++ SDK。
執行下列指令,取得 CocoaPods 1 以上版本:
sudo gem install cocoapods --pre從解壓縮的 SDK 新增 Google Mobile Ads Pod。
如果還沒有 Podfile,請建立一個:
cd YOUR_APP_DIRECTORYpod init在 Podfile 中,新增 Google Mobile Ads C++ SDK 的 Pod:
pod 'Google-Mobile-Ads-SDK'安裝 Pod,然後在 Xcode 中開啟
.xcworkspace檔案。pod installopen YOUR_APP.xcworkspace將 Firebase C++ SDK 的下列框架新增至專案:
xcframeworks/firebase.xcframeworkxcframeworks/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 說明文件中的詳細導入操作說明。
橫幅
顯示在裝置畫面頂端或底部的矩形廣告
使用者操作應用程式時,橫幅廣告會持續停留在畫面上,並能定時自動更新內容。對剛接觸行動廣告的新手來說,這是很好的入門選擇。
導入橫幅廣告插頁式
完全覆蓋應用程式介面的全螢幕廣告,使用者需自行關閉
插頁式廣告最適合出現在應用程式執行流程中的自然停頓點,例如遊戲關卡之間或完成任務後。
導入插頁式廣告獎勵廣告
這類廣告會在使用者看完短片、與可試玩廣告互動,或完成問卷調查後提供獎勵
獎勵廣告 (或「獎勵制」廣告) 可協助您透過免付費玩遊戲的使用者營利。
其他感興趣的主題
探索其他評估指標的方法,並將 Firebase 功能與 AdMob 整合。
查看使用者指標和數據分析資料
Mobile Ads SDK 初始化後,會自動開始記錄應用程式的數據分析事件和使用者屬性。您不必在應用程式中加入任何額外程式碼或導入任何廣告,就能查看這項資料。你可以在下列位置查看這項數據分析資料:
在 AdMob 帳戶的「使用者指標」資訊卡 (「首頁」或「應用程式」資訊主頁) 中,您可以查看根據收集到的數據分析資料,整理出的使用者指標,例如平均工作階段持續時間、每位使用者的平均收益和留存率。
在 Firebase 控制台的「Analytics」(數據分析) 資訊主頁中,您可以查看匯總統計資料和重要指標摘要。如果新增 Google Analytics 的 Firebase SDK,您也可以在 Firebase 控制台中標示廣告活動的轉換,以及建立自訂目標對象。
請注意,為了更準確地呈現 ARPU 和 ARPPU 指標,您可能需要在這些指標的收益計算中,納入名為 ecommerce_purchase 的 Analytics 自訂事件資料 (瞭解詳情)。
(選用) 使用 Google Analytics 和 Firebase 的更多功能
善用更多商機和功能,提高應用程式的營利成效和使用者參與度:
新增並使用 Google Analytics 專用 Firebase SDK
在應用程式中導入自訂事件記錄。
標示自訂廣告活動的轉換。
在 ARPU 和 ARPPU 指標的收益計算中,納入
ecommerce_purchase事件資料。
如要瞭解詳情,請參閱搭配 AdMob 應用程式使用 Google Analytics 和 Firebase 的指南。
在應用程式中使用其他 Firebase 產品
新增 Google Analytics 專用 Firebase SDK 後,您可以使用其他 Firebase 產品,對應用程式中的廣告進行最佳化。
Remote Config 可讓您變更應用程式的行為和外觀,而不必發布應用程式更新。
A/B Testing 可讓您測試應用程式 UI、功能或參與度廣告活動的變更,瞭解這些變更是否會影響重要指標 (例如收益和留存率),然後再廣泛推出。