使用可設定的轉接器初始化功能 (Alpha 版)

選取平台: Android 新 Android iOS

根據預設,Google Mobile Ads SDK 會在初始化期間,初始化與應用程式相關聯的所有中介服務轉接程式。初始化每個轉接程式可能需要超過 30 秒,導致第一個廣告載入前出現明顯延遲。

為解決這個問題,AdMob 提供可設定的轉接程式初始化功能。這項功能可讓您控管要為首次廣告曝光初始化哪些轉接程式,並減少該曝光的延遲時間。

本指南將說明可設定的轉接程式初始化功能的下列主題:

必要條件

  • 如要啟用這項功能,請在 Objective-C 中加入 #import <GoogleMobileAds/GoogleMobileAds_Beta.h>,或在 Swift 中加入 import GoogleMobileAds_Private。

    Swift

    import GoogleMobileAds
    import GoogleMobileAds_Private
    

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