Aby rozwiązać ten problem, AdMob udostępnia konfigurowalną inicjalizację adaptera. Ta funkcja pozwala kontrolować, które adaptery są inicjowane przy pierwszym wyświetleniu reklamy, i zmniejsza opóźnienie tego wyświetlenia.
Ten przewodnik zawiera informacje o tych aspektach inicjowania konfigurowalnego adaptera:
Wymagania wstępne
- Zaimportuj pakiet Google Mobile Ads SDK w wersji 13.4.0 lub nowszej.
- Skonfiguruj Google Mobile Ads SDK.
Aby włączyć tę funkcję, dodaj
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>w Objective-C lubimport GoogleMobileAds_Privatew Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Tworzenie konfiguracji adaptera
Konfiguracja inicjowania adaptera instruuje Google Mobile Ads SDK, aby inicjował tylko wymagane adaptery. Zapobiega to blokowaniu pierwszego żądania reklamy przez niepotrzebne adaptery, co pozwala oszczędzać zasoby obliczeniowe i znacznie zmniejsza opóźnienie pierwszego wyświetlenia reklamy.
Aby zoptymalizować wydajność aplikacji, podczas tworzenia konfiguracji inicjowania adaptera weź pod uwagę te strategie:
Nadawanie priorytetu konkretnemu formatowi reklamy lub jednostce reklamowej
Zwiększ skuteczność aplikacji, które wyświetlają reklamę natychmiast po uruchomieniu, np. reklamę wyświetlaną przy otwarciu aplikacji, przez zadeklarowanie konkretnego formatu reklamy lub jednostki reklamowej w konfiguracji inicjowania adaptera.
W przykładzie poniżej tworzymy konfigurację inicjowania adaptera, która inicjuje tylko wymagane adaptery zapośredniczenia dla konkretnej jednostki reklamowej wyświetlanej przy otwarciu aplikacji z 5-sekundowym limitem czasu:
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;
Poniższy przykład tworzy konfigurację inicjowania adaptera, która inicjuje tylko wymagane adaptery zapośredniczenia dla wszystkich reklam wyświetlanych przy otwarciu aplikacji i ustawia 5-sekundowy limit czasu:
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;
Inicjowanie określonych adapterów zapośredniczenia
Jeśli wiesz dokładnie, którzy partnerzy zapośredniczenia zwykle wypełniają pierwsze wyświetlenie reklamy, możesz zainicjować tylko ten konkretny adapter, podając jego nazwę klasy w konfiguracji inicjowania adaptera. Połącz to z wyraźnym pomijaniem niezainicjowanych adapterów i ustawieniem limitu czasu na Google Mobile Ads SDK, aby nie czekać na pozostałe niezainicjowane adaptery podczas aukcji.
Poniższy przykład tworzy konfigurację inicjowania adaptera, która inicjuje konkretny adapter zapośredniczenia i ustawia 5-sekundowy limit czasu:
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;
Wykluczanie określonych adapterów zapośredniczenia
Jeśli zauważysz, że niektóre adaptery zapośredniczenia mają stale wysokie opóźnienie, możesz je wykluczyć i zainicjować później.
W tym przykładzie tworzymy konfigurację inicjowania adaptera, która wyklucza określone adaptery z inicjowania i ustawia 5-sekundowy limit czasu:
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;
Pomiń niezainicjowane adaptery
Jeśli planujesz zainicjować lub wykluczyć określone adaptery zapośredniczenia, możesz skonfigurować żądanie reklamy tak, aby pomijało niezainicjowane adaptery, które nadal znajdują się w kaskadzie.
Jeśli nie utworzysz konfiguracji adaptera, nadal możesz skonfigurować żądanie reklamy tak, aby pomijało niezainicjowane adaptery. Google Mobile Ads SDK wysyła żądanie reklamy bez czekania na przekroczenie limitu czasu oczekiwania lub niepowodzenie inicjowania adapterów.
W tym przykładzie pakiet SDK jest inicjowany z konfiguracją inicjowania adaptera i tworzone jest żądanie reklamy wyświetlanej przy otwarciu aplikacji, które pomija niezainicjowane adaptery:
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];
}];
}];
Zainicjuj pozostałe adaptery
Po wczytaniu reklam, które muszą zostać wyświetlone w określonym czasie, zainicjuj pozostałe adaptery, aby zapewnić pełne zapośredniczenie partnerów przez resztę sesji aplikacji.
Poniższy przykład inicjuje pozostałe adaptery, podając pustą konfigurację:
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.
}];