با AdMob در پروژه C++ خود شروع کنید

این راهنمای شروع سریع برای ناشران و توسعه دهندگانی است که می خواهند از AdMob برای کسب درآمد از برنامه ای که با Firebase ساخته شده است استفاده کنند. اگر قصد ندارید Firebase را در برنامه خود قرار دهید، به جای آن از راهنمای AdMob مستقل بازدید کنید.

اگر هنوز این کار را نکرده اید، با تمام مزایای استفاده از AdMob، Firebase و Google Analytics با هم آشنا شوید.

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

قبل از اینکه شروع کنی

  • اگر قبلاً پروژه Firebase و برنامه Firebase ندارید، راهنمای شروع Firebase را دنبال کنید: Firebase را به پروژه C++ خود اضافه کنید .

  • مطمئن شوید که Google Analytics در پروژه Firebase شما فعال است:

    • اگر در حال ایجاد یک پروژه Firebase هستید، Google Analytics را در جریان کار ایجاد پروژه فعال کنید.

    • اگر پروژه Firebase موجودی دارید که Google Analytics را فعال نکرده است، می‌توانید Google Analytics را از برگه Integrations فعال کنید. > تنظیمات پروژه .

مرحله 1: برنامه خود را در حساب AdMob خود راه اندازی کنید

  1. هر گونه پلتفرم برنامه خود را به عنوان یک برنامه AdMob ثبت کنید.

    1. وارد حساب AdMob شوید یا برای آن ثبت نام کنید .

    2. هر گونه پلتفرم برنامه خود را با AdMob ثبت کنید . این مرحله یک برنامه AdMob با شناسه برنامه AdMob منحصر به فرد ایجاد می کند که بعداً در این راهنما به آن نیاز خواهید داشت.

    از شما خواسته می شود SDK تبلیغات موبایل را به برنامه خود اضافه کنید. دستورالعمل های دقیق برای این کار را بعداً در این راهنما بیابید.

  2. هر یک از برنامه های AdMob خود را به برنامه Firebase مربوطه پیوند دهید.

    این مرحله اختیاری است اما به شدت توصیه می شود. درباره مزایای فعال کردن معیارهای کاربر و پیوند دادن برنامه‌های AdMob خود به Firebase بیشتر بدانید.

    برای هر نوع پلتفرم، دو مرحله زیر را در داشبورد Apps حساب AdMob خود تکمیل کنید:

    1. User Metrics را فعال کنید تا به AdMob اجازه دهد داده های تجزیه و تحلیل انتخاب شده را در حساب AdMob شما پردازش و نمایش دهد. همچنین یک تنظیم ضروری برای شماست که برنامه AdMob خود را به Firebase پیوند دهید.

    2. برنامه AdMob خود را به پروژه Firebase موجود و برنامه Firebase مربوطه پیوند دهید .

      مطمئن شوید که نام بسته (Android) یا شناسه بسته (iOS) را که برای برنامه Firebase خود وارد کرده‌اید، وارد کنید. نام بسته یا شناسه بسته برنامه Firebase خود را در کارت برنامه های خود پیدا کنید > تنظیمات پروژه .

مرحله 2: شناسه برنامه AdMob خود را به برنامه خود اضافه کنید

اندروید

با افزودن برچسب <meta-data> مطابق شکل زیر ، شناسه برنامه AdMob خود را به فایل AndroidManifest.xml برنامه خود اضافه کنید.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ADMOB_APP_ID"/>
    </application>
</manifest>

iOS

در فایل Info.plist برنامه خود، یک کلید GADApplicationIdentifier با مقدار رشته ای از AdMob App ID خود اضافه کنید.

شما می توانید این تغییر را به صورت برنامه ای انجام دهید:

<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 -->
<key>GADApplicationIdentifier</key>
<string>ADMOB_APP_ID</string>

یا آن را در ویرایشگر لیست اموال ویرایش کنید:

ویرایشگر لیست اموال

مرحله 3: Google Mobile Ads SDK را اضافه کنید

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

Firebase C++ SDK مختص پلتفرم نیست، اما به پیکربندی کتابخانه مخصوص پلتفرم نیاز دارد.

