이 문제를 해결하기 위해 AdMob에서는 구성 가능한 어댑터 초기화를 제공합니다. 이 기능을 사용하면 첫 번째 광고 노출 시 초기화되는 어댑터를 제어하고 해당 노출의 지연 시간을 줄일 수 있습니다.
이 가이드에서는 구성 가능한 어댑터 초기화의 다음 측면을 다룹니다.
기본 요건
- Google Mobile Ads SDK 13.4.0 이상을 가져옵니다.
- Google Mobile Ads SDK을 설정합니다.
Objective-C에서
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>를 추가하거나 Swift에서import GoogleMobileAds_Private를 추가하여 이 기능을 선택합니다.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
어댑터 구성 만들기
어댑터 초기화 구성은 Google Mobile Ads SDK에 필요한 어댑터만 초기화하도록 지시합니다. 이렇게 하면 불필요한 어댑터가 첫 번째 광고 요청을 차단하지 않아 컴퓨팅 리소스가 절약되고 첫 번째 광고 노출의 지연 시간이 크게 줄어듭니다.
앱의 성능을 최적화하려면 어댑터 초기화 구성을 만들 때 다음 전략을 고려하세요.
특정 광고 형식 또는 광고 단위 우선순위 지정하기
어댑터 초기화 구성에서 특정 광고 형식 또는 광고 단위를 선언하여 실행 시 즉시 광고를 표시하는 앱(예: 앱 오프닝 광고)의 실적을 개선합니다.
다음 예에서는 제한 시간이 5초인 특정 앱 오프닝용 광고 단위에 필요한 미디에이션 어댑터만 초기화하는 어댑터 초기화 구성을 만듭니다.
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;
다음 예에서는 모든 앱 오프닝 광고에 필요한 미디에이션 어댑터만 초기화하고 5초 제한 시간을 설정하는 어댑터 초기화 구성을 만듭니다.
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의 제한 시간을 설정하여 입찰 중에 초기화되지 않은 나머지 어댑터를 기다리지 않는 방식과 결합합니다.
다음 예에서는 특정 미디에이션 어댑터를 초기화하고 5초 제한 시간을 설정하는 어댑터 초기화 구성을 만듭니다.
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;
특정 미디에이션 어댑터 제외하기
특정 미디에이션 어댑터의 지연 시간이 꾸준히 길면 이러한 어댑터를 제외하고 나중에 초기화할 수 있습니다.
다음 예에서는 특정 어댑터가 초기화되지 않도록 제외하고 5초 제한 시간을 설정하는 어댑터 초기화 구성을 만듭니다.
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는 어댑터가 시간 초과되거나 초기화에 실패할 때까지 기다리지 않고 광고 요청을 발행합니다.
다음 예에서는 어댑터 초기화 구성으로 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.
}];