מתחילים


המדריך הזה מיועד לבעלי אפליקציות שרוצים לייצר הכנסות מאפליקציית 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:

  1. כניסה לחשבון או הרשמה בחשבון AdMob.

  2. רושמים את האפליקציה ב-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 לאפליקציה שלך.

  1. בקובץ gradle.properties של הפרויקט, מציינים את המיקום של ערכת SDK לא דחוסה:

    systemProp.firebase_cpp_sdk.dir=FULL_PATH_TO_SDK
    
  2. לקובץ 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"
    
  3. מוסיפים את התוכן הבא לקובץ 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
    }
    
  4. מוסיפים את התוכן הבא לקובץ 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}")
    
  5. צריך לסנכרן את האפליקציה כדי לוודא שלכל יחסי התלות יש את הגרסאות הנדרשות.

iOS

השלבים בקטע הזה מדגימים איך להוסיף את מודעות Google לנייד. C++ SDK לפרויקט iOS שלכם.

  1. כדי להוריד את CocoaPods בגרסה 1 ואילך, מריצים את:

    sudo gem install cocoapods --pre
  2. מוסיפים את רצף המודעות של Google לנייד מה-SDK לאחר חילוץ.

    1. אם עדיין אין לכם קובץ Podfile, צריך ליצור אותו:

      cd APP_DIRECTORY
      pod init
    2. ל-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'
      
    3. מתקינים את ה-pods ופותחים את הקובץ .xcworkspace ב-Xcode.

      pod install
      open APP.xcworkspace
    4. מוסיפים לפרויקט את ה-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 מציעה כמה פורמטים שונים של מודעות, כך שתוכלו לבחור את הפורמט שמתאים ביותר לחוויית המשתמש באפליקציה.

מודעות מלבניות שמופיעות בחלק העליון או התחתון של מסך המכשיר. מודעות באנר מוצגות במסך בזמן שהמשתמשים יוצרים אינטראקציה עם האפליקציה, יתבצע רענון אוטומטי לאחר פרק זמן מסוים. אם זו הפעם הראשונה שאתם משתמשים בפרסום בנייד, כדאי להתחיל מהם.

הטמעת מודעות באנר

מעברון

מודעות במסך מלא שמכסות את הממשק של האפליקציה עד שהמשתמש סוגר אותן. מומלץ להשתמש בהם בהשהיות טבעיות במהלך הביצוע של אפליקציה, כמו בין שלבים במשחק או מיד אחרי שמשימה בוצעה.

הטמעת מודעות מעברון

ההטבה הופעלה

מודעות שמציעות למשתמשים תגמולים בתמורה לצפייה בסרטונים קצרים ולאינטראקציה עם הילדים מודעות וסקרים. משמש למונטיזציה מאפליקציות חינמיות.

הטמעה של מודעות מתגמלות