แชร์ความคิดเห็นและช่วยปรับปรุงแผนกลยุทธ์ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google โปรดทําแบบสํารวจประจําปีเกี่ยวกับ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ปี 2023 ก่อนวันที่ 5 พฤษภาคม 2023

เริ่มต้นใช้งาน

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

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

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

SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ C++ ของ Google จะรวม SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ iOS และ Android ของ Google เข้าด้วยกัน และพร้อมใช้งานบนแพลตฟอร์มเหล่านั้นเท่านั้น SDK โฆษณาในอุปกรณ์เคลื่อนที่ C++ ของ Google ใช้ Firebase C++ ที่สร้างขึ้นเพื่อรองรับการดําเนินการแบบไม่พร้อมกัน เพื่อให้อยู่ในเนมสเปซ firebase::gma

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

สิ่งที่ต้องดำเนินการก่อน

Android

  • ใช้ Android Studio 3.2 ขึ้นไป
  • ตรวจสอบว่าไฟล์บิลด์ของแอปใช้ค่าต่อไปนี้
    • minSdkVersion ตั้งแต่ 16 ขึ้นไป
    • compileSdkVersion ตั้งแต่ 28 ขึ้นไป

iOS

  • ใช้ Xcode 13 ขึ้นไป
  • กําหนดเป้าหมาย iOS 10.0 ขึ้นไป

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

ลงทะเบียนแอปของคุณเป็นแอป AdMob โดยทําตามขั้นตอนต่อไปนี้

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

  2. ลงทะเบียนแอปกับ AdMob ขั้นตอนนี้สร้างแอป AdMob ที่มีรหัสแอป AdMob ที่ไม่ซ้ํากัน ซึ่งจําเป็นสําหรับภายหลังในคู่มือนี้

ติดตั้ง SDK โฆษณา C++ บนอุปกรณ์เคลื่อนที่ของ Google

เนื่องจาก SDK โฆษณาในอุปกรณ์เคลื่อนที่ C++ ของ Google อยู่ในเนมสเปซ 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 ของไลบรารีสําหรับ C++ ของ Google Mobile Ads

      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 โดยไม่มีบริการ Firebase อื่นใด

iOS

ขั้นตอนในส่วนนี้เป็นตัวอย่างวิธีการเพิ่ม SDK โฆษณาบนอุปกรณ์เคลื่อนที่ C++ ของ 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 โดยไม่มีบริการ Firebase อื่นใด

กําหนดค่ารหัสแอป AdMob ของแอป

Android

ทําตามขั้นตอนที่ 3 ของกําหนดค่าแอปตามที่อธิบายในคู่มือ SDK โฆษณาในอุปกรณ์เคลื่อนที่ Android แล้วกลับไปที่หน้าเริ่มต้นใช้งาน C++ นี้

iOS

ทําตามขั้นตอนอัปเดต Info.plist ตามที่อธิบายไว้ในคู่มือ SDK โฆษณาในอุปกรณ์เคลื่อนที่ iOS แล้วกลับไปที่หน้าเริ่มต้นใช้งาน C++ นี้

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

ก่อนโหลดโฆษณา ให้แอปเริ่ม SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google + C ด้วยการเรียก firebase::gma::Initialize() ซึ่งจะเริ่มต้น SDK และทํา firebase::Future ให้เสร็จสมบูรณ์เมื่อการเริ่มต้นเสร็จสมบูรณ์ (หรือหลังจากหมดเวลา 30 วินาที) ขั้นตอนนี้ต้องดําเนินการเพียงครั้งเดียวเท่านั้น ขอแนะนําตัวเปิดแอป

โฆษณาอาจโหลดล่วงหน้าโดย SDK โฆษณา C++ บนอุปกรณ์เคลื่อนที่ของ Google หรือ SDK ของพาร์ทเนอร์สื่อกลางในการเรียก Initialize() หากต้องการขอความยินยอมจากผู้ใช้ในเขตเศรษฐกิจยุโรป (EEA) ให้ตั้งค่าแฟล็กเฉพาะคําขอ (เช่น tag_for_child_directed_treatment หรือ tag_for_under_age_of_consent) หรือดําเนินการก่อนโหลดโฆษณา โปรดตรวจสอบว่าได้เปิดใช้ firebase::gma::SetRequestConfiguration() ก่อนเริ่มต้น SDK โฆษณา C++ ของ Google Mobile ดูข้อมูลเพิ่มเติมได้ในคู่มือการกําหนดเป้าหมาย

ตัวอย่างวิธีโทรหา 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.
  }
}

เลือกรูปแบบโฆษณา

มีการนําเข้า SDK โฆษณา C++ ของ Google Mobile และคุณพร้อมที่จะใช้โฆษณาแล้ว AdMob มีรูปแบบโฆษณาที่หลากหลายเพื่อให้คุณสามารถเลือกรูปแบบที่เหมาะกับประสบการณ์ของผู้ใช้แอปมากที่สุด

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

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

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

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

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

ได้รับรางวัลแล้ว

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

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