เริ่มต้นใช้งาน AdMob ในโปรเจ็กต์ C++

คู่มือเริ่มใช้งานฉบับย่อนี้มีไว้สำหรับผู้เผยแพร่โฆษณาและนักพัฒนาซอฟต์แวร์ที่ต้องการใช้ AdMob เพื่อสร้างรายได้จากแอปที่สร้างด้วย Firebase หากคุณไม่มีแผนที่จะรวม Firebase ไว้ในแอป ให้ไปที่คู่มือ AdMob แบบสแตนด์อโลนแทน

ดูประโยชน์ทั้งหมดของการใช้ AdMob, Firebase และ Google Analytics ร่วมกัน หากยังไม่ได้ดู

หากนี่เป็นครั้งแรกที่คุณศึกษาคู่มือนี้ เราขอแนะนำให้คุณดาวน์โหลดและติดตามโดยใช้แอปทดสอบ C++ SDK ของ Google Mobile Ads

ก่อนเริ่มต้น

  • หากยังไม่มีโปรเจ็กต์ Firebase และแอป Firebase ให้ทำตาม คู่มือเริ่มต้นใช้งาน Firebase เพิ่ม Firebase ลงในโปรเจ็กต์ C++

  • ตรวจสอบว่าเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase แล้ว โดยทำดังนี้

    • หากคุณกำลังสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้ Google Analytics ในระหว่างกระบวนการสร้างโปรเจ็กต์

    • หากมีโปรเจ็กต์ Firebase เดิมที่ไม่ได้เปิดใช้ Google Analytics คุณเปิดใช้ Google Analytics ได้จากแท็บการผสานรวมของ > การตั้งค่าโปรเจ็กต์

ขั้นตอนที่ 1: ตั้งค่าแอปในบัญชี AdMob

  1. ลงทะเบียนแอปแต่ละแพลตฟอร์มเป็นแอป AdMob

    1. ลงชื่อเข้าใช้หรือลงชื่อสมัครใช้บัญชี AdMob

    2. ลงทะเบียนแอปแต่ละเวอร์ชันในแพลตฟอร์มแต่ละเวอร์ชันกับ AdMob ขั้นตอนนี้จะสร้างแอป AdMob ที่มีรหัสแอป AdMob ที่ไม่ซ้ำกันซึ่งคุณจะต้องใช้ภายหลังในคู่มือนี้

    ระบบจะขอให้คุณเพิ่ม SDK โฆษณาในอุปกรณ์เคลื่อนที่ลงในแอป ดูวิธีการโดยละเอียดสำหรับงานนี้ได้ภายหลังในคู่มือนี้

  2. ลิงก์แอป AdMob แต่ละแอปของคุณกับแอป Firebase ที่เกี่ยวข้อง

    ขั้นตอนนี้เป็นขั้นตอนที่ไม่บังคับ แต่ขอแนะนำอย่างยิ่ง ดูข้อมูลเพิ่มเติมเกี่ยวกับประโยชน์ของการเปิดใช้เมตริกผู้ใช้และลิงก์แอป AdMob กับ Firebase

    สําหรับแต่ละแพลตฟอร์ม ให้ทํา 2 ขั้นตอนต่อไปนี้ในแดชบอร์ดแอปของบัญชี AdMob

    1. เปิดใช้ เมตริกผู้ใช้ เพื่อให้ AdMob ประมวลผลและแสดงข้อมูลการวิเคราะห์ที่ได้รับการดูแลจัดการในบัญชี AdMob ของคุณ นอกจากนี้ ยังเป็นการตั้งค่าที่จำเป็นสำหรับการลิงก์ แอป AdMob กับ Firebase ด้วย

    2. ลิงก์แอป AdMob กับโปรเจ็กต์ Firebase ที่มีอยู่และแอป Firebase ที่เกี่ยวข้อง

      ตรวจสอบว่าคุณป้อนชื่อแพ็กเกจ (Android) หรือรหัสชุด (iOS) เดียวกันกับที่ป้อนสำหรับแอป Firebase ดูชื่อแพ็กเกจหรือรหัสชุดของแอป Firebase ในการ์ดแอปของคุณในการ์ด > การตั้งค่าโปรเจ็กต์

ขั้นตอนที่ 2: เพิ่มรหัสแอป AdMob ลงในแอป

Android

