本快速入門指南適用於想使用 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、功能或參與度廣告活動所做的變更,瞭解變更是否會影響重要指標 (例如收益和留存率),再廣泛推出變更。