این راهنمای شروع سریع برای ناشران و توسعهدهندگانی است که میخواهند AdMob برای کسب درآمد از برنامهای که با Firebase ساخته شده است استفاده کنند. اگر قصد ندارید Firebase را در برنامه خود بگنجانید، به جای آن از راهنمای مستقل AdMob دیدن کنید.
اگر هنوز این کار را نکردهاید، در مورد تمام مزایای استفاده همزمان از AdMob ، Firebase و Google Analytics اطلاعات کسب کنید.
اگر این اولین باری است که این راهنما را مطالعه میکنید، توصیه میکنیم برنامه تست Google Mobile Ads C++ SDK را دانلود و با استفاده از آن پیش بروید.
قبل از اینکه شروع کنی
- اگر از قبل پروژه Firebase و برنامه Firebase ندارید، راهنمای شروع به کار با Firebase را دنبال کنید: Firebase را به پروژه C++ خود اضافه کنید . 
- مطمئن شوید که Google Analytics در پروژه فایربیس شما فعال است: - اگر در حال ایجاد یک پروژه جدید Firebase هستید، در طول فرآیند ایجاد پروژه، Google Analytics فعال کنید. 
- اگر یک پروژه Firebase دارید که Google Analytics در آن فعال نیست، میتوانید Google Analytics از تب Integrations در پروژه خود فعال کنید. - > تنظیمات پروژه . 
 
مرحله ۱: برنامه خود را در حساب AdMob خود تنظیم کنید
- هر نوع پلتفرم برنامه خود را به عنوان یک برنامه AdMob ثبت کنید. - وارد حساب کاربری AdMob شوید یا ثبت نام کنید . 
- هر نوع پلتفرم برنامه خود را در AdMob ثبت کنید . این مرحله یک برنامه AdMob با یک شناسه برنامه AdMob منحصر به فرد ایجاد میکند که بعداً در این راهنما به آن نیاز خواهید داشت. 
 - از شما خواسته میشود که SDK Mobile Ads را به برنامه خود اضافه کنید. دستورالعملهای دقیق برای این کار را بعداً در این راهنما خواهید یافت. 
- هر یک از برنامههای AdMob خود را به برنامه Firebase مربوطه پیوند دهید. - این مرحله اختیاری است اما اکیداً توصیه میشود. درباره مزایای فعال کردن معیارهای کاربر و پیوند دادن برنامههای AdMob خود به Firebase بیشتر بدانید. - برای هر نوع پلتفرم، دو مرحله زیر را در داشبورد برنامههای حساب AdMob خود انجام دهید: - معیارهای کاربر را فعال کنید تا AdMob بتواند دادههای تحلیلی گزینششده را در حساب AdMob شما پردازش و نمایش دهد. همچنین این یک تنظیم ضروری برای پیوند دادن برنامه AdMob خود به Firebase است. 
- برنامه AdMob خود را به پروژه Firebase موجود و برنامه Firebase مربوطه پیوند دهید . - مطمئن شوید که همان نام بسته (Android) یا شناسه بسته (iOS) را که برای برنامه Firebase خود وارد کردهاید، وارد میکنید. نام بسته یا شناسه بسته برنامه Firebase خود را در کارت برنامههای خود پیدا کنید. - > تنظیمات پروژه . 
 
مرحله ۲: شناسه برنامه AdMob خود را به برنامه خود اضافه کنید
اندروید
 شناسه برنامه AdMob خود را با اضافه کردن تگ <meta-data> مطابق شکل زیر به فایل 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>
آیاواس
 در فایل Info.plist برنامه خود، یک کلید GADApplicationIdentifier با مقدار رشتهای از شناسه برنامه AdMob خود اضافه کنید.
شما میتوانید این تغییر را به صورت برنامهنویسی شده انجام دهید:
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~1458002511 --> <key>GADApplicationIdentifier</key> <string>ADMOB_APP_ID</string>
یا، آن را در ویرایشگر لیست ویژگیها ویرایش کنید:

مرحله ۳: اضافه کردن SDK تبلیغات موبایلی گوگل
 از آنجایی که SDK مربوط به تبلیغات موبایل گوگل (Google Mobile Ads C++ SDK) در فضای نام firebase::gma قرار دارد، SDK مربوط به Firebase C++ را دانلود کنید و سپس آن را در یک دایرکتوری دلخواه از حالت فشرده خارج کنید.
