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


คู่มือเริ่มต้นใช้งานนี้มีไว้สําหรับผู้เผยแพร่โฆษณาและนักพัฒนาแอปที่ต้องการใช้ 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 App ID ลงในไฟล์ 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: เพิ่ม SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google

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

iOS

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

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

    sudo gem install cocoapods --pre
  2. เพิ่มพ็อด Google Mobile Ads จาก 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++ ได้รับการกําหนดค่าให้ใช้ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google C++

ขั้นตอนที่ 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 แสดงว่าการดำเนินการเสร็จสมบูรณ์แล้ว

นอกจากนี้ คุณยังลงทะเบียนการเรียกกลับให้แสดงเมื่อ 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เอกสารประกอบ

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

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

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

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

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

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

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

ให้รางวัล

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

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

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

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

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

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

โปรดทราบว่าเพื่อให้แสดงเมตริก 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, ฟีเจอร์ หรือแคมเปญการมีส่วนร่วมของแอปได้ เพื่อดูว่าการเปลี่ยนแปลงดังกล่าวส่งผลต่อเมตริกหลัก (เช่น รายได้และการคงผู้ใช้ไว้) หรือไม่ ก่อนเปิดตัวการเปลี่ยนแปลงในวงกว้าง