شروع کنید

این راهنما برای ناشرانی است که می‌خواهند بدون استفاده از Firebase از یک برنامه ++C با AdMob کسب درآمد کنند. اگر قصد دارید Firebase را در برنامه خود قرار دهید - یا اگر در نظر دارید - به جای آن به نسخه AdMob با Firebase این راهنما مراجعه کنید.

ادغام Google Mobile Ads C++ SDK در یک برنامه اولین گام برای نمایش تبلیغات و کسب درآمد است. هنگامی که SDK را ادغام کردید، می توانید یک قالب تبلیغاتی، مانند بینابینی یا پاداش، انتخاب کنید و مراحل اجرای آن را دنبال کنید.

Google Mobile Ads C++ SDK، کیت توسعه نرم افزاری iOS و Android Ads Google Mobile را پوشش می دهد و فقط در آن پلتفرم ها در دسترس است. Google Mobile Ads C++ SDK از ساختارهای Firebase C++ برای پشتیبانی از عملیات ناهمزمان استفاده می‌کند، بنابراین در فضای نام firebase::gma قرار دارد.

اگر اولین باری است که این راهنما را مرور می‌کنید، توصیه می‌کنیم با استفاده از برنامه آزمایشی C++ Google Mobile Ads را دانلود کرده و دنبال کنید.

پیش نیازها

اندروید

  • از اندروید استودیو 3.2 یا بالاتر استفاده کنید
  • مطمئن شوید که فایل ساخت برنامه شما از مقادیر زیر استفاده می کند:
    • 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 مختص پلتفرم نیست، اما به پیکربندی کتابخانه مخصوص پلتفرم نیاز دارد.

اندروید

ما استفاده از CMake را توصیه می‌کنیم، اما می‌توانید دستورالعمل‌های مربوط به ساخت ndk را در راهنمای شروع 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 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 Mobile Ads C++ SDK به پروژه iOS خود است.

  1. CocoaPods نسخه 1 یا بالاتر را با اجرای:

    sudo gem install cocoapods --pre
    
  2. غلاف تبلیغات Google Mobile را از SDK خارج‌شده اضافه کنید.

    1. اگر قبلاً یک پادفایل ندارید ایجاد کنید:

      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. پادها را نصب کنید، سپس فایل .xcworkspace را در Xcode باز کنید.

      pod install
      open APP.xcworkspace
      
    4. چارچوب های زیر را از Firebase C++ SDK به پروژه اضافه کنید:

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

شما آماده اید! برنامه C++ شما برای استفاده از Google Mobile Ads C++ SDK بدون هیچ سرویس Firebase دیگری پیکربندی شده است.

شناسه برنامه AdMob برنامه خود را پیکربندی کنید

اندروید

مرحله 3 از پیکربندی برنامه خود را همانطور که توسط راهنمای Android SDK Ads Mobile توضیح داده شده است دنبال کنید و سپس به این صفحه بازگردید.

iOS

مرحله Update your Info.plist را همانطور که در راهنمای iOS SDK Ads Mobile توضیح داده شده است دنبال کنید و سپس به این صفحه بازگردید.

Google Mobile Ads SDK را راه‌اندازی کنید

قبل از بارگیری تبلیغات، از برنامه خود بخواهید با فراخوانی firebase::gma::Initialize() که SDK را مقداردهی اولیه می‌کند و پس از تکمیل اولیه (یا پس از وقفه 30 ثانیه‌ای) یک firebase::Future را تکمیل کند. این کار باید فقط یک بار انجام شود، ایده آل در هنگام راه اندازی برنامه.

تبلیغات ممکن است با فراخوانی Initialize() توسط Google Mobile Ads C++ SDK یا SDK های شریک واسطه بارگذاری شوند. اگر نیاز به کسب رضایت از کاربران در منطقه اقتصادی اروپا (EEA) دارید، هر گونه پرچم مخصوص درخواست را تنظیم کنید (مانند tag_for_child_directed_treatment یا tag_for_under_age_of_consent )، یا در غیر این صورت قبل از بارگیری تبلیغات اقدامی انجام دهید، مطمئن شوید که این کار را با فراخوانی firebase::gma::SetRequestConfiguration() قبل از مقداردهی اولیه Google Mobile Ads C++ SDK. برای اطلاعات بیشتر به راهنمای هدف گذاری ما مراجعه کنید.

در اینجا مثالی از نحوه فراخوانی Initialize() آورده شده است:

اندروید

// 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 باشد، عملیات با موفقیت به پایان رسیده است.

همچنین می‌توانید تماس‌هایی را برای فراخوانی پس از تکمیل 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.
  }
}

یک قالب تبلیغ را انتخاب کنید

Google Mobile Ads C++ SDK اکنون وارد شده است و شما آماده اجرای یک تبلیغ هستید. AdMob فرمت‌های مختلف تبلیغاتی را ارائه می‌دهد، بنابراین می‌توانید یکی را انتخاب کنید که به بهترین وجه با تجربه کاربری برنامه‌تان مطابقت دارد.

تبلیغات مستطیلی که در بالا یا پایین صفحه نمایش دستگاه ظاهر می شوند. تبلیغات بنری در حالی که کاربران در حال تعامل با برنامه هستند روی صفحه می مانند و می توانند پس از مدت زمان معینی به طور خودکار بازخوانی شوند. اگر در زمینه تبلیغات موبایلی تازه کار هستید، آنها مکان خوبی برای شروع هستند.

پیاده سازی تبلیغات بنری

بینابینی

تبلیغات تمام صفحه که رابط یک برنامه را تا زمانی که توسط کاربر بسته شود پوشش می دهند. آنها به بهترین وجه در توقف های طبیعی در جریان اجرای برنامه، مانند بین سطوح یک بازی یا درست پس از اتمام یک کار، استفاده می شوند.

اجرای تبلیغات بینابینی

پاداش داده شد

تبلیغاتی که به کاربران برای تماشای ویدیوهای کوتاه و تعامل با تبلیغات و نظرسنجی‌های قابل پخش پاداش می‌دهد. برای کسب درآمد از برنامه های بازی رایگان استفاده می شود.

اجرای تبلیغات با پاداش