لحلّ هذه المشكلة، توفّر AdMob ميزة "إعداد المحوِّل القابل للضبط". تتيح لك هذه الميزة التحكّم في المحوّلات التي يتم إعدادها لظهور إعلانك الأول، كما تقلّل من وقت الاستجابة لظهور هذا الإعلان.
يتناول هذا الدليل الجوانب التالية من عملية إعداد المحوّلات القابلة للضبط:
المتطلبات الأساسية
- استورِد الإصدار 13.4.0 أو إصدارًا أحدث من Google Mobile Ads SDK.
- إعداد Google Mobile Ads SDK
يمكنك الموافقة على هذه الميزة من خلال إضافة
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>في Objective-C أو إضافةimport GoogleMobileAds_Privateفي Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
إنشاء إعدادات المحوّل
توجّه إعدادات بدء المحوّل Google Mobile Ads SDK لبدء المحوّلات المطلوبة فقط. يمنع ذلك المحوّلات غير الضرورية من حظر طلب عرض الإعلان الأول، ما يحافظ على موارد الحوسبة ويقلّل بشكل كبير من وقت الاستجابة لظهور الإعلان الأول.
لتحسين أداء تطبيقك، ننصحك باتّباع الاستراتيجيات التالية عند إنشاء إعدادات لإعداد المحوّل:
إعطاء الأولوية لشكل إعلان أو وحدة إعلانية معيّنة
يمكنك تحسين أداء التطبيقات التي تعرض إعلانًا فور تشغيلها، مثل "الإعلانات على شاشة فتح التطبيق"، من خلال تحديد شكل الإعلان أو الوحدة الإعلانية في إعدادات إعداد المحوِّل.
ينشئ المثال التالي إعدادات تهيئة للمحوّلات، بحيث لا يتم إعداد سوى محوّلات التوسّط المطلوبة لوحدة إعلانية على شاشة فتح التطبيق معيّنة، مع ضبط مهلة مدتها خمس ثوانٍ:
Swift
let adapterConfig = MediationInitializationConfiguration()
adapterConfig.includedAdUnitIDs = [adUnitID]
adapterConfig.initializationTimeout = 5.0
Objective-C
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
Objective-C
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
Objective-C
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
Objective-C
GADMediationInitializationConfiguration *adapterConfig =
[[GADMediationInitializationConfiguration alloc] init];
adapterConfig.excludedAdapterClasses = [NSSet setWithArray:@[ kTestAdapterClassName ]];
adapterConfig.initializationTimeout = 5.0;
تخطّي المحوّلات غير المُهيأة
إذا كنت تخطّط لإعداد أو استبعاد محوّلات توسّط معيّنة، يمكنك ضبط طلب عرض الإعلان لتخطّي المحوّلات غير المُعدّة التي لا تزال متوفّرة في العرض الإعلاني بدون انقطاع.
إذا لم تنشئ إعدادات المحوّل، سيظل بإمكانك ضبط طلب عرض الإعلان لتخطّي المحوّلات التي لم تتم تهيئتها. Google Mobile Ads SDK issues an ad request without waiting for adapters to time out or fail to initialize.
يُهيئ المثال التالي حزمة تطوير البرامج (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()
Objective-C
[[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.
}
Objective-C
// 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.
}];