Bắt đầu

Hướng dẫn này dành cho những nhà xuất bản muốn kiếm tiền từ ứng dụng C++ bằng AdMob mà không cần sử dụng Firebase. Nếu bạn dự định đưa Firebase vào ứng dụng của mình (hoặc nếu bạn đang cân nhắc việc này), hãy xem phiên bản AdMob với Firebase trong hướng dẫn này.

Bước đầu tiên để hiển thị quảng cáo và tạo doanh thu là tích hợp SDK C++ của quảng cáo trên thiết bị di động của Google. Sau khi tích hợp SDK, bạn có thể chọn một định dạng quảng cáo (chẳng hạn như quảng cáo xen kẽ hoặc quảng cáo có tặng thưởng) rồi thực hiện theo các bước để triển khai định dạng đó.

SDK C++ quảng cáo trên thiết bị di động của Google bao gồm các SDK dành cho iOS và Android của quảng cáo trên thiết bị di động của Google và chỉ có sẵn trên các nền tảng đó. SDK C++ dành cho quảng cáo trên thiết bị di động của Google sử dụng cấu trúc C++ của Firebase để hỗ trợ các hoạt động không đồng bộ, vì vậy, SDK này nằm trong không gian tên firebase::gma.

Nếu đây là lần đầu tiên bạn xem hướng dẫn này, bạn nên tải xuống và làm theo bằng cách sử dụng ứng dụng thử nghiệm C++ cho quảng cáo trên thiết bị di động của Google.

Điều kiện tiên quyết

Android

  • Sử dụng phiên bản Android Studio 3.2 trở lên
  • Đảm bảo rằng tệp bản dựng của ứng dụng sử dụng các giá trị sau:
    • minSdkVersion từ 16 trở lên
    • compileSdkVersion từ 28 trở lên

iOS

  • Sử dụng Xcode 13 trở lên
  • Nhắm mục tiêu đến iOS 10.0 trở lên

Thiết lập ứng dụng trong tài khoản AdMob

Đăng ký ứng dụng của bạn dưới dạng ứng dụng AdMob bằng cách hoàn tất các bước sau:

  1. Đăng nhập vào hoặc đăng ký tài khoản AdMob.

  2. Đăng ký ứng dụng của bạn với AdMob Bước này sẽ tạo ra một ứng dụng AdMob có Mã ứng dụng AdMob riêng biệt mà bạn sẽ cần dùng trong phần sau của hướng dẫn này.

Cài đặt SDK C++ quảng cáo trên thiết bị di động của Google

Vì SDK C++ của quảng cáo trên thiết bị di động của Google nằm trong vùng chứa tên firebase::gma, hãy tải SDK C++ của Firebase xuống, rồi giải nén thư mục đó vào thư mục bạn chọn.

Firebase C++ SDK không dành riêng cho nền tảng nhưng yêu cầu cấu hình thư viện dành riêng cho nền tảng.

Android

Bạn nên sử dụng CMake, nhưng bạn có thể tìm hướng dẫn dành cho ndk-build trong Hướng dẫn bắt đầu sử dụng SDK C++ của Firebase chung để liên kết libfirebase_app.alibfirebase_gma.a với ứng dụng của bạn.

  1. Trong tệp gradle.properties của dự án, hãy chỉ định vị trí của SDK đã giải nén:

    systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
    
  2. Trong tệp settings.gradle của dự án, hãy thêm nội dung sau:

    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. Trong tệp Gradle (cấp ứng dụng) của mô-đun (thường là app/build.gradle), hãy thêm nội dung sau, bao gồm phần phụ thuộc thư viện cho SDK C++ quảng cáo trên thiết bị di động của 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. Trong tệp CMakeLists.txt của dự án, hãy thêm nội dung sau.

    # 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. Đồng bộ hoá ứng dụng để đảm bảo rằng tất cả phần phụ thuộc đều có phiên bản cần thiết.

iOS

Các bước trong phần này là ví dụ về cách thêm SDK C++ quảng cáo trên thiết bị di động của Google vào dự án iOS của bạn.

  1. Tải CocoaPods phiên bản 1 trở lên bằng cách chạy:

    sudo gem install cocoapods --pre
    
  2. Thêm nhóm Quảng cáo trên thiết bị di động của Google từ SDK đã giải nén.

    1. Tạo Podfile nếu bạn chưa có:

      cd APP_DIRECTORY
      pod init
      
    2. Vào Podfile của bạn, hãy thêm các nhóm cho SDK C++ quảng cáo trên thiết bị di động của Google, SDK Nền tảng thông báo cho người dùng của Google và SDK cốt lõi Firebase tối thiểu (theo yêu cầu của SDK C++ của GMA):

      pod 'Firebase/CoreOnly'
      pod 'Google-Mobile-Ads-SDK'
      pod 'GoogleUserMessagingPlatform'
      
    3. Cài đặt các nhóm, sau đó mở tệp .xcworkspace trong Xcode.

      pod install
      open APP.xcworkspace
      
    4. Thêm các khung sau từ SDK C++ của Firebase vào dự án:

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

Bạn đã hoàn tất! Ứng dụng C++ của bạn được định cấu hình để sử dụng SDK C++ quảng cáo trên thiết bị di động của Google mà không cần bất kỳ dịch vụ Firebase nào khác.

