שנתחיל?

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

המדריך הזה מיועד לבעלי תוכן דיגיטלי שרוצים לייצר הכנסות מאפליקציית C++ באמצעות AdMob ולא להשתמש ב-Firebase. אם אתם מתכננים לכלול את Firebase באפליקציה שלכם (או אם אתם שוקלים להוסיף אותה), תוכלו לעיין בגרסה של AdMob עם Firebase במדריך הזה.

השילוב של Google Mobile Ads C++ SDK באפליקציה הוא השלב הראשון בהצגת מודעות וייצור הכנסות. לאחר שתשלבו את ה-SDK, תוכלו לבחור פורמט מודעה (למשל מודעת מעברון או מודעת מתגמלות) ולפעול לפי השלבים להטמעת התג.

Google Mobile Ads C++ SDK מכסה את מודעות Google Mobile Ads ל-iOS ול-Android SDK, וזמין רק בפלטפורמות האלה. ב-Google Mobile Ads C++ נעשה שימוש במבני Firebase C++ כדי לתמוך בפעולות אסינכרוניות, כך שהם ממוקמים במרחב השמות של firebase::gma.

אם זו הפעם הראשונה שבה אתם עוברים על המדריך הזה, אנחנו ממליצים להוריד את אפליקציית הבדיקה + מודעות לנייד של Google לנייד ולעקוב אחריה.

דרישות מוקדמות

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

מאחר ש-Google+ C++ SDK נמצא במרחב השמות firebase::gma, עליך להוריד את Firebase C++ SDK ולאחר מכן לבטל את הדחיסה שלו לספרייה לבחירתך.

השימוש ב-Firebase C++ SDK אינו ספציפי לפלטפורמה, אך הוא מצריך תצורות ספרייה ספציפיות לפלטפורמה.

Android

  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. לקובץ המודול (ברמת האפליקציה) (בדרך כלל 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. צריך לסנכרן את האפליקציה כדי לוודא שכל הגרסאות תלויות.

הכל מוכן! האפליקציה שלכם ב-+C+ מוגדרת להשתמש ב-+C SDK של Google Mobile Ads בלי שירותי Firebase אחרים.

iOS

השלבים בקטע הזה הם דוגמה להוספת ה-SDK של Google Mobile Ads C++ לפרויקט ב-iOS.

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

    sudo gem install cocoapods --pre
    
  2. מוסיפים את Pod Google Mobile Ads מה-SDK ללא חיתוך.

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

      cd your-app-directory
      pod init
      
    2. ניתן להוסיף את Podfile ל-SDK של Google Mobile Ads C++:

        pod 'Google-Mobile-Ads-SDK'
      
    3. מתקינים את ה-Pod ופותחים את הקובץ .xcworkspace ב-Xcode.

      pod install
      open your-app.xcworkspace
      
    4. מוסיפים לפרויקט את המסגרות הבאות מ-Firebase C++ SDK:

      • xcframeworks/firebase.xcframework
      • xcframeworks/firebase_gma.xcframework

הכל מוכן! האפליקציה שלכם ב-+C+ מוגדרת להשתמש ב-+C SDK של Google Mobile Ads בלי שירותי Firebase אחרים.

הגדרת מזהה האפליקציה ב-AdMob

Android

בצעו את שלב 3 של הגדרת האפליקציה כפי שמתואר במדריך ל-Mobile Ads SDK ולאחר מכן חוזרים לדף C++ הזה לתחילת העבודה.

iOS

פעלו לפי השלב עדכון Info.plist כמתואר במדריך Mobile Ads SDK ל-iOS, ולאחר מכן חזרו לדף C++ לתחילת העבודה.

הפעלה של Google Mobile Ads 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++ מתבצע ואפשר ליישם מודעה. מערכת AdMob מציעה כמה פורמטים שונים של מודעות, לכן תוכלו לבחור את הפורמט שהכי מתאים לחוויית המשתמש של האפליקציה שלכם.

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

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

פרסומת מרווח ביניים

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

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

ההטבה הופעלה

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

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