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