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

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


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

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

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

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

  • หากยังไม่มีโปรเจ็กต์ 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. เพิ่ม Google Mobile Ads Pod จาก SDK ที่แตกไฟล์แล้ว

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

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

      pod 'Google-Mobile-Ads-SDK'
    3. ติดตั้ง Pod แล้วเปิดไฟล์ .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

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

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

ติดตั้งใช้งานโฆษณาแบนเนอร์

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

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

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

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

ให้รางวัล

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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