Korzystanie z konfigurowalnej inicjalizacji adaptera (alfa)

Domyślnie Google Mobile Ads SDK podczas inicjowania inicjuje wszystkie adaptery zapośredniczenia powiązane z Twoją aplikacją. Inicjowanie wszystkich adapterów może potrwać ponad 30 sekund, co może spowodować znaczne opóźnienie przed wczytaniem pierwszej reklamy.

Aby rozwiązać ten problem, AdMob udostępnia konfigurowalną inicjalizację adaptera. Ta funkcja pozwala kontrolować, które adaptery są inicjowane w przypadku pierwszego wyświetlenia reklamy, i zmniejsza opóźnienie tego wyświetlenia.

Ten przewodnik obejmuje następujące aspekty inicjowania konfigurowalnego adaptera:

Wymagania wstępne

  • Aby włączyć tę funkcję, dodaj #import <GoogleMobileAds/GoogleMobileAds_Beta.h> w Objective-C lub import GoogleMobileAds_Private w Swift.

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

    Objective-C

    #import <GoogleMobileAds/GoogleMobileAds.h>
    #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
    

Tworzenie konfiguracji adaptera

Konfiguracja inicjowania adaptera nakazuje Google Mobile Ads SDK inicjowanie tylko wymaganych adapterów. Zapobiega to blokowaniu pierwszego żądania reklamy przez niepotrzebne adaptery, co pozwala oszczędzać zasoby obliczeniowe i znacznie skracać czas oczekiwania na pierwsze wyświetlenie reklamy.

Aby zoptymalizować skuteczność aplikacji, podczas tworzenia konfiguracji inicjowania adaptera rozważ zastosowanie tych strategii:

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, deklarując konkretny format reklamy lub jednostkę reklamową w konfiguracji inicjowania adaptera.

W tym przykładzie 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;

W tym przykładzie tworzymy konfigurację inicjowania adaptera, która inicjuje tylko wymagane adaptery do mediacji w przypadku 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 konkretnych adapterów zapośredniczenia

Jeśli wiesz, którzy partnerzy zapośredniczenia zwykle wypełniają pierwsze wyświetlenie reklamy, możesz zainicjować tylko ten konkretny adapter, podając nazwę klasy adaptera w konfiguracji inicjowania adaptera. Połącz to z 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 do mediacji

Jeśli zauważysz, że niektóre adaptery zapośredniczenia mają stale wysokie opóźnienia, możesz je wykluczyć i zainicjować później.

W tym przykładzie tworzymy konfigurację inicjowania adaptera, która wyklucza z inicjowania określone adaptery 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;

Pomijanie niezainicjowanych adapterów

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, możesz skonfigurować żądanie reklamy tak, aby pomijać 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 za pomocą konfiguracji 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];
                                     }];
                                }];

Inicjowanie pozostałych adapterów

Po wczytaniu możliwości wyświetlania reklam wrażliwych na czas zainicjuj pozostałe adaptery, aby zapewnić pełne zapośredniczenie partnerów w pozostałej części sesji aplikacji.

W tym przykładzie pozostałe adaptery są inicjowane przez podanie pustej konfiguracji:

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.
                                }];