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++ thông qua AdMob mà không sử dụng Firebase. Nếu bạn dự định đưa Firebase vào ứng dụng của mình (hoặc bạn đang cân nhắc việc đó), hãy đọc bài viết AdMob với Firebase trong tài liệu 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++ Quảng cáo của Google trên thiết bị di động vào ứng dụng. 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 của Google trên thiết bị di động bao bọc SDK iOS và Android Quảng cáo của Google trên thiết bị di động,
và chỉ có trên các nền tảng đó. SDK C++ Quảng cáo của Google trên thiết bị di động sử dụng
các cấu trúc Firebase C++ để hỗ trợ các thao tác không đồng bộ, vì vậy, SDK này nằm
trong không gian tên firebase::gma.
Điều kiện tiên quyết
Android
- Sử dụng 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:
minSdkVersiontừ 16 trở lêncompileSdkVersiontừ 28 trở lên
iOS
- Sử dụng Xcode 13 trở lên
- Nhắm đến iOS 10.0 trở lên
Thiết lập ứng dụng trong tài khoản AdMob
Làm theo các bước sau để đăng ký ứng dụng của bạn dưới dạng ứng dụng AdMob:
Đăng nhập vào hoặc đăng ký cho tài khoản AdMob.
Đăng ký ứng dụng của bạn với AdMob. để 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 của Google trên thiết bị di động
Vì SDK C++ Quảng cáo của Google trên thiết bị di động nằm trong không gian tên firebase::gma,
hãy tải SDK Firebase C++ xuống,
sau đó giải nén vào một thư mục mà bạn chọn.
SDK Firebase C++ không dành riêng cho nền tảng, nhưng yêu cầu các 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 thấy hướng dẫn về ndk-build trong
Hướng dẫnbắt đầu sử dụng SDK Firebase C++
chungcủa chúng tôi để
liên kết libfirebase_app.a và libfirebase_gma.a với ứng dụng của bạn.
Trong tệp
gradle.propertiescủa dự án, hãy chỉ định vị trí của SDK đã giải nén:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDKThêm nội dung sau vào tệp
settings.gradlecủa dự án: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"Vào tệp Gradle của mô-đun (cấp ứng dụng) – thường là
app/build.gradle– hãy thêm nội dung sau đây, bao gồm cả phần phụ thuộc thư viện cho SDK C++ Quảng cáo của Google trên thiết bị di động.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 }Vào tệp
CMakeLists.txtcủ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}")Đồng bộ hoá ứng dụng để đảm bảo rằng tất cả phần phụ thuộc đều có các phiên bản cần thiết.
iOS
Các bước trong phần này là một ví dụ về cách thêm SDK C++ Quảng cáo của Google trên thiết bị di động vào dự án iOS.
Tải CocoaPods phiên bản 1 trở lên bằng cách chạy:
sudo gem install cocoapods --preThêm pod Quảng cáo của Google trên thiết bị di động từ SDK đã giải nén.
Tạo Podfile nếu bạn chưa có:
cd APP_DIRECTORYpod initVào Podfile, hãy thêm các pod cho SDK C++ Quảng cáo của Google trên thiết bị di động, SDK Nền tảng thông báo cho người dùng của Google và SDK Firebase Core tối thiểu (do GMA C++ SDK yêu cầu):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'Cài đặt các pod, sau đó mở tệp
.xcworkspacetrong Xcode.pod installopen APP.xcworkspaceThêm các khung sau đây từ SDK Firebase C++ vào dự án:
xcframeworks/firebase.xcframeworkxcframeworks/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 của Google trên thiết bị di động 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 phần Định cấu hình ứng dụng như mô tả trong hướng dẫn SDK Quảng cáo trên thiết bị di động cho Android , sau đó quay lại trang này.
iOS
Làm theo bước Cập nhật Info.plist như mô tả trong hướng dẫn SDK Quảng cáo trên thiết bị di động 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 chạy SDK C++ Quảng cáo của Google trên thiết bị di động bằng cách
gọi firebase::gma::Initialize() Lệnh gọi này sẽ chạy SDK và hoàn tất
firebase::Future sau khi chạy xong (hoặc sau thời gian chờ 30 giây
timeout). Bạn chỉ cần thực hiện việc này một lần, tốt nhất là khi khởi chạy ứng dụng.
Khi gọi Initialize(), SDK C++ Quảng cáo của Google trên thiết bị di động 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 xin người dùng ở Khu vực kinh tế Châu Âu (EEA) đồng ý, hãy đặt tất cả các cờ riêng cho từng yêu cầu (chẳng hạn như tag_for_child_directed_treatment hoặc tag_for_under_age_of_consent), hoặc hành động trước khi tải quảng cáo, đồng thời nhớ làm điều này bằng cách gọi firebase::gma::SetRequestConfiguration() trước khi chạy SDK C++ Quảng cáo của Google trên thiết bị di động. Để biết thêm thông tin, hãy xem hướng dẫn
Nhắm mục tiêu.
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 tất của lệnh gọi phương thức
Future cung cấp cho bạn một cách để xác định trạng thái hoàn tất 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 quá trình khởi chạy đã hoàn tất.
Sau khi hoàn tất, ứng dụng của bạn có thể gọi result() để lấy kết quả
AdapterInitializationStatus.
Các phương thức trả về Future có một phương thức "kết quả gần đây nhất" 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ó một phương thức tương ứng có 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ể sử 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 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 cho 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
Lúc này, bạn đã nhập xong SDK C++ Quảng cáo của Google trên thiết bị di động và sẵn sàng triển khai một quảng cáo. AdMob cung cấp nhiều định dạng quảng cáo khác nhau để bạn có thể lựa một định dạng phù hợp nhất với trải nghiệm người dùng trong ứng dụng của mình.
Biểu 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ữ lưu lại 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.
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ụ.
Được thưởng
Quảng cáo tặng thưởng cho người dùng khi họ xem những video ngắn và tương tác với cuộc khảo sát hoặc quảng cáo có thể chơi. Dùng để kiếm tiền từ các ứng dụng chơi miễn phí.