برای حل این مشکل، AdMob «راهاندازی آداپتور پیکربندیپذیر» را ارائه میدهد. این ویژگی به شما امکان میدهد کنترل کنید کدام آداپتورها برای اولین ظهور آگهی شما مقداردهی اولیه شوند و تأخیر را برای آن ظهور کاهش میدهد.
این راهنما جنبههای زیر را در «راهاندازی آداپتور پیکربندیپذیر» پوشش میدهد:
پیشنیازها
- Import Google Mobile Ads SDK نسخه ۱۳.۴.۰ یا بالاتر.
- Google Mobile Ads SDK را راهاندازی کنید.
با افزودن
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>در Objective-C یا افزودنimport GoogleMobileAds_Privateدر Swift، با این ویژگی موافقت کنید.Swift
import GoogleMobileAds import GoogleMobileAds_Privateآبجکتیو-سی
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
ایجاد پیکربندی آداپتور
پیکربندی اولیه آداپتور به Google Mobile Ads SDK دستور میدهد که فقط آداپتورهای موردنیاز را مقداردهی اولیه کند. این کار از مسدود شدن درخواست آگهی اول شما توسط تبدیلکنندههای غیرضروری جلوگیری میکند، منابع محاسباتی را حفظ میکند، و تأخیر را برای ظهور آگهی اول بهطور قابلتوجهی کاهش میدهد.
برای بهینهسازی عملکرد برنامهتان، هنگام ایجاد پیکربندی اولیه آداپتور، استراتژیهای زیر را درنظر بگیرید:
قالب آگهی یا واحد آگهی خاصی را اولویتبندی کنید
با اعلام قالب آگهی یا واحد آگهی خاص در پیکربندی اولیه آداپتور، عملکرد برنامههایی را که بلافاصله پساز راهاندازی آگهی نشان میدهند (مثل آگهی باز برنامه) بهبود دهید.
مثال زیر پیکربندی مقداردهی اولیه آداپتور را ایجاد میکند که فقط آداپتورهای میانجیگری لازم را برای واحد آگهی در صفحه باز شدن برنامه خاصی با مهلت پنج ثانیهای مقداردهی اولیه میکند:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdUnitIDs = [adUnitID]
adapterConfig.initializationTimeout = 5.0
آبجکتیو-سی
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdUnitIDs = [NSSet setWithArray:@[ kTestAdUnitID ]];
adapterConfig.initializationTimeout = 5.0;
مثال زیر پیکربندی اولیه آداپتوری ایجاد میکند که فقط آداپتورهای واسطهگری موردنیاز را برای همه «آگهیهای باز برنامه» مقداردهی اولیه میکند و مهلت زمانی پنج ثانیهای تنظیم میکند:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdFormats = [AdFormat.appOpen.rawValue as NSNumber]
adapterConfig.initializationTimeout = 5.0
آبجکتیو-سی
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdFormats = [NSSet setWithArray:@[ @(GADAdFormatAppOpen) ]];
adapterConfig.initializationTimeout = 5.0;
راهاندازی آداپتورهای میانجیگری خاص
اگر دقیقاً میدانید کدام شرکای واسطهگری معمولاً جای آگهی اول شما را پر میکنند، میتوانید فقط آن مبدل خاص را با ارائه نام کلاس مبدل در پیکربندی اولیه مبدل مقداردهی اولیه کنید. این را با رد کردن صریح آداپتورهای مقداردهینشده و تنظیم زمان استراحت برای Google Mobile Ads SDK ترکیب کنید تا درطول مزایده منتظر آداپتورهای مقداردهینشده باقیمانده نمانید.
مثال زیر پیکربندی مقداردهی اولیه آداپتور را ایجاد میکند که یک آداپتور میانجی خاص را مقداردهی اولیه میکند و زمان استراحت پنج ثانیهای تنظیم میکند:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdapterClasses = [adapterClassName]
adapterConfig.initializationTimeout = 5.0
آبجکتیو-سی
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.includedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
مستثنی کردن آداپتورهای میانجی خاص
اگر متوجه شدید که برخیاز آداپتورهای میانجیگری بهطور مداوم تأخیر بالایی دارند، میتوانید این آداپتورها را مستثنی کنید و آنها را در زمان دیگری مقداردهی اولیه کنید.
مثال زیر پیکربندی اولیه آداپتور را ایجاد میکند که آداپتورهای خاصی را از مقداردهی اولیه مستثنا میکند و زمان اتمام پنج ثانیهای را تنظیم میکند:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.excludedAdapterClasses = [adapterClassName]
adapterConfig.initializationTimeout = 5.0
آبجکتیو-سی
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.excludedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
رد کردن آداپتورهای مقداردهینشده
اگر قصد دارید آداپتورهای میانجی خاصی را مقداردهی اولیه یا مستثنی کنید، میتوانید درخواست آگهیتان را بهگونهای پیکربندی کنید که آداپتورهای مقداردهینشده را که هنوز در آبشار شما وجود دارند نادیده بگیرد.
اگر پیکربندی آداپتور ایجاد نکنید، همچنان میتوانید درخواست آگهیتان را پیکربندی کنید تا از آداپتورهای مقداردهینشده رد شود. Google Mobile Ads SDK درخواست آگهی را بدون انتظار برای اتمام زمان آداپتورها یا عدم موفقیت در مقداردهی اولیه صادر میکند.
مثال زیر کیت توسعه نرمافزار را با پیکربندی مقداردهی اولیه آداپتور مقداردهی اولیه میکند و درخواست آگهی در صفحه باز شدن برنامه ایجاد میکند که آداپتورهای مقداردهینشده را رد میکند:
Swift
await MobileAds.shared.start(with: adapterInitializationConfig)
// Make your ad request after adapter initialization completes.
let request = Request()
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters.
request.skipUninitializedAdapters = true
do {
let _ = try await AppOpenAd.load(with: adUnitID, request: request)
} catch {
print("Failed to load app open ad with error: \(error.localizedDescription)")
// TODO: Handle error
}
// Handle non time-sensitive tasks after the ad has loaded regardless of whether ad load
// succeeded.
performPostLaunchSetup()
آبجکتیو-سی
[[GADMobileAds sharedInstance]
startWithMediationInitializationConfiguration:adapterInitializationConfig
completionHandler:^(GADInitializationStatus *_Nonnull status) {
// Make your ad request after adapter initialization
// completes.
GADRequest *request = [GADRequest request];
// Set this to guarantee that the ad request
// doesn't wait for any other uninitialized adapters
request.shouldSkipUninitializedAdapters = YES;
[GADAppOpenAd
loadWithAdUnitID:adUnitID
request:request
completionHandler:^(GADAppOpenAd *_Nullable ad,
NSError *_Nullable error) {
if (error) {
NSLog(@"Failed to load app open ad with error: %@",
error.localizedDescription);
}
// Handle non time-sensitive tasks after the
// ad has loaded regardless of whether ad load succeeded.
[self performPostLaunchSetup];
}];
}];
راهاندازی آداپتورهای باقیمانده
پساز بار شدن فرصتهای آگهی حساس به زمان، آداپتورهای باقیمانده را مقداردهی اولیه کنید تا پوشش میانجیگری شریک کامل برای بقیه جلسه برنامه تضمین شود.
مثال زیر بقیه آداپتورها را با ارائه پیکربندی خالی مقداردهی اولیه میکند:
Swift
// Provide start with nil to initialize any adapters
// not initialized with configurable initialization.
MobileAds.shared.start(with: nil) { status in
// Remaining adapters are now initialized.
}
آبجکتیو-سی
// Call start with nil to initialize any adapters not initialized via configurable initialization.
[[GADMobileAds sharedInstance]
startWithMediationInitializationConfiguration:nil
completionHandler:^(GADInitializationStatus *_Nonnull status) {
// Remaining adapters are now initialized.
}];