برای حل این مشکل، AdMob «مقداردهی اولیه آداپتور قابلپیکربندی» را ارائه میدهد. این ویژگی به شما امکان میدهد کنترل کنید کدام آداپتورها برای اولین ظهور آگهی شما مقداردهی اولیه شوند و تأخیر را برای آن ظهور کاهش میدهد.
این راهنما جنبههای زیر را از «مقداردهی اولیه آداپتور پیکربندیپذیر» پوشش میدهد:
پیشنیازها
- 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.
}];