เพิ่มรหัสแอป AdMob ลงในไฟล์ 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 ที่มีค่าสตริงเป็น App ID ของ AdMob

คุณทำการเปลี่ยนแปลงนี้แบบเป็นโปรแกรมได้โดยทำดังนี้

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

หรือจะแก้ไขในเครื่องมือแก้ไขรายการพร็อพเพอร์ตี้ก็ได้ ดังนี้

เครื่องมือแก้ไขรายการพร็อพเพอร์ตี้

ขั้นตอนที่ 3: เพิ่ม SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google

เนื่องจาก C++ SDK ของ Google Mobile Ads อยู่ในเนมสเปซ firebase::gma โปรดดาวน์โหลด Firebase C++ SDK แล้วแตกไฟล์ไปยังไดเรกทอรีที่คุณต้องการ

Firebase C++ SDK ไม่ได้เจาะจงแพลตฟอร์ม แต่ต้องมีการกำหนดค่าไลบรารีเฉพาะแพลตฟอร์ม

Android

  1. ระบุตำแหน่งของ SDK ที่แตกแล้วในไฟล์ gradle.properties ของโปรเจ็กต์ ดังนี้

    systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK
  2. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ 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"
  3. ในไฟล์ Gradle ของโมดูล (ระดับแอป) (ปกติคือ app/build.gradle) ให้เพิ่มเนื้อหาต่อไปนี้ ซึ่งรวมถึงทรัพยากร Dependency ของไลบรารีสำหรับ C++ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google

    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
    }
  4. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ 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}")
  5. ซิงค์แอปเพื่อให้ทรัพยากร Dependency ทั้งหมดมีเวอร์ชันที่จำเป็น

เรียบร้อยแล้ว แอป C++ ของคุณได้รับการกำหนดค่าให้ใช้ C++ SDK สำหรับโฆษณาบนอุปกรณ์เคลื่อนที่ของ Google

iOS

ขั้นตอนในส่วนนี้เป็นตัวอย่างของวิธีเพิ่ม C++ SDK โฆษณาบนอุปกรณ์เคลื่อนที่ของ Google ลงในโปรเจ็กต์ iOS

  1. รับ CocoaPods เวอร์ชัน 1 ขึ้นไปโดยการเรียกใช้:

    sudo gem install cocoapods --pre
  2. เพิ่มพ็อดโฆษณาบนอุปกรณ์เคลื่อนที่ของ Google จาก SDK ที่แตกแล้ว

    1. สร้าง Podfile หากคุณยังไม่มี:

      cd YOUR_APP_DIRECTORY
      pod init
    2. ไปที่ Podfile ให้เพิ่มพ็อดสำหรับ SDK ของ C++ โฆษณาบนอุปกรณ์เคลื่อนที่ของ Google ดังนี้

      pod 'Google-Mobile-Ads-SDK'
    3. ติดตั้งพ็อด แล้วเปิดไฟล์ .xcworkspace ใน Xcode

      pod install
      open YOUR_APP.xcworkspace
    4. เพิ่มเฟรมเวิร์กต่อไปนี้จาก Firebase C++ SDK ลงในโปรเจ็กต์

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

เรียบร้อยแล้ว แอป C++ ของคุณได้รับการกำหนดค่าให้ใช้ C++ SDK สำหรับโฆษณาบนอุปกรณ์เคลื่อนที่ของ Google

ขั้นตอนที่ 4: เริ่มต้น SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google

ก่อนโหลดโฆษณา ให้เริ่มต้น Mobile Ads SDK โดยเรียกใช้ firebase::gma::Initialize()

การเรียกใช้นี้จะแสดง 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 ใหม่และส่งคืน จากนั้นแอปของคุณจะสามารถสำรวจ 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.
  }
}

ขั้นตอนที่ 5: เลือกรูปแบบโฆษณาที่จะใช้ในแอป

AdMob มีรูปแบบโฆษณาต่างๆ มากมาย คุณจึงสามารถเลือกรูปแบบที่เหมาะกับประสบการณ์ของผู้ใช้ในแอปมากที่สุด คลิกปุ่มเพื่อดูรูปแบบโฆษณาเพื่อดูรายละเอียดวิธีการใช้งานในเอกสาร AdMob

โฆษณาสี่เหลี่ยมผืนผ้าที่ปรากฏด้านบนหรือด้านล่างของหน้าจออุปกรณ์

