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