کیت توسعه نرمافزاری Firebase C++ مختص پلتفرم خاصی نیست، اما به پیکربندیهای کتابخانهای مختص پلتفرم نیاز دارد.
اندروید
- در فایل - gradle.propertiesپروژه خود، محل SDK از حالت فشرده خارج شده را مشخص کنید:- systemProp.firebase_cpp_sdk.dir=FULL/PATH/TO/SDK 
- به فایل - 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" 
- به فایل 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 } 
- به فایل - 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}") 
- برنامه خود را همگامسازی کنید تا مطمئن شوید که همه وابستگیها نسخههای لازم را دارند. 
همه چیز آماده است! برنامه C++ شما برای استفاده از Google Mobile Ads C++ SDK پیکربندی شده است.
آیاواس
مراحل این بخش نمونهای از نحوه افزودن SDK ++C تبلیغات موبایلی گوگل به پروژه iOS شما است.
- با اجرای دستور زیر، CocoaPods نسخه ۱ یا بالاتر را دریافت کنید: - sudo gem install cocoapods --pre
- افزونه Google Mobile Ads ) را از SDK خارج شده از حالت فشرده اضافه کنید. - اگر از قبل یک Podfile ندارید، آن را ایجاد کنید: - cd YOUR_APP_DIRECTORY- pod init
- به Podfile خود، Pod مربوط به Google Mobile Ads C++ SDK را اضافه کنید: - pod 'Google-Mobile-Ads-SDK'
- پاد را نصب کنید، سپس فایل - .xcworkspaceرا در Xcode باز کنید.- pod install- open YOUR_APP.xcworkspace
- فریمورکهای زیر را از Firebase C++ SDK به پروژه اضافه کنید: -  xcframeworks/firebase.xcframework
-  xcframeworks/firebase_gma.xcframework
 
-  
 
همه چیز آماده است! برنامه C++ شما برای استفاده از Google Mobile Ads C++ SDK پیکربندی شده است.
مرحله ۴: مقداردهی اولیه SDK تبلیغات موبایلی گوگل
 قبل از بارگذاری تبلیغات، SDK Mobile Ads با فراخوانی 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. }
