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

พิจารณาใช้ SDK ของ iOS และ Android จาก AdMob


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

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

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

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

  • หากยังไม่มีโปรเจ็กต์ 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 รหัสแอปที่ไม่ซ้ำ ซึ่งคุณจะต้องใช้ในภายหลังในคู่มือนี้

    ระบบจะขอให้คุณเพิ่ม Mobile Ads 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 ที่มีค่าสตริงของAdMob รหัสแอป

คุณสามารถทำการเปลี่ยนแปลงนี้โดยใช้โปรแกรมได้โดยทำดังนี้

<!-- 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

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

    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 ของไลบรารีสำหรับ 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
    }
  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++ ได้รับการกำหนดค่าให้ใช้ Google Mobile Ads C++ SDK

iOS

ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีเพิ่ม Google Mobile Ads C++ SDK ลงในโปรเจ็กต์ iOS

  1. ดาวน์โหลด CocoaPods เวอร์ชัน 1 ขึ้นไปโดยเรียกใช้คำสั่งต่อไปนี้

    sudo gem install cocoapods --pre
  2. เพิ่ม Pod Google Mobile Ads จาก SDK ที่แยกไฟล์แล้ว

    1. หากคุณยังไม่มี Podfile ให้สร้างโดยเรียกใช้คำสั่งต่อไปนี้

      cd YOUR_APP_DIRECTORY
      pod init
    2. เพิ่มพ็อดสำหรับ Google Mobile Ads C++ SDK ลงใน Podfile ดังนี้

      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++ ได้รับการกำหนดค่าให้ใช้ Google Mobile Ads C++ SDK

ขั้นตอนที่ 4: เริ่มต้นใช้งาน Google Mobile Ads SDK

ก่อนโหลดโฆษณา ให้เริ่มต้น 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 แสดงว่าการดำเนินการเสร็จสมบูรณ์ เรียบร้อยแล้ว

นอกจากนี้ คุณยังลงทะเบียนฟังก์ชันเรียกกลับให้เรียกใช้เมื่อ 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 จะเริ่มบันทึก เหตุการณ์การวิเคราะห์และ พร็อพเพอร์ตี้ผู้ใช้ จากแอปโดยอัตโนมัติ คุณสามารถดูข้อมูลนี้ได้โดยไม่ต้องเพิ่มโค้ดใดๆ ลงในแอป หรือติดตั้งใช้งานโฆษณา คุณดูข้อมูลวิเคราะห์นี้ได้ที่ตำแหน่งต่อไปนี้

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

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

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

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

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

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

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

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

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