Định cấu hình mã ứng dụng AdMob của ứng dụng

Android

Làm theo bước 3 của bài viết Định cấu hình ứng dụng như mô tả trong hướng dẫn Android về SDK quảng cáo trên thiết bị di động, sau đó quay lại trang này.

iOS

Làm theo bước Cập nhật tệp Info.plist như mô tả trong Hướng dẫn về SDK quảng cáo trên thiết bị di động dành cho iOS, sau đó quay lại trang này.

Chạy SDK Quảng cáo của Google trên thiết bị di động

Trước khi tải quảng cáo, hãy để ứng dụng của bạn khởi chạy SDK C++ của Quảng cáo của Google trên thiết bị di động bằng cách gọi firebase::gma::Initialize() để khởi chạy SDK và hoàn tất firebase::Future sau khi quá trình khởi chạy hoàn tất (hoặc sau khi hết thời gian chờ 30 giây). Bạn chỉ cần thực hiện việc này một lần, tốt nhất là khi bắt đầu chạy ứng dụng.

Khi gọi Initialize(), SDK C++ của quảng cáo trên thiết bị di động của Google hoặc SDK của đối tác dàn xếp có thể tải trước quảng cáo. Nếu bạn cần có sự đồng ý của người dùng ở Khu vực kinh tế Châu Âu (EEA), hãy đặt bất kỳ cờ theo yêu cầu cụ thể nào (chẳng hạn như tag_for_child_directed_treatment hoặc tag_for_under_age_of_consent). Nếu không, bạn có thể thực hiện việc này trước khi tải quảng cáo, hãy nhớ gọi firebase::gma::SetRequestConfiguration() trước khi khởi chạy SDK C++ quảng cáo trên thiết bị di động của Google. Để biết thêm thông tin, hãy xem hướng dẫn Nhắm mục tiêu của chúng tôi.

Dưới đây là ví dụ về cách gọi 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.
}

Sử dụng Future để theo dõi trạng thái hoàn thành của lệnh gọi phương thức

Future cung cấp cho bạn cách xác định trạng thái hoàn thành của các lệnh gọi phương thức không đồng bộ.

Ví dụ: khi ứng dụng của bạn gọi firebase::gma::Initialize(), một firebase::Future mới sẽ được tạo và trả về. Sau đó, ứng dụng của bạn có thể thăm dò status() của Future để xác định thời điểm hoàn tất quá trình khởi chạy. Sau khi hoàn tất, ứng dụng của bạn có thể gọi result() để lấy AdapterInitializationStatus thu được.

Các phương thức trả về Future có phương thức "kết quả cuối cùng" tương ứng mà ứng dụng có thể sử dụng để truy xuất Future gần đây nhất cho một hành động nhất định. Ví dụ: firebase::gma::Initialize() có phương thức tương ứng tên là firebase::gma::InitializeLastResult(). Phương thức này trả về một Future mà ứng dụng của bạn có thể dùng để kiểm tra trạng thái của lệnh gọi gần đây nhất đến firebase::gma::Initialize().

Nếu trạng thái của Future là hoàn tất và mã lỗi của nó là firebase::gma::kAdErrorCodeNone, thì thao tác đã hoàn tất thành công.

Bạn cũng có thể đăng ký các lệnh gọi lại để được gọi khi Future hoàn tất. Trong một số trường hợp, lệnh gọi lại sẽ chạy trong một luồng khác, vì vậy, hãy đảm bảo mã của bạn an toàn với luồng. Đoạn mã này sử dụng con trỏ hàm cho lệnh gọi lại:

// 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.
  }
}

Chọn định dạng quảng cáo

SDK C++ quảng cáo trên thiết bị di động của Google hiện đã được nhập và bạn có thể triển khai quảng cáo. AdMob cung cấp một số định dạng quảng cáo nên bạn có thể chọn một định dạng phù hợp nhất với trải nghiệm người dùng của ứng dụng.

Quảng cáo hình chữ nhật xuất hiện ở đầu hoặc cuối màn hình thiết bị. Quảng cáo biểu ngữ vẫn hiển thị trên màn hình trong khi người dùng tương tác với ứng dụng, và có thể tự động làm mới sau một khoảng thời gian nhất định. Nếu bạn mới sử dụng quảng cáo trên thiết bị di động, thì đây là loại quảng cáo rất phù hợp để bắt đầu.

Triển khai quảng cáo biểu ngữ

Quảng cáo xen kẽ

Quảng cáo toàn màn hình che phủ giao diện của một ứng dụng cho đến khi người dùng đóng lại. Bạn nên sử dụng quảng cáo xen kẽ tại các điểm dừng tự nhiên trong luồng thực thi của ứng dụng, chẳng hạn như giữa các cấp độ của trò chơi hoặc ngay sau khi hoàn thành một nhiệm vụ.

Triển khai quảng cáo xen kẽ

Được thưởng

Quảng cáo tặng thưởng cho người dùng khi họ xem video ngắn cũng như tương tác với quảng cáo có thể chơi và bản khảo sát. Dùng để kiếm tiền từ các ứng dụng chơi miễn phí.

Triển khai quảng cáo có tặng thưởng