原生廣告是一種透過平台原生 UI 元件向使用者顯示的廣告素材資源。顯示這些類別時,會使用在分鏡腳本中使用的類別,而且其格式可以配合應用程式的視覺設計。
載入原生廣告時,應用程式會收到內含其素材資源的廣告物件,應用程式 (而非 Google Mobile Ads SDK) 就會負責顯示這類廣告。
一般而言,成功導入原生廣告的程序分為兩個部分:使用 SDK 載入廣告,然後在應用程式中顯示廣告素材。
本頁面說明如何使用 SDK 載入 原生廣告。
先備知識
- 完成入門指南。
一律使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非即時的實際廣告。
要載入測試廣告,最簡單的方法就是使用 iOS 原生廣告專用的測試廣告單元 ID:
/6499/example/native
這是經過特別設定,可針對每個請求傳回測試廣告,方便您在編寫程式碼、測試及偵錯時用於自家的應用程式。發布應用程式之前,請務必用自己的廣告單元 ID 取代這個 ID。
如要進一步瞭解 Google Mobile Ads SDK 測試廣告的運作方式,請參閱「測試廣告」一文。
載入廣告
原生廣告會使用 GADAdLoader
類別載入,這個類別會根據 GADAdLoaderDelegate
通訊協定,將訊息傳送給委派代表。
除了系統定義的原生格式之外,您也可以建立自己的自訂原生廣告格式 (用於直接銷售的原生廣告)。使用自訂原生廣告格式可讓您將任意結構化資料傳送至應用程式。這類廣告以 GADCustomNativeAd
類別表示。
初始化廣告載入器
您必須先初始化廣告載入器,才能載入廣告。以下程式碼示範如何初始化 GADAdLoader
:
Swift
adLoader = GADAdLoader(adUnitID: "/6499/example/native",
rootViewController: self,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"/6499/example/native"
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
中的adLoader:didFailToReceiveAdWithError:
GADNativeAdLoaderDelegate
中的adLoader:didReceiveNativeAd:
請求單一廣告時,每次呼叫這兩種方法都會導致一次呼叫。
處理失敗的要求
上述通訊協定會擴充 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.
}
最佳做法
載入廣告時,請遵守這些規則。
在清單中使用原生廣告的應用程式,應預先快取廣告清單。
預先快取廣告時,請清除快取,並在一小時後重新載入。
請勿在上一個要求完成載入 (如
adLoaderDidFinishLoading:
所示) 前,在GADAdLoader
上再次呼叫loadRequest:
。
顯示您的廣告
廣告載入完畢後,剩下的部分就是向使用者顯示。 詳情請參閱原生進階廣告指南。