คู่มือนี้เหมาะสำหรับผู้เผยแพร่โฆษณาที่ต้องการสร้างรายได้จากแอป C++ ด้วย AdMob โดยไม่ใช้ Firebase หากคุณวางแผนที่จะรวม Firebase ไว้ในแอปหรือกำลัง พิจารณาที่จะทำเช่นนั้น โปรดดูคู่มือเวอร์ชัน AdMob กับ Firebase แทน
ขั้นตอนแรกสู่การแสดงโฆษณาและสร้างรายได้คือการผสานรวม Google Mobile Ads C++ SDK เข้ากับแอป เมื่อผสานรวม SDK เรียบร้อยแล้ว คุณจะเลือกรูปแบบโฆษณา เช่น โฆษณาคั่นระหว่างหน้าหรือโฆษณาที่มีการให้รางวัล แล้วทำตามขั้นตอนเพื่อติดตั้งใช้งานได้
Google Mobile Ads C++ SDK เป็น Wrapper ของ Google Mobile Ads SDK สำหรับ iOS และ Android และใช้ได้เฉพาะในแพลตฟอร์มเหล่านั้น Google Mobile Ads C++ SDK ใช้โครงสร้าง Firebase C++ เพื่อรองรับการทำงานแบบไม่พร้อมกัน จึงอยู่ในเนมสเปซ firebase::gma
หากคุณเพิ่งอ่านคู่มือนี้เป็นครั้งแรก เราขอแนะนำให้คุณ ดาวน์โหลดและทำตามขั้นตอนโดยใช้แอปทดสอบ Google Mobile Ads C++
ข้อกำหนดเบื้องต้น
Android
- ใช้ Android Studio 3.2 ขึ้นไป
- ตรวจสอบว่าไฟล์บิลด์ของแอปใช้ค่าต่อไปนี้
minSdkVersionตั้งแต่ 16 ขึ้นไปcompileSdkVersionตั้งแต่ 28 ขึ้นไป
iOS
- ใช้ Xcode 13 ขึ้นไป
- กำหนดเป้าหมายเป็น iOS 10.0 ขึ้นไป
ตั้งค่าแอปในบัญชี AdMob
ลงทะเบียนแอปเป็นแอป AdMob โดยทำตามขั้นตอนต่อไปนี้
ลงทะเบียนแอปกับ AdMob ขั้นตอนนี้จะสร้างแอป AdMob ที่มีรหัสแอป AdMob ที่ไม่ซ้ำกัน ซึ่งจำเป็นต้องใช้ในภายหลังในคู่มือนี้
ติดตั้ง Google Mobile Ads C++ SDK
เนื่องจาก Google Mobile Ads C++ SDK อยู่ในเนมสเปซ firebase::gma
ให้ดาวน์โหลด Firebase C++ SDK
แล้วแตกไฟล์ไปยังไดเรกทอรีที่คุณเลือก
Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่ต้องมีการกำหนดค่าไลบรารีที่เจาะจงแพลตฟอร์ม
Android
เราขอแนะนำให้ใช้ CMake แต่คุณสามารถดูวิธีการสำหรับ ndk-build ใน
คู่มือเริ่มต้นใช้งาน Firebase C++ SDK
ทั่วไปเพื่อ
ลิงก์ libfirebase_app.a และ libfirebase_gma.a กับแอป
ระบุตำแหน่งของ SDK ที่แตกไฟล์แล้วในไฟล์
gradle.propertiesของโปรเจ็กต์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ซึ่งรวมถึงทรัพยากร Dependency ของไลบรารีสำหรับ Google Mobile Ads C++ SDKandroid.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}")ซิงค์แอปเพื่อให้ทรัพยากร Dependency ทั้งหมดมีเวอร์ชันที่จำเป็น
iOS
ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่ม Google Mobile Ads C++ SDK ลงในโปรเจ็กต์ iOS
รับ CocoaPods เวอร์ชัน 1 ขึ้นไปโดยเรียกใช้คำสั่งต่อไปนี้
sudo gem install cocoapods --preเพิ่ม Pod ของ Google Mobile Ads จาก SDK ที่แตกไฟล์แล้ว
หากคุณยังไม่มี Podfile ให้สร้างโดยเรียกใช้คำสั่งต่อไปนี้
cd APP_DIRECTORYpod initเพิ่ม Pod สำหรับ Google Mobile Ads C++ SDK, SDK สำหรับ User Messaging Platform ของ Google และ Firebase Core SDK ขั้นต่ำ (จำเป็นสำหรับ GMA C++ SDK) ลงใน Podfile
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'ติดตั้ง Pod แล้วเปิดไฟล์
.xcworkspaceใน Xcodepod installopen APP.xcworkspaceเพิ่มเฟรมเวิร์กต่อไปนี้จาก Firebase C++ SDK ลงในโปรเจ็กต์
xcframeworks/firebase.xcframeworkxcframeworks/firebase_gma.xcframework
เรียบร้อยแล้ว แอป C++ ได้รับการกำหนดค่าให้ใช้ Google Mobile Ads C++ SDK โดยไม่ต้องใช้บริการอื่นๆ ของ Firebase
กำหนดค่ารหัสแอป AdMob ของแอป
Android
ทำตามขั้นตอนที่ 3 ของ กำหนดค่าแอปตามที่อธิบายไว้ในคู่มือ Mobile Ads SDK สำหรับ Android แล้วกลับมาที่หน้านี้
iOS
ทำตามขั้นตอนอัปเดต Info.plist ตามที่อธิบายไว้ในคู่มือMobile Ads SDK สำหรับ iOS แล้วกลับมา ที่หน้านี้
เริ่มต้น Google Mobile Ads SDK
ก่อนโหลดโฆษณา ให้แอปเริ่มต้น Google Mobile Ads C++ SDK โดยเรียกใช้ firebase::gma::Initialize() ซึ่งจะเริ่มต้น SDK และทำให้ firebase::Future เสร็จสมบูรณ์เมื่อการเริ่มต้นเสร็จสมบูรณ์ (หรือหลังจากหมดเวลา 30 วินาที) คุณต้องทำขั้นตอนนี้เพียงครั้งเดียว ซึ่งควรทำเมื่อเปิดแอป
Google Mobile Ads C++ SDK หรือ SDK ของพาร์ทเนอร์สื่อกลางอาจโหลดโฆษณาไว้ล่วงหน้าเมื่อเรียกใช้ Initialize() หากคุณต้องขอความยินยอมจากผู้ใช้ในเขตเศรษฐกิจยุโรป (EEA) ตั้งค่าธงคำขอเฉพาะใดๆ (เช่น tag_for_child_directed_treatment หรือ tag_for_under_age_of_consent) หรือดำเนินการอื่นๆ ก่อนโหลดโฆษณา โปรดตรวจสอบว่าได้ดำเนินการดังกล่าวโดยเรียกใช้ firebase::gma::SetRequestConfiguration() ก่อนที่จะเริ่มต้น Google Mobile Ads C++ SDK ดูข้อมูลเพิ่มเติมได้ใน
คู่มือการกำหนดเป้าหมาย
ตัวอย่างวิธีเรียกใช้ 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 ใหม่ จากนั้นแอปจะสำรวจ status() ของ Future เพื่อกำหนดเวลาที่การเริ่มต้นเสร็จสมบูรณ์
เมื่อเสร็จสมบูรณ์แล้ว แอปจะเรียกใช้ 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.
}
}
เลือกรูปแบบโฆษณา
ตอนนี้คุณได้นำเข้า Google Mobile Ads C++ SDK แล้ว และพร้อมที่จะติดตั้งใช้งานโฆษณา AdMob มีโฆษณาหลากหลายรูปแบบให้คุณเลือกรูปแบบที่เหมาะกับประสบการณ์ของผู้ใช้ในแอปมากที่สุด
แบนเนอร์
โฆษณารูปสี่เหลี่ยมผืนผ้าที่ปรากฏที่ด้านบนหรือด้านล่างของหน้าจออุปกรณ์ โฆษณาแบนเนอร์จะปรากฏบนหน้าจอขณะที่ผู้ใช้โต้ตอบกับแอป และจะรีเฟรชโดยอัตโนมัติหลังจากเวลาผ่านไปช่วงหนึ่ง หากคุณเพิ่งเริ่มใช้โฆษณาบนอุปกรณ์เคลื่อนที่ โฆษณาแบนเนอร์เป็นจุดเริ่มต้นที่ดี
โฆษณาคั่นระหว่างหน้า
โฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิด โฆษณาประเภทนี้เหมาะที่สุดที่จะใช้ในช่วงหยุดชั่วคราวตามปกติในขณะที่แอปทำงาน เช่น ระหว่างด่านของเกม หรือหลังจากที่งานเสร็จสมบูรณ์
ติดตั้งใช้งานโฆษณาคั่นระหว่างหน้า
ได้รับรางวัลแล้ว
โฆษณาที่ให้รางวัลแก่ผู้ใช้สำหรับการดูวิดีโอสั้นๆ และโต้ตอบกับโฆษณาที่เล่นได้และแบบสำรวจ ใช้เพื่อสร้างรายได้จากแอปที่เล่นฟรี