שנתחיל?

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

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

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

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

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

Firebase C++ SDK לא ספציפי לפלטפורמה, אבל כן דורש הגדרה של הספרייה הספציפית לפלטפורמה.

Android

מומלץ להשתמש ב-CMake, אבל תוכלו למצוא הנחיות ל-ndk-build במדריך הכללי של Firebase C++ SDK כדי לקשר את 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+ SDK של Google Mobile Ads.

    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 Mobile Ads C++ SDK לפרויקט iOS.

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

    sudo gem install cocoapods --pre
    
  2. מוסיפים את Pod Google Ads מה-SDK שאינו דחוס.

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

      cd APP_DIRECTORY
      pod init
      
    2. ל-Podfile, מוסיפים את Pod עבור Google Mobile Ads C++ SDK:

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

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

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

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

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

Android

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

iOS

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

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

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

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

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

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

ההטבה הופעלה

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

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