原生廣告

原生廣告是透過平台原生的 UI 元件向使用者呈現的廣告素材資源。這些圖片會使用您在情節板中使用的相同類別顯示,並可根據應用程式的視覺設計進行格式設定。

原生廣告載入時,應用程式會收到包含素材資源的廣告物件,然後由應用程式 (而非 Google Mobile Ads SDK) 負責顯示素材資源。

大致來說,成功導入原生廣告需要兩個步驟:使用 SDK 載入廣告,然後在應用程式中顯示廣告內容。

本頁面說明如何使用 SDK 載入原生廣告

必要條件

請務必使用測試廣告進行測試

建構及測試應用程式時,請務必使用測試廣告,而非實際的正式版廣告。

如要載入測試廣告,最簡單的方法是使用 iOS 原生廣告專用的測試廣告單元 ID:

/21775744923/example/native

這項廣告單元已特別設定為針對每項要求傳回測試廣告,您可以在編寫程式碼、測試及偵錯時,在自己的應用程式中使用這項廣告單元。只要確定在發布應用程式前已將其替換為您自己的廣告單元 ID 即可。

如要進一步瞭解 Google Mobile Ads SDK 的測試廣告運作方式,請參閱「測試廣告」一文。

載入廣告

原生廣告會透過 GADAdLoader 類別載入,該類別會根據 GADAdLoaderDelegate 通訊協定,向其委派者傳送訊息。

除了系統定義的原生格式,您也可以建立自己的自訂原生廣告格式,用於直接銷售的原生廣告。自訂原生廣告格式可讓您將任意結構化資料傳遞至應用程式。這些廣告由 GADCustomNativeAd 類別代表。

初始化廣告載入器

您必須先初始化廣告載入器,才能載入廣告。以下程式碼示範如何初始化 GADAdLoader

Swift

adLoader = GADAdLoader(adUnitID: "/21775744923/example/native",
    // The UIViewController parameter is optional.
    rootViewController: rootViewController,
    adTypes: [ .native ],
    options: [ ... ad loader options objects ... ])
adLoader.delegate = self

Objective-C

self.adLoader = [[GADAdLoader alloc]
      initWithAdUnitID:@"/21775744923/example/native"
    // The UIViewController parameter is nullable.
    rootViewController:rootViewController
               adTypes:@[ GADAdLoaderAdTypeNative ]
               options:@[ ... ad loader options objects ... ]];
self.adLoader.delegate = self;

您需要廣告單元 ID (可使用測試 ID)、在 adTypes 陣列中傳遞的常數 (用於指定要要求的原生廣告格式),以及要在 options 參數中設定的任何選項。如要查看 options 參數的可能值清單,請前往設定原生廣告選項頁面

adTypes 陣列應包含下列一或多個常數:

實作廣告載入器委派程式

廣告載入器委派函式必須實作特定廣告類型的通訊協定。針對原生廣告,GADNativeAdLoaderDelegate 通訊協定會在原生廣告載入時傳送訊息給委派者。

Swift

public func adLoader(_ adLoader: GADAdLoader,
            didReceive nativeAd: GADNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveNativeAd:(GADNativeAd *)nativeAd;

GADCustomNativeAdLoaderDelegate 通訊協定包含訊息,會在自訂範本廣告載入時傳送給委派者。

Swift

func adLoader(_ adLoader: GADAdLoader,
  Receive customNativeAd: GADCustomNativeAd)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didReceiveCustomNativeAd:(GADCustomNativeAd *) customNativeAd;

請求廣告

GADAdLoader 初始化後,請呼叫其 loadRequest: 方法來要求廣告:

Swift

adLoader.load(GAMRequest())

Objective-C

[self.adLoader loadRequest:[GAMRequest request]];

GADAdLoader 中的 loadRequest: 方法會接受與橫幅和插頁廣告相同的 GAMRequest 物件。您可以使用要求物件新增指定目標資訊,就像使用其他廣告類型一樣。

判斷載入作業何時完成

應用程式呼叫 loadRequest: 後,即可透過以下呼叫取得要求的結果:

針對單一廣告的請求會導致對其中一種方法的一次呼叫。

處理失敗的要求

上述通訊協定會擴充 GADAdLoaderDelegate 通訊協定,該通訊協定會定義廣告載入失敗時傳送的訊息。

Swift

public func adLoader(_ adLoader: GADAdLoader,
    didFailToReceiveAdWithError error: NSError)

Objective-C

- (void)adLoader:(GADAdLoader *)adLoader
    didFailToReceiveAdWithError:(NSError *)error;

接收原生廣告事件通知

如要接收與原生廣告互動相關的事件通知,請設定原生廣告的委派作業屬性:

Swift

nativeAd.delegate = self

Objective-C

nativeAd.delegate = self;

接著實作 GADNativeAdDelegate,以便接收下列委派呼叫:

Swift

func nativeAdDidRecordImpression(_ nativeAd: GADNativeAd) {
  // The native ad was shown.
}

func nativeAdDidRecordClick(_ nativeAd: GADNativeAd) {
  // The native ad was clicked on.
}

func nativeAdWillPresentScreen(_ nativeAd: GADNativeAd) {
  // The native ad will present a full screen view.
}

func nativeAdWillDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad will dismiss a full screen view.
}

func nativeAdDidDismissScreen(_ nativeAd: GADNativeAd) {
  // The native ad did dismiss a full screen view.
}

func nativeAdWillLeaveApplication(_ nativeAd: GADNativeAd) {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

Objective-C

- (void)nativeAdDidRecordImpression:(GADNativeAd *)nativeAd {
  // The native ad was shown.
}

- (void)nativeAdDidRecordClick:(GADNativeAd *)nativeAd {
  // The native ad was clicked on.
}

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd {
  // The native ad will present a full screen view.
}

- (void)nativeAdWillDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad will dismiss a full screen view.
}

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd {
  // The native ad did dismiss a full screen view.
}

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd {
  // The native ad will cause the app to become inactive and
  // open a new app.
}

最佳做法

請在載入廣告時遵守下列規則。

  • 在清單中使用原生廣告的應用程式,應預先快取廣告清單。

  • 預先快取廣告時,請清除快取內容,並在一個小時後重新載入。

  • GADAdLoader 上呼叫 loadRequest: 之前,請等待先前要求完成載入,如 adLoaderDidFinishLoading: 所示。

  • 只將必要的原生廣告快取。舉例來說,在預先快取時,請只快取立即顯示在螢幕上的廣告。原生廣告的記憶體占用量很大,如果您在快取原生廣告時不刪除,就會導致記憶體用量過高。

  • 不再使用時刪除原生廣告。

顯示廣告

載入廣告後,您只需向使用者顯示廣告即可。 請參閱原生進階指南,瞭解如何操作。