只要稍微修改程式碼,就能在廣告請求中結合原生廣告和橫幅廣告。
必要條件
- Google Mobile Ads SDK 7.20.0 以上版本
- 完成入門指南
載入廣告
自訂轉譯的原生廣告會透過 GADAdLoader
物件載入。您也可以設定 GADAdLoader
物件,以便提出可產生橫幅廣告或原生廣告的廣告要求。在建立 GADAdLoader
物件時,將 GADAdLoaderAdTypeGAMBanner
新增至 adTypes
陣列參數,並指定橫幅廣告應與原生廣告競爭,以便填入要求,例如 GADAdLoaderAdTypeNative
等原生廣告類型。
Swift
adLoader = GADAdLoader(adUnitID: "/21775744923/example/native-and-banner", rootViewController: self, adTypes: [.native, .gamBanner], options: [... ad loader options objects ...]) adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"/21775744923/example/native-and-banner" rootViewController:rootViewController adTypes:@[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ] options:@[ ... ad loader options objects ... ]]; self.adLoader.delegate = self;
GAMBannerAdLoaderDelegate
透過 GADAdLoader
要求橫幅廣告時,廣告載入器委派作業必須遵循 GAMBannerAdLoaderDelegate
通訊協定。這個通訊協定包含在橫幅廣告載入時傳送的訊息:
Swift
public func adLoader(_ adLoader: GADAdLoader, didReceive GAMBannerView: GAMBannerView)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader didReceiveGAMBannerView:(GAMBannerView *)bannerView;
廣告載入器委派函也必須指定應要求哪些橫幅廣告大小,方法是回應 validBannerSizesForAdLoader
訊息,如下所示。
Swift
public func validBannerSizes(for adLoader: GADAdLoader) -> [NSValue] { return [NSValueFromGADAdSize(GADAdSizeBanner), NSValueFromGADAdSize(GADAdSizeMediumRectangle), NSValueFromGADAdSize(GADAdSizeFromCGSize(CGSize(width: 120, height: 20)))] }
Objective-C
- (NSArray*)validBannerSizesForAdLoader:(GADAdLoader *)adLoader { return @[ @(GADAdSizeBanner), @(GADAdSizeMediumRectangle), @(GADAdSizeFromCGSize(CGSizeMake(120, 20))) ]; }
以人工方式計算曝光次數
如要在透過 GADAdLoader
載入的橫幅廣告上啟用手動曝光計數,請在初始化 GADAdLoader
時,將 enableManualImpressions
設為 YES
,並設定 GAMBannerViewOptions
。
Swift
let bannerViewOptions = GAMBannerViewOptions() bannerViewOptions.enableManualImpressions = true adLoader = GADAdLoader( adUnitID: "/21775744923/example/native-and-banner", rootViewController: self, adTypes: [.native, .gamBanner], options: [bannerViewOptions])
Objective-C
GAMBannerViewOptions *bannerViewOptions = [[GAMBannerViewOptions alloc] init]; bannerViewOptions.enableManualImpressions = YES; self.adLoader = [[GADAdLoader alloc] initWithAdUnitID:@"/21775744923/example/native-and-banner" rootViewController:self adTypes:@[ GADAdLoaderAdTypeNative, GADAdLoaderAdTypeGAMBanner ] options:@[ bannerViewOptions ]];
如果橫幅廣告已載入,您可以呼叫 recordManualImpression
,在判斷廣告已成功傳回且顯示在畫面上時,手動觸發曝光:
Swift
bannerView.recordImpression()
Objective-C
[self.bannerView recordImpression];