原生廣告是利用平台原生 UI 元件,向使用者顯示的廣告素材資源。這類廣告會使用您在 Storyboard 所用的類別,所以能配合應用程式的視覺設計調整格式。
載入原生廣告時,應用程式會收到含有素材資源的廣告物件,並負責呈現這些素材資源,而非由 Google Mobile Ads SDK 處理。
一般而言,導入原生廣告主要分為兩步驟:先使用 SDK 載入廣告,再在應用程式中呈現廣告素材。
本頁面說明如何使用 SDK 載入原生廣告。
前置作業
- 完整閱讀入門指南。
請務必使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非實際的正式廣告。
載入測試廣告最簡單的方法,是使用 iOS 原生廣告專用的測試廣告單元 ID:
/21775744923/example/native
這個 ID 經過特別設定,每次請求都會傳回測試廣告。在編寫程式碼、測試及偵錯階段,您可以在應用程式中自由使用,但發布前記得要換成自己的廣告單元 ID。
如要進一步瞭解 Google Mobile Ads SDK 測試廣告的運作方式,請參閱「測試廣告」。
載入廣告
原生廣告是以 GADAdLoader
類別載入,並根據 GADAdLoaderDelegate
協定傳送訊息至委派物件。
除了系統定義的原生格式外,您也可以自行建立自訂原生廣告格式,用來展示直接銷售的原生廣告。自訂原生廣告格式能將任意結構化資料傳遞至應用程式。這類廣告會以 GADCustomNativeAd
類別表示。
初始化廣告載入器
在載入廣告之前,必須先初始化廣告載入器。以下是初始化 GADAdLoader
的程式碼範例:
Swift
adLoader = AdLoader(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: AdLoader,
didReceive nativeAd: NativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd;
GADCustomNativeAdLoaderDelegate
協定會在自訂範本廣告載入後通知委派物件。
Swift
func adLoader(_ adLoader: AdLoader,
Receive customNativeAd: CustomNativeAd)
Objective-C
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveCustomNativeAd:(GADCustomNativeAd *) customNativeAd;
請求廣告
GADAdLoader
初始化完成後,請呼叫其 loadRequest:
方法來請求廣告:
Swift
adLoader.load(AdManagerRequest())
Objective-C
[self.adLoader loadRequest:[GAMRequest request]];
GADAdLoader
的 loadRequest:
方法接受與橫幅廣告和插頁式廣告相同的 GAMRequest
物件。您可以像處理其他廣告類型一樣,使用請求物件加入指定目標資訊。
判斷廣告何時載入完成
應用程式呼叫 loadRequest:
後,可透過以下方法取得請求結果:
- 呼叫
GADAdLoaderDelegate
中的adLoader:didFailToReceiveAdWithError:
- 呼叫
GADNativeAdLoaderDelegate
中的adLoader:didReceiveNativeAd:
請求單一廣告時,系統只會呼叫上述其中一個方法一次。
處理失敗的請求
上述協定繼承自 GADAdLoaderDelegate
協定,後者定義了廣告載入失敗時觸發的回呼方法。
Swift
public func adLoader(_ adLoader: AdLoader,
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: NativeAd) {
// The native ad was shown.
}
func nativeAdDidRecordClick(_ nativeAd: NativeAd) {
// The native ad was clicked on.
}
func nativeAdWillPresentScreen(_ nativeAd: NativeAd) {
// The native ad will present a full screen view.
}
func nativeAdWillDismissScreen(_ nativeAd: NativeAd) {
// The native ad will dismiss a full screen view.
}
func nativeAdDidDismissScreen(_ nativeAd: NativeAd) {
// The native ad did dismiss a full screen view.
}
func nativeAdWillLeaveApplication(_ nativeAd: NativeAd) {
// 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:
確認),避免重複呼叫。只快取必要的原生廣告。例如在預先快取時,只快取螢幕上立即可見的廣告。原生廣告較為占用記憶體,若未及時清理快取,會導致記憶體過度使用。
刪除不再使用的原生廣告。
顯示廣告
載入廣告後,接下來只要對使用者顯示即可。如需詳細做法,請參閱原生進階指南。