آیاواس
// 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 برمیگردانند، یک متد "last result" متناظر دارند که برنامهها میتوانند از آن برای بازیابی جدیدترین Future برای یک اقدام مشخص استفاده کنند. برای مثال، firebase::gma::Initialize() یک متد متناظر به نام firebase::gma::InitializeLastResult() دارد که یک Future برمیگرداند که برنامه شما میتواند از آن برای بررسی وضعیت آخرین فراخوانی firebase::gma::Initialize() استفاده کند.
 اگر وضعیت Future کامل شده و کد خطای آن firebase::gma::kAdErrorCodeNone باشد، عملیات با موفقیت انجام شده است.
 همچنین میتوانید callbackهایی را ثبت کنید که هنگام تکمیل یک Future فراخوانی شوند. در برخی موارد، callback در یک thread متفاوت اجرا میشود، بنابراین مطمئن شوید که کد شما thread-safe است. این قطعه کد از یک اشارهگر تابع برای 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.
  }
}
مرحله ۵: یک قالب تبلیغاتی برای پیادهسازی در اپلیکیشن خود انتخاب کنید
ادموب فرمتهای تبلیغاتی مختلفی ارائه میدهد، بنابراین میتوانید فرمتی را انتخاب کنید که به بهترین شکل با تجربه کاربری برنامه شما مطابقت داشته باشد. برای مشاهده دستورالعملهای دقیق پیادهسازی در مستندات AdMob ، روی دکمه مربوط به فرمت تبلیغات کلیک کنید.
بنر
تبلیغات مستطیلی که در بالا یا پایین صفحه دستگاه ظاهر میشوند
تبلیغات بنری در حین تعامل کاربران با برنامه، روی صفحه نمایش باقی میمانند و میتوانند پس از مدت زمان مشخصی به طور خودکار بهروزرسانی شوند. اگر در تبلیغات موبایلی تازهکار هستید، آنها نقطه شروع بسیار خوبی هستند.
اجرای تبلیغات بنریبینابینی
تبلیغات تمام صفحه که رابط کاربری یک برنامه را تا زمان بسته شدن توسط کاربر پوشش میدهند
تبلیغات بینابینی بهتر است در مکثهای طبیعی در جریان اجرای یک برنامه، مانند بین مراحل یک بازی یا درست پس از اتمام یک کار، استفاده شوند.
تبلیغات بینابینی را پیادهسازی کنیدپاداش داده شده
تبلیغاتی که به کاربران برای تماشای ویدیوهای کوتاه و تعامل با تبلیغات و نظرسنجیهای قابل پخش پاداش میدهند
تبلیغات جایزهدار (یا «مبتنی بر جایزه») میتوانند به کسب درآمد از کاربران بازیهای رایگان کمک کنند.
تبلیغات جایزهدار (Rewarded Ads) را پیادهسازی کنید
سایر موضوعات مورد علاقه
مشاهده معیارهای کاربر و دادههای تحلیلی
پس از مقداردهی اولیه، SDK Mobile Ads به طور خودکار شروع به ثبت رویدادهای تحلیلی و ویژگیهای کاربر از برنامه شما میکند. میتوانید این دادهها را بدون اضافه کردن هیچ کد اضافی به برنامه خود یا پیادهسازی هیچ تبلیغاتی مشاهده کنید. در اینجا میتوانید این دادههای تحلیلی را مشاهده کنید:
- در کارت معیارهای کاربری حساب AdMob خود (داشبورد صفحه اصلی یا برنامهها )، میتوانید معیارهای کاربری منتخب برگرفته از دادههای تحلیلی جمعآوریشده، مانند میانگین مدت زمان هر جلسه، ARPU و میزان ماندگاری را مشاهده کنید. 
- در داشبورد Analytics کنسول Firebase ، میتوانید آمار کلی و خلاصهای از معیارهای کلیدی را مشاهده کنید. اگر Firebase SDK را برای Google Analytics اضافه کنید ، میتوانید تبدیلها را برای کمپینهای تبلیغاتی علامتگذاری کنید و مخاطبان سفارشی را در کنسول Firebase ایجاد کنید. 
 توجه داشته باشید که برای نمایش بهتر معیارهای ARPU و ARPPU ، ممکن است بخواهید دادههای یک رویداد تحلیلی سفارشی به نام ecommerce_purchase را در محاسبه درآمد برای این معیارها لحاظ کنید ( نحوه انجام آن را بیاموزید ).
(اختیاری) از ویژگیهای بیشتر Google Analytics و فایربیس استفاده کنید
از فرصتها و ویژگیهای بیشتر برای بهبود کسب درآمد از اپلیکیشن و تعامل کاربر استفاده کنید:
- اضافه کردن و استفاده از Firebase SDK برای Google Analytics - ثبت وقایع سفارشی را در برنامه خود پیادهسازی کنید. 
- تبدیلها را برای کمپینهای تبلیغاتی سفارشی علامتگذاری کنید. 
- دادههای رویداد - ecommerce_purchaseرا در محاسبه درآمد برای معیارهای ARPU و ARPPU لحاظ کنید.
 - برای کسب اطلاعات بیشتر، به راهنمای استفاده از Google Analytics و فایربیس با برنامههای AdMob مراجعه کنید. 
- از سایر محصولات Firebase در برنامه خود استفاده کنید - پس از افزودن Firebase SDK برای Google Analytics ، از سایر محصولات Firebase برای بهینهسازی تبلیغات در برنامه خود استفاده کنید. - Remote Config به شما امکان میدهد رفتار و ظاهر برنامه خود را بدون انتشار بهروزرسانی برنامه، بدون هیچ هزینهای، برای کاربران فعال روزانه نامحدود تغییر دهید. 
- A/B Testing به شما این قدرت را میدهد که تغییرات در رابط کاربری، ویژگیها یا کمپینهای تعامل برنامه خود را آزمایش کنید تا ببینید آیا آنها قبل از اعمال تغییرات به طور گسترده، بر معیارهای کلیدی شما (مانند درآمد و حفظ مشتری) تأثیر میگذارند یا خیر.