המדריך הזה מיועד לבעלי אפליקציות שרוצים לייצר הכנסות (מונטיזציה) מאפליקציית C++ ב-AdMob ולא משתמשים ב-Firebase. אם אתם מתכננים לכלול את Firebase באפליקציה שלכם (או אם אתם שוקלים להשתמש בה), תוכלו להשתמש במקום זאת בגרסת AdMob עם Firebase של המדריך הזה.
השילוב של Google Mobile Ads C++ באפליקציה הוא השלב הראשון בהצגת מודעות וייצור הכנסות. אחרי שמשלבים את ה-SDK, אפשר לבחור פורמט מודעה (למשל מעברון או תגמול) ולפעול לפי ההוראות להטמעת התג.
Google Mobile Ads C++ SDK מקיף את Google Mobile Ads iOS ו-Android SDKs, והיא זמינה רק בפלטפורמות האלו. ב-Google Mobile Ads C++ נעשה שימוש במבני 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 עם מזהה אפליקציה ייחודי ב-AdMob שנדרש מאוחר יותר במדריך הזה.
התקנת Google Mobile Ads C++ SDK
מכיוון ש-Google Mobile Ads C++ SDK נמצא במרחב השמות firebase::gma
, עליך להוריד את Firebase C++ SDK ואז לבטל את הדחיסה לספריה לבחירתך.
השימוש ב-Firebase C++ SDK לא ספציפי לפלטפורמה, אבל כן מצריך תצורות ספרייה ספציפיות לפלטפורמה.
Android
בקובץ
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}")
צריך לסנכרן את האפליקציה כדי לוודא שכל התלות כוללת את הגרסאות הנדרשות.
הכל מוכן! האפליקציה שלכם ב-C++ מוגדרת להשתמש ב-SDK של Google Mobile Ads C++ בלי שירותי Firebase אחרים.
iOS
בקטע הזה מוצגת דוגמה להוספת ה-SDK של Google Mobile Ads C++ לפרויקט ב-iOS.
מורידים את CocoaPods מגרסה 1 ואילך על ידי הפעלת:
sudo gem install cocoapods --pre
מוסיפים את Pod של Google Mobile Ads מה-SDK שאינו דחוס.
יוצרים קובץ Podfile אם עדיין אין לכם:
cd your-app-directory
pod init
מוסיפים את ה-Podfile ל-SDK של Google Mobile Ads C++:
pod 'Google-Mobile-Ads-SDK'
מתקינים את ה-pod ופותחים את הקובץ
.xcworkspace
ב-Xcode.pod install
open your-app.xcworkspace
מוסיפים לפרויקט את המסגרות הבאות מ-Firebase C+ SDK SDK:
xcframeworks/firebase.xcframework
xcframeworks/firebase_gma.xcframework
הכל מוכן! האפליקציה שלכם ב-C++ מוגדרת להשתמש ב-SDK של Google Mobile Ads C++ בלי שירותי Firebase אחרים.
יש להגדיר את מזהה האפליקציה ב-AdMob לאפליקציה
Android
מבצעים את שלב 3 של Configure app (הגדרת האפליקציה) כפי שמתואר במדריך ל-SDK במודעות לנייד וחוזרים לדף C++ כדי להתחיל.
iOS
פעלו לפי השלב Update your info.plist כמתואר במדריך Mobile Ads SDK ל-iOS, ולאחר מכן חזרו לדף C++ לתחילת העבודה.
מפעילים את Google Mobile Ads SDK
לפני טעינת המודעות, יש להפעיל את האפליקציה באמצעות ה-SDK +Google Mobile Ads C++ על ידי קריאה ל-firebase::gma::Initialize()
שמפעיל את ה-SDK ומשלים firebase::Future
לאחר שהאתחול הושלם (או לאחר 30 שניות של סיום ההפעלה). כדי לעשות זאת, עליך לעשות זאת פעם אחת בלבד, באופן אידיאלי בעת השקת האפליקציה.
המודעות עשויות להיטען מראש על ידי SDK של Google Mobile Ads C++ או SDK של תהליך בחירת הרשת (Mediation) עם התקשרות ל-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
הושלם וקוד השגיאה שלו הוא firebase::gma::kAdErrorCodeNone
, הפעולה הושלמה בהצלחה.
אפשר גם לרשום קריאה חוזרת (callback) כדי להפעיל את התכונה כשמתבצעת השלמה של Future
. במקרים מסוימים, הקריאה החוזרת תופעל בשרשור אחר, לכן חשוב לוודא שהקוד בטוח לשימוש בשרשור. קטע הקוד משתמש בסימון פונקציה עבור הקריאה החוזרת (callback):
// 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 מציעה מספר פורמטים שונים של מודעות, כך שתוכל לבחור את הפורמט המתאים ביותר לחוויית המשתמש של האפליקציה שלך.
באנר
מודעות מלבניות שמופיעות בחלק העליון או התחתון של מסך המכשיר. מודעות באנר נשארות על המסך במהלך האינטראקציה של משתמשים עם האפליקציה, וניתן לרענן אותן אוטומטית לאחר פרק זמן מסוים. אם זו הפעם הראשונה שאתם מתנסים בפרסום בנייד, כדאי להתחיל כאן.
פרסומת מרווח ביניים
מודעות במסך מלא שמכסות את הממשק של האפליקציה, עד שהמשתמש סוגר אותן. מומלץ להשתמש בהן בהפסקות רגילות בתהליך ההפעלה של האפליקציה, כמו בין שלבים במשחק או מיד אחרי שמשלימים אותה.
ההטבה הופעלה
מודעות שמתגמלות משתמשים על צפייה בסרטונים קצרים ועל אינטראקציות עם מודעות התנסות באפליקציה ומודעות סקר. השירות משמש למונטיזציה של אפליקציות בחינם.