โฆษณาแบนเนอร์จะแสดงบนหน้าจอขณะที่ผู้ใช้โต้ตอบกับแอป และจะรีเฟรชโดยอัตโนมัติได้หลังจากผ่านไประยะหนึ่ง หากคุณยังไม่คุ้นเคยกับการโฆษณาบนอุปกรณ์เคลื่อนที่ ก็เป็นจุดเริ่มต้นที่ดี

ใช้โฆษณาแบนเนอร์

โฆษณาคั่นระหว่างหน้า

โฆษณาแบบเต็มหน้าจอที่ครอบคลุมอินเทอร์เฟซของแอปจนกว่าผู้ใช้จะปิด

โฆษณาคั่นระหว่างหน้าจะใช้ได้ผลดีที่สุดในการหยุดชั่วคราวระหว่างการดำเนินการของแอป เช่น ระหว่างเลเวลเกมหรือหลังจากที่ทำงานเสร็จ

ติดตั้งโฆษณาคั่นระหว่างหน้า

ให้รางวัล

โฆษณาที่ให้รางวัลผู้ใช้หลังจากดูวิดีโอสั้นๆ และโต้ตอบกับโฆษณาที่เล่นได้และแบบสำรวจ

โฆษณาที่มีการให้รางวัล (หรือ "ตามรางวัล") ช่วยสร้างรายได้จากผู้ใช้ที่เล่นเกมฟรี

ใช้โฆษณาที่มีการให้รางวัล

หัวข้ออื่นๆ ที่สนใจ

ดูเมตริกผู้ใช้และข้อมูลวิเคราะห์

หลังจากเริ่มต้นแล้ว Mobile Ads SDK จะเริ่มบันทึกเหตุการณ์และพร็อพเพอร์ตี้ผู้ใช้ของ Analytics จากแอปของคุณโดยอัตโนมัติ คุณสามารถดูข้อมูลนี้ได้โดยไม่ต้องเพิ่มโค้ดใดๆ ลงในแอปหรือติดตั้งใช้งานโฆษณาใดๆ คุณดูข้อมูลวิเคราะห์นี้ได้โดยทำดังนี้

โปรดทราบว่าเพื่อให้แสดงเมตริก ARPU และ ARPPU ได้ดีขึ้น คุณอาจต้องรวมข้อมูลจากเหตุการณ์ที่กำหนดเองของ Analytics ที่เรียกว่า ecommerce_purchase ในการคำนวณรายได้สำหรับเมตริกเหล่านี้ (ดูวิธีการ)

(ไม่บังคับ) ใช้ฟีเจอร์อื่นๆ ของ Google Analytics และ Firebase

ใช้ประโยชน์จากโอกาสและฟีเจอร์เพิ่มเติมเพื่อปรับปรุงการสร้างรายได้จากแอปและการมีส่วนร่วมของผู้ใช้

  • เพิ่มและใช้ Firebase SDK สำหรับ Google Analytics

    หากต้องการดูข้อมูลเพิ่มเติม โปรดดูคู่มือการใช้ Google Analytics และ Firebase กับแอป AdMob

  • ใช้ผลิตภัณฑ์อื่นๆ ของ Firebase ในแอป

    หลังจากเพิ่ม Firebase SDK สำหรับ Google Analytics แล้ว ให้ใช้ผลิตภัณฑ์ Firebase อื่นๆ เพื่อเพิ่มประสิทธิภาพโฆษณาในแอป

    • การกำหนดค่าระยะไกลช่วยให้คุณเปลี่ยนลักษณะการทำงานและรูปลักษณ์ของแอปได้โดยไม่ต้องเผยแพร่การอัปเดตแอปสำหรับผู้ใช้ที่ใช้งานอยู่รายวันโดยไม่มีค่าใช้จ่าย

    • การทดสอบ A/B ให้คุณทดสอบการเปลี่ยนแปลงใน UI, ฟีเจอร์ หรือแคมเปญการมีส่วนร่วมของแอปเพื่อดูว่าการเปลี่ยนแปลงเหล่านั้นส่งผลต่อเมตริกหลัก (เช่น รายได้และการรักษาผู้ใช้) หรือไม่ ก่อนที่จะนำการเปลี่ยนแปลงออกในวงกว้าง