המדריך הזה מיועד לבעלי אפליקציות שרוצים להפעיל מונטיזציה באפליקציית C++ באמצעות AdMob, בלי להשתמש ב-Firebase. אם אתם מתכננים לכלול את Firebase באפליקציה שלכם – או אם אתם שוקלים לעשות זאת – כדאי לעיין בגרסה AdMob עם Firebase של המדריך הזה.
השילוב של Google Mobile Ads C++ SDK באפליקציה הוא השלב הראשון לקראת הצגת מודעות וייצור הכנסות. אחרי שמשלבים את ה-SDK, אפשר לבחור פורמט מודעה, כמו מודעת מעברון או מודעה מתגמלת, ולפעול לפי השלבים להטמעה שלו.
Google Mobile Ads C++ SDK הוא מעטפת של Google Mobile Ads iOS SDK ו-Google Mobile Ads Android SDK, והוא זמין רק בפלטפורמות האלה. Google Mobile Ads C++ SDK משתמש במבני Firebase C++ כדי לתמוך בפעולות אסינכרוניות, ולכן הוא נמצא במרחב השמות firebase::gma
.
אם זו הפעם הראשונה שאתם קוראים את המדריך הזה, מומלץ להוריד את אפליקציית הבדיקה של Google Mobile Ads C++ ולפעול לפי ההוראות.
דרישות מוקדמות
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
מכיוון ש-Google Mobile Ads C++ SDK נמצא במרחב השמות firebase::gma
, צריך להוריד את Firebase C++ SDK ואז לחלץ אותו לספרייה שתבחרו.
Firebase C++ SDK הוא לא ספציפי לפלטפורמה, אבל הוא דורש הגדרות של ספריות ספציפיות לפלטפורמה.
Android
מומלץ להשתמש ב-CMake, אבל אפשר למצוא הוראות ל-ndk-build במדריך הכללי תחילת העבודה עם Firebase C++ SDK כדי לקשר את 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 Mobile Ads C++ SDK לפרויקט iOS.
כדי לקבל את CocoaPods מגרסה 1 ואילך, מריצים את הפקודה:
sudo gem install cocoapods --pre
מוסיפים את ה-pod של Google Mobile Ads מתוך ה-SDK שחולץ.
צריך ליצור Podfile אם אין עדיין:
cd APP_DIRECTORY
pod init
מוסיפים לקובץ Podfile את ה-Pods של Google Mobile Ads C++ SDK, של Google User Messaging Platform SDK ושל Firebase core SDK המינימלי (נדרש על ידי GMA C++ SDK):
pod 'Firebase/CoreOnly' pod 'Google-Mobile-Ads-SDK' pod 'GoogleUserMessagingPlatform'
מתקינים את ה-pods ואז פותחים את הקובץ
.xcworkspace
ב-Xcode.pod install
open APP.xcworkspace
מוסיפים לפרויקט את המסגרות הבאות מ-Firebase C++ SDK:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
סיימת! האפליקציה שלך ב-C++ מוגדרת לשימוש ב-Google Mobile Ads C++ SDK ללא שירותים אחרים של Firebase.
הגדרת מזהה האפליקציה ב-AdMob
Android
פועלים לפי שלב 3 בקטע הגדרת האפליקציה כפי שמתואר במדריך ל-Mobile Ads SDK ל-Android, ואז חוזרים לדף הזה.
iOS
פועלים לפי השלב עדכון הקובץ Info.plist כמו שמתואר במדריך ל-iOS Mobile Ads SDK, ואז חוזרים לדף הזה.
הפעלה של Google Mobile Ads SDK
לפני טעינת המודעות, האפליקציה צריכה להפעיל את Google Mobile Ads C++ SDK על ידי קריאה ל-firebase::gma::Initialize()
. הפונקציה הזו מפעילה את ה-SDK ומבצעת firebase::Future
אחרי ההפעלה (או אחרי פסק זמן של 30 שניות). צריך לבצע את הפעולה הזו רק פעם אחת, ועדיף בזמן הפעלת האפליקציה.
יכול להיות שהמודעות ייטענו מראש על ידי Google Mobile Ads C++ SDK או על ידי ערכות ה-SDK של השותף לתהליך בחירת הרשת בזמן ההפעלה של Initialize()
. אם אתם צריכים לקבל הסכמה ממשתמשים באזור הכלכלי האירופי (EEA), להגדיר פלאגים ספציפיים לבקשה (כמו tag_for_child_directed_treatment
או tag_for_under_age_of_consent
) או לבצע פעולות אחרות לפני טעינת המודעות, אתם צריכים לעשות זאת באמצעות הפונקציה firebase::gma::SetRequestConfiguration()
לפני האתחול של Google Mobile Ads 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
כדי לעקוב אחרי סטטוס הסיום של קריאה לשיטה
Future
מאפשר לכם לקבוע את סטטוס ההשלמה של קריאות לשיטות אסינכרוניות.
לדוגמה, כשהאפליקציה קוראת ל-firebase::gma::Initialize()
, נוצר firebase::Future
חדש ומוחזר. לאחר מכן, האפליקציה יכולה לשלוח שאילתות ל-status()
של Future
כדי לקבוע מתי האתחול הסתיים.
אחרי שהתהליך יסתיים, האפליקציה תוכל להפעיל את result()
כדי לקבל את AdapterInitializationStatus
שנוצר.
לשיטות שמחזירות Future
יש שיטה מקבילה של 'תוצאה אחרונה' שאפליקציות יכולות להשתמש בה כדי לאחזר את Future
האחרון לפעולה נתונה. לדוגמה, ל-firebase::gma::Initialize()
יש שיטה תואמת בשם firebase::gma::InitializeLastResult()
, שמחזירה Future
שהאפליקציה יכולה להשתמש בו כדי לבדוק את הסטטוס של הקריאה האחרונה ל-firebase::gma::Initialize()
.
אם הסטטוס של Future
הוא complete וקוד השגיאה שלו הוא firebase::gma::kAdErrorCodeNone
, סימן שהפעולה הושלמה בהצלחה.
אפשר גם לרשום קריאות חוזרות (callback) שיופעלו כשפעולת 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.
}
}
בחירת פורמט מודעה
Google Mobile Ads C++ SDK מיובא עכשיו ואפשר להטמיע מודעה. ב-AdMob יש מגוון פורמטים שונים של מודעות, כך שאתם יכולים לבחור את הפורמט שהכי מתאים לחוויית המשתמש באפליקציה שלכם.
מודעת באנר
מודעות מלבניות שמופיעות בחלק העליון או התחתון של מסך המכשיר. מודעות באנר מוצגות במסך גם בזמן אינטראקציות של המשתמשים באפליקציה, ויכול להיות שיתבצע רענון אוטומטי שלהן אחרי פרק זמן מסוים. אם אתם חדשים בתחום הפרסום לנייד, כדאי להתחיל עם מודעות כאלה.
מעברון
מודעות במסך מלא שמכסות את הממשק של אפליקציה עד שהמשתמש סוגר אותן. השימוש בהן הכי יעיל בהפסקות טבעיות בזרימת הביצוע של האפליקציה, למשל בין שלבים במשחק או מיד אחרי השלמת משימה.
ההטבה הופעלה
מודעות שמציעות למשתמשים תגמולים בתמורה לצפייה בסרטונים קצרים, לאינטראקציות עם מודעות התנסות באפליקציה ולמילוי סקרים. משמשות ליצירת הכנסות מאפליקציות שזמינות בחינם.