שנתחיל?

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

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

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

  2. רושמים את האפליקציה ב-AdMob. השלב הזה יוצר אפליקציית AdMob עם מזהה אפליקציה ייחודי ב-AdMob שנדרש מאוחר יותר במדריך הזה.

התקנת Google Mobile Ads C++ SDK

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

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

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

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

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

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

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

ההטבה הופעלה

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

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