اندروید

  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++ شما برای استفاده از Google Mobile Ads C++ SDK پیکربندی شده است.

iOS

مراحل این بخش نمونه ای از نحوه افزودن Google Mobile Ads C++ SDK به پروژه iOS خود است.

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

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

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

      cd YOUR_APP_DIRECTORY
      pod init
    2. به Podfile خود، غلاف مربوط به Google Mobile Ads C++ SDK را اضافه کنید:

      pod 'Google-Mobile-Ads-SDK'
    3. پاد را نصب کنید، سپس فایل .xcworkspace را در Xcode باز کنید.

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

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

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

مرحله 4: SDK تبلیغات موبایل Google را راه اندازی کنید

قبل از بارگیری تبلیغات، SDK تبلیغات موبایل را با فراخوانی firebase::gma::Initialize() مقداردهی اولیه کنید.

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

در اینجا مثالی از نحوه فراخوانی 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.
  }
}

مرحله 5: یک قالب تبلیغاتی را برای پیاده سازی در برنامه خود انتخاب کنید

AdMob فرمت‌های مختلف تبلیغاتی را ارائه می‌کند، بنابراین می‌توانید قالبی را انتخاب کنید که به بهترین وجه با تجربه کاربری برنامه‌تان مطابقت دارد. برای مشاهده دستورالعمل‌های اجرایی دقیق در اسناد AdMob، روی دکمه‌ای برای قالب تبلیغات کلیک کنید.

تبلیغات مستطیلی که در بالا یا پایین صفحه نمایش دستگاه ظاهر می شوند

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

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

بینابینی

تبلیغات تمام صفحه که رابط یک برنامه را تا زمانی که توسط کاربر بسته شود پوشش می دهند

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

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

پاداش داده شد

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

تبلیغات با پاداش (یا "بر اساس پاداش") می تواند به کسب درآمد از کاربران رایگان کمک کند.

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

سایر موضوعات مورد علاقه

مشاهده معیارهای کاربر و داده های تجزیه و تحلیل

پس از راه‌اندازی اولیه، کیت توسعه نرم‌افزار تبلیغات موبایلی به‌طور خودکار شروع به ثبت رویدادهای تحلیلی و ویژگی‌های کاربر از برنامه شما می‌کند. می‌توانید این داده‌ها را بدون افزودن کد اضافی به برنامه خود یا پیاده‌سازی هر گونه تبلیغات مشاهده کنید. در اینجا می توانید این داده های تحلیلی را مشاهده کنید:

توجه داشته باشید که برای نمایش بهتر معیارهای ARPU و ARPPU ، ممکن است بخواهید داده‌های یک رویداد سفارشی تحلیلی به نام ecommerce_purchase را در محاسبه درآمد این معیارها بگنجانید ( چطور یاد بگیرید ).

(اختیاری) از ویژگی های بیشتر Google Analytics و Firebase استفاده کنید

از فرصت ها و ویژگی های بیشتر برای بهبود کسب درآمد از برنامه و تعامل کاربر استفاده کنید:

  • افزودن و استفاده از Firebase SDK برای Google Analytics

    برای کسب اطلاعات بیشتر، از راهنمای استفاده از Google Analytics و Firebase با برنامه‌های AdMob دیدن کنید.

  • از سایر محصولات Firebase در برنامه خود استفاده کنید

    پس از افزودن Firebase SDK برای Google Analytics، از سایر محصولات Firebase برای بهینه سازی تبلیغات در برنامه خود استفاده کنید.

    • Remote Config شما را قادر می سازد تا رفتار و ظاهر برنامه خود را بدون انتشار به روز رسانی برنامه، بدون هیچ هزینه ای، برای کاربران فعال روزانه نامحدود تغییر دهید.

    • تست A/B به شما این قدرت را می‌دهد که تغییرات را در رابط کاربری، ویژگی‌ها یا کمپین‌های تعامل برنامه‌تان آزمایش کنید تا بدانید که آیا این تغییرات بر معیارهای کلیدی شما (مانند درآمد و حفظ) تأثیر می‌گذارند یا نه، قبل از انتشار گسترده تغییرات.