המדריך הזה מיועד לבעלי אפליקציות שרוצים לייצר הכנסות מאפליקציית C++ באמצעות AdMob, באמצעות Firebase. אם אתם מתכוונים לכלול את Firebase באפליקציה, או כדאי לבחון את האפשרות הזו - ראו AdMob עם גרסת Firebase הזו במדריך הזה.
שילוב של C++ SDK של מודעות Google לנייד באפליקציה הוא הצעד הראשון לקראת הצגת מודעות וייצור הכנסות. אחרי השילוב של ה-SDK, אפשר בוחרים פורמט מודעה, כמו מעברון או מודעה מתגמלת, ופועלים לפי השלבים להטמיע אותו.
ערכת ה-SDK של מודעות Google לנייד (C++ SDK) כוללת את ערכות ה-SDK של מודעות Google לנייד ל-iOS ול-Android,
וזמינה רק בפלטפורמות האלה. ערכת ה-SDK של מודעות Google לנייד (C++ SDK) מאפשרת
שימוש ב-builds של Firebase C++ כדי לתמוך בפעולות אסינכרוניות, כלומר
במרחב השמות firebase::gma
.
אם זו הפעם הראשונה שאתם קוראים את המדריך הזה, אנחנו ממליצים להוריד ולעקוב אחריו באמצעות בדיקת C++ של מודעות Google לנייד app.
דרישות מוקדמות
Android
- צריך להשתמש ב-Android Studio 3.2 ואילך
- יש לוודא שקובץ ה-build של האפליקציה משתמש בערכים הבאים:
minSdkVersion
מתוך 16 ומעלה- הערך של
compileSdkVersion
הוא 28 ומעלה
iOS
- צריך להשתמש ב-Xcode מגרסה 13 ואילך
- יעד iOS 10.0 ומעלה
הגדרת האפליקציה בחשבון AdMob
כדי לרשום את האפליקציה כאפליקציית AdMob:
רושמים את האפליקציה ב-AdMob. בשלב הזה נוצרת אפליקציה ב-AdMob עם מזהה אפליקציה ייחודי ב-AdMob, שנחוץ בהמשך המדריך.
התקנת Google Mobile Ads C++ SDK
מאחר ש-C++ SDK של מודעות Google לנייד נמצא במרחב השמות firebase::gma
,
מורידים את Firebase C++ SDK,
ולאחר מכן מחלצים אותו בספרייה לבחירתכם.
ה-SDK של Firebase C++ לא ספציפי לפלטפורמה, אבל נדרש הגדרות של ספריות ספציפיות לפלטפורמה.
Android
מומלץ להשתמש ב-CMake, אבל אפשר למצוא הוראות ליצירה של ndk-build
כללי תחילת העבודה עם SDK + Firebase ב-Firebase
מדריך
לקשר את libfirebase_app.a
ואת libfirebase_gma.a
לאפליקציה שלך.
בקובץ
gradle.properties
של הפרויקט, מציינים את המיקום של ערכת SDK לא דחוסה:systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
לקובץ
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"
מוסיפים את התוכן הבא לקובץ Gradle של המודול (ברמת האפליקציה) – בדרך כלל
app/build.gradle
– שכולל את יחסי התלות בספרייה של Google Mobile Ads C++ SDK.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 }
מוסיפים את התוכן הבא לקובץ
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}")
צריך לסנכרן את האפליקציה כדי לוודא שלכל יחסי התלות יש את הגרסאות הנדרשות.
iOS
השלבים בקטע הזה מדגימים איך להוסיף את מודעות Google לנייד. C++ SDK לפרויקט iOS שלכם.
כדי להוריד את CocoaPods בגרסה 1 ואילך, מריצים את:
sudo gem install cocoapods --pre
מוסיפים את רצף המודעות של Google לנייד מה-SDK לאחר חילוץ.
אם עדיין אין לכם קובץ Podfile, צריך ליצור אותו:
cd APP_DIRECTORY
pod init
ל-Podfile, מוסיפים את רצפי המודעות של Google Mobile Ads C++ SDK, Google User Messaging Platform SDK וה-SDK המינימלי של Firebase (נדרש על ידי GMA C++ SDK):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
מתקינים את ה-pods ופותחים את הקובץ
.xcworkspace
ב-Xcode.pod install
open APP.xcworkspace
מוסיפים לפרויקט את ה-frameworks הבאות מ-Firebase C++ SDK:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
הכל מוכן! אפליקציית C++ שלך מוגדרת לשימוש ב-C++ SDK של מודעות Google לנייד. ללא שירותים אחרים של Firebase.
הגדרת מזהה האפליקציה ב-AdMob של האפליקציה
Android
פועלים לפי ההוראות בשלב 3 של הגדרת האפליקציה, כפי שמתואר ב-Mobile Ads SDK מדריך ל-Android ואז חוזרים לדף הזה.
iOS
פועלים לפי השלב עדכון קובץ Info.plist כפי שמתואר במדריך ל-Mobile Ads SDK ל-iOS, ואז חוזרים לדף הזה.
הפעלה של Google Mobile Ads SDK
לפני טעינת המודעות, צריך להפעיל את Google Mobile Ads C++ SDK באפליקציה באמצעות קריאה ל-firebase::gma::Initialize()
. הפונקציה הזו מפעילה את ה-SDK ומבצעת קריאה ל-firebase::Future
בסיום ההפעלה (או אחרי זמן קצוב של 30 שניות). צריך לעשות זאת רק פעם אחת, רצוי בזמן הפעלת האפליקציה.
ייתכן שהמודעות ייטענו מראש על ידי ערכות ה-SDK של Google Mobile Ads C++ או ערכות ה-SDK של שותף בתהליך בחירת הרשת
כשקוראים אל Initialize()
. אם אתם צריכים לקבל הסכמה ממשתמשים
באזור הכלכלי האירופי (EEA), מגדירים סימונים ספציפיים לבקשה (כמו
tag_for_child_directed_treatment
או tag_for_under_age_of_consent
), או
לנקוט פעולות אחרות לפני טעינת המודעות, הקפידו לעשות זאת על ידי הפעלה
firebase::gma::SetRequestConfiguration()
לפני אתחול Google Mobile
מודעות C++ SDK. מידע נוסף זמין במדריך לטירגוט.
הנה דוגמה לאופן שבו אפשר להתקשר אל 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
כדי לעקוב אחר סטטוס ההשלמה של הפעלת method
בעזרת 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
, אז הפעולה הסתיימה
בהצלחה.
אפשר גם לרשום קריאות חוזרות (callbacks) שיופעלו כשהפעולה 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 של Google Mobile Ads ב-C++ יובא, ותוכלו להטמיע מודעה. מערכת AdMob מציעה כמה פורמטים שונים של מודעות, כך שתוכלו לבחור את הפורמט שמתאים ביותר לחוויית המשתמש באפליקציה.
כרזה
מודעות מלבניות שמופיעות בחלק העליון או התחתון של מסך המכשיר. מודעות באנר מוצגות במסך בזמן שהמשתמשים יוצרים אינטראקציה עם האפליקציה, יתבצע רענון אוטומטי לאחר פרק זמן מסוים. אם זו הפעם הראשונה שאתם משתמשים בפרסום בנייד, כדאי להתחיל מהם.
מעברון
מודעות במסך מלא שמכסות את הממשק של האפליקציה עד שהמשתמש סוגר אותן. מומלץ להשתמש בהם בהשהיות טבעיות במהלך הביצוע של אפליקציה, כמו בין שלבים במשחק או מיד אחרי שמשימה בוצעה.
ההטבה הופעלה
מודעות שמציעות למשתמשים תגמולים בתמורה לצפייה בסרטונים קצרים ולאינטראקציה עם הילדים מודעות וסקרים. משמש למונטיזציה מאפליקציות חינמיות.