結合自訂顯示的原生廣告和橫幅廣告請求

只要稍微修改程式碼,就能在廣告請求中結合原生廣告和橫幅廣告。

必要條件

  • 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];