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 sử dụng Firebase. Nếu bạn định đưa Firebase vào ứng dụng của mình hoặc nếu bạn muốn hãy xem xét vấn đề đó—hãy xem AdMob với Firebase của phiên bản này hướng dẫn thay thế.
Bước đầu tiên để tích hợp SDK C++ của Quảng cáo trên thiết bị di động của Google vào một ứng dụng hiển thị quảng cáo và tạo ra doanh thu. 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 làm theo các bước để hãy triển khai nó.
SDK C++ dành cho quảng cáo trên thiết bị di động của Google bao bọc SDK quảng cáo trên thiết bị di động của Google dành cho iOS và Android,
và chỉ hoạt động trên các nền tảng đó. SDK C++ của quảng cáo trên thiết bị di động của Google tạo
sử dụng các cấu trúc C++ của Firebase để hỗ trợ các hoạt động không đồng bộ, vì vậy, cấu trúc 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 quy trình kiểm tra C++ cho quảng cáo trên thiết bị di động của Google ứng dụng.
Đ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êncompileSdkVersion
từ 28 trở lên
iOS
- Sử dụng Xcode 13 trở lên
- Nhắm mục tiêu phiên bả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:
Đăng nhập vào hoặc đăng ký cho một tài khoản AdMob.
Đăng ký ứng dụng của bạn với AdMob. Bước này sẽ tạo một AdMob ứng dụng có mã ứng dụng AdMob duy nhất mà bạn cần có trong phần sau của hướng dẫn này.
Cài đặt SDK C++ dành cho 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 không gian tên firebase::gma
, nên
tải Firebase C++ SDK xuống,
rồi giải nén tệp vào một thư mục bạn chọn.
SDK C++ của Firebase không dành riêng cho từng nền tảng nhưng đòi hỏi các cấu hình thư viện dành riêng cho nền tảng.
Android
Bạn nên dùng CMake, nhưng có thể xem hướng dẫn về ndk-build trong
Bắt đầu SDK C++ của Firebase" chung
Hướng dẫn
liên kết libfirebase_app.a
và libfirebase_gma.a
với ứng dụng của bạn.
Trong tệp
gradle.properties
của dự án, hãy chỉ định vị trí của phần tử SDK đã giải nén:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
Vào 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"
Đối với tệp Gradle của mô-đun (cấp ứng dụng) – thường là
app/build.gradle
— thêm nội dung sau, bao gồm phần phụ thuộc thư viện cho SDK C++ của 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 }
Vào 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}")
Đồng bộ hoá ứng dụng của bạn để đảm bảo rằng tất cả cá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 Quảng cáo trên thiết bị di động của Google SDK C++ vào dự án iOS của bạn.
Tải CocoaPods phiên bản 1 trở lên bằng cách chạy:
sudo gem install cocoapods --pre
Thêm nhóm Quảng cáo trên thiết bị di động của Google từ SDK đã giải nén.
Tạo Podfile nếu bạn chưa có:
cd APP_DIRECTORY
pod init
Đối với Podfile, hãy thêm các nhóm cho SDK C++ dành cho 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 (bắt buộc theo SDK GMA C++):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
Cài đặt các nhóm, sau đó mở tệp
.xcworkspace
trong Xcode.pod install
open APP.xcworkspace
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++ dành cho 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
Thực hiện bước 3 trong bài viết Định cấu hình ứng dụng theo mô tả trong SDK quảng cáo trên thiết bị di động Hướng dẫn về Android sau đó quay lại trang này.
iOS
Làm theo bước Cập nhật Info.plist như mô tả trong SDK quảng cáo trên thiết bị di động hướng dẫn cho iOS, sau đó quay lại vào 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++ dành cho quảng cáo trên thiết bị di động của Google bằng cách
gọi firebase::gma::Initialize()
để khởi chạy SDK và hoàn tất một
firebase::Future
sau khi quá trình khởi chạy hoàn tất (hoặc sau 30 giây
thời gian chờ). 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.
Quảng cáo có thể được tải trước bằng 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
sau khi gọi Initialize()
. Nếu bạn cần có được sự đồng ý của người dùng trong
Khu vực kinh tế Châu Âu (EEA), đặt mọi cờ theo yêu cầu cụ thể (chẳng hạn như
tag_for_child_directed_treatment
hoặc tag_for_under_age_of_consent
) hoặc
nếu không hãy thực hiện hành động trước khi tải quảng cáo, hãy đảm bảo bạn làm như vậy bằng cách gọi
firebase::gma::SetRequestConfiguration()
trước khi khởi chạy Google Mobile
SDK Ads C++. Để biết thêm thông tin, hãy xem
Hướng dẫn về 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 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
được tạo và trả về. Sau đó, ứng dụng của bạn có thể thăm dò ý kiến
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ó "kết quả cuối cùng" tương ứng mà
các ứng dụng có thể dùng để truy xuất Future
gần đây nhất cho một hành động cụ thể. Để
ví dụ: firebase::gma::Initialize()
có một phương thức tương ứng được gọi là
firebase::gma::InitializeLastResult()
để 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 cuộc 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 để 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 một con trỏ hàm cho
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
Giờ thì bạn đã nhập xong SDK C++ của quảng cáo trên thiết bị di động của Google và sẵn sàng triển khai một quảng cáo. AdMob cung cấp một số định dạng quảng cáo khác nhau 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.
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ữ 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 mới sử dụng thiết bị di động quảng cáo.
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 video ngắn và tương tác với nội dung có thể chơi quảng cáo và khảo sát. Dùng để kiếm tiền từ các ứng dụng chơi miễn phí.