Để giải quyết vấn đề này, AdMob cung cấp tính năng Khởi chạy bộ chuyển đổi có thể định cấu hình. Tính năng này giúp bạn kiểm soát những bộ chuyển đổi được khởi chạy cho lượt hiển thị quảng cáo đầu tiên và giảm độ trễ cho lượt hiển thị đó.
Hướng dẫn này đề cập đến các khía cạnh sau của tính năng Khởi chạy bộ chuyển đổi có thể định cấu hình:
- Tạo cấu hình bộ chuyển đổi
- Bỏ qua các bộ chuyển đổi chưa được khởi chạy
- Khởi động các bộ chuyển đổi còn lại
Điều kiện tiên quyết
- Nhập Google Mobile Ads SDK phiên bản 13.4.0 trở lên.
- Thiết lập Google Mobile Ads SDK.
Chọn sử dụng tính năng này bằng cách thêm
#import <GoogleMobileAds/GoogleMobileAds_Beta.h>trong Objective-C hoặc thêmimport GoogleMobileAds_Privatetrong Swift.Swift
import GoogleMobileAds import GoogleMobileAds_PrivateObjective-C
#import <GoogleMobileAds/GoogleMobileAds.h> #import <GoogleMobileAds/GoogleMobileAds_Beta.h>
Tạo cấu hình bộ chuyển đổi
Cấu hình khởi chạy bộ chuyển đổi hướng dẫn Google Mobile Ads SDK chỉ khởi chạy các bộ chuyển đổi bắt buộc. Điều này giúp ngăn các bộ chuyển đổi không cần thiết chặn yêu cầu quảng cáo đầu tiên của bạn, tiết kiệm tài nguyên tính toán và giảm đáng kể độ trễ cho lượt hiển thị quảng cáo đầu tiên.
Để tối ưu hoá hiệu suất của ứng dụng, hãy cân nhắc các chiến lược sau khi bạn tạo cấu hình khởi chạy bộ chuyển đổi:
Ưu tiên Định dạng quảng cáo hoặc Đơn vị quảng cáo cụ thể
Cải thiện hiệu suất của những ứng dụng hiển thị quảng cáo ngay khi khởi chạy (chẳng hạn như quảng cáo khi mở ứng dụng) bằng cách khai báo định dạng quảng cáo hoặc đơn vị quảng cáo cụ thể trong cấu hình khởi chạy bộ chuyển đổi.
Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi chỉ khởi chạy các bộ chuyển đổi dàn xếp bắt buộc cho một đơn vị quảng cáo khi mở ứng dụng cụ thể với thời gian chờ là 5 giây:
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;
Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi chỉ khởi chạy các bộ chuyển đổi dàn xếp bắt buộc cho tất cả Quảng cáo khi mở ứng dụng và đặt thời gian chờ là 5 giây:
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;
Khởi chạy các bộ chuyển đổi dàn xếp cụ thể
Nếu biết chính xác đối tác dàn xếp nào thường lấp đầy lượt hiển thị quảng cáo đầu tiên, bạn có thể chỉ khởi chạy bộ chuyển đổi cụ thể đó bằng cách cung cấp tên lớp bộ chuyển đổi trong cấu hình khởi chạy bộ chuyển đổi. Kết hợp điều này với việc bỏ qua rõ ràng các bộ chuyển đổi chưa khởi chạy và đặt thời gian chờ cho Google Mobile Ads SDK để không phải chờ các bộ chuyển đổi chưa khởi chạy còn lại trong phiên đấu giá.
Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi để khởi chạy một bộ chuyển đổi dàn xếp cụ thể và đặt thời gian chờ là 5 giây:
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;
Loại trừ một số bộ chuyển đổi dàn xếp
Nếu nhận thấy một số bộ chuyển đổi dàn xếp nhất định có độ trễ cao liên tục, bạn có thể loại trừ các bộ chuyển đổi này và khởi chạy chúng vào lúc khác.
Ví dụ sau đây tạo một cấu hình khởi chạy bộ chuyển đổi, loại trừ các bộ chuyển đổi cụ thể khỏi quá trình khởi chạy và đặt thời gian chờ là 5 giây:
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;
Bỏ qua các bộ chuyển đổi chưa được khởi chạy
Nếu dự định khởi chạy hoặc loại trừ các bộ chuyển đổi dàn xếp cụ thể, bạn có thể định cấu hình yêu cầu quảng cáo để bỏ qua các bộ chuyển đổi chưa khởi chạy vẫn có trong thác nước của bạn.
Nếu không tạo cấu hình bộ chuyển đổi, bạn vẫn có thể định cấu hình yêu cầu quảng cáo để bỏ qua các bộ chuyển đổi chưa được khởi chạy. Google Mobile Ads SDK sẽ đưa ra yêu cầu quảng cáo mà không cần đợi bộ chuyển đổi hết thời gian chờ hoặc không khởi động được.
Ví dụ sau đây khởi chạy SDK bằng cấu hình khởi chạy bộ chuyển đổi và tạo một yêu cầu quảng cáo khi mở ứng dụng để bỏ qua các bộ chuyển đổi chưa khởi chạy:
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];
}];
}];
Khởi chạy các bộ chuyển đổi còn lại
Sau khi các cơ hội quảng cáo có giới hạn thời gian đã tải, hãy khởi chạy các bộ chuyển đổi còn lại để đảm bảo phạm vi dàn xếp đầy đủ của đối tác cho phần còn lại của phiên ứng dụng.
Ví dụ sau đây khởi chạy các bộ chuyển đổi còn lại bằng cách cung cấp một cấu hình trống:
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.
}];