原生廣告是一種透過 UI 元件向使用者顯示的廣告素材資源 這是平台的原生功能這裡顯示的類別與常用類別相同 ,而且格式可以配合應用程式的視覺設計。
原生廣告載入時,應用程式會收到內含其素材資源的廣告物件。 和應用程式 (而非 Google Mobile Ads SDK) 是 。
廣泛來說,成功導入原生廣告的方法如下: 使用 SDK 載入廣告,然後在應用程式中顯示廣告素材。
本頁說明如何使用 SDK 載入 原生廣告。
必要條件
- 完成入門指南。
一律使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非 現場及正式環境廣告
要載入測試廣告,最簡單的方法是使用我們專屬的測試廣告單元編號。 iOS 上的原生廣告:
ca-app-pub-3940256099942544/3986624511
這是經過特別設定,每次請求都會傳回測試廣告。 並在程式設計、測試和偵錯時用於自己的應用程式。只要確定 請先改用您自己的廣告單元 ID,再發布應用程式。
若要進一步瞭解 Google Mobile Ads SDK 測試廣告的運作方式,請參閱: 測試廣告。
載入廣告
原生廣告會與
GADAdLoader
敬上
類別,並根據
GADAdLoaderDelegate
因此效能相當卓越
初始化廣告載入器
您必須先初始化廣告載入器,才能載入廣告。
以下程式碼示範如何初始化 GADAdLoader
:
Swift
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ ... ad loader options objects ... ])
adLoader.delegate = self
Objective-C
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// 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;
請求廣告
初始化 GADAdLoader
後,請呼叫 loadRequest:
方法以
請求廣告:
Swift
adLoader.load(GADRequest())
Objective-C
[self.adLoader loadRequest:[GADRequest request]];
loadRequest:
敬上
方法
GADAdLoader
接受相同的
GADRequest
將物件轉換成橫幅廣告和插頁式廣告您可以使用要求物件,新增
和指定目標資訊
和其他廣告類型一樣
載入多個廣告 (選用)
如要在單一請求中載入多個廣告,請設定
GADMultipleAdsAdLoaderOptions
敬上
物件。GADAdLoader
Swift
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: self,
adTypes: [ .native ],
options: [ multipleAdOptions ])
Objective-C
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
每個請求的廣告數量上限為五則,但無法保證 SDK 會傳回所請求的確切廣告數量
雖然傳回的 Google 廣告各不相同,但來自 預訂廣告空間或第三方買方不保證不會重複。
如果您使用中介服務,請不要使用 GADMultipleAdsAdLoaderOptions
類別。
這是因為針對多個原生廣告的請求,目前不適用於
都必須使用中介服務設定
正在判斷載入完成的時間
應用程式呼叫 loadRequest:
後,可使用
呼叫:
adLoader:didFailToReceiveAdWithError:
敬上 在「GADAdLoaderDelegate
」中adLoader:didReceiveNativeAd:
敬上 在「GADNativeAdLoaderDelegate
」中
請求單一廣告時,每次呼叫這兩種方法都會導致一次呼叫。
請求多個廣告時,系統會產生至少一個以上的回呼 ,但不超過所請求廣告數量上限。
此外,GADAdLoaderDelegate
還提供 adLoaderDidFinishLoading
回呼。這個委派方法表示廣告載入器已完成載入
都不會針對請求回報其他廣告或錯誤。以下是
一次載入多個原生廣告的使用範例:
Swift
class ViewController: UIViewController, GADNativeAdLoaderDelegate {
var adLoader: GADAdLoader!
override func viewDidLoad() {
super.viewDidLoad()
let multipleAdOptions = GADMultipleAdsAdLoaderOptions()
multipleAdOptions.numberOfAds = 5;
adLoader = GADAdLoader(adUnitID: "ca-app-pub-3940256099942544/3986624511",
// The UIViewController parameter is optional.
rootViewController: rootViewController,
adTypes: [ .native ],
options: [ multipleAdOptions ])
adLoader.delegate = self
adLoader.load(GADRequest())
}
func adLoader(_ adLoader: GADAdLoader,
didReceive nativeAd: GADNativeAd) {
// A native ad has loaded, and can be displayed.
}
func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
// The adLoader has finished loading ads, and a new request can be sent.
}
}
Objective-C
@interface ViewController () <GADNativeAdLoaderDelegate, GADVideoControllerDelegate>
@property(nonatomic, strong) GADAdLoader *adLoader;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
GADMultipleAdsAdLoaderOptions *multipleAdsOptions =
[[GADMultipleAdsAdLoaderOptions alloc] init];
multipleAdsOptions.numberOfAds = 5;
self.adLoader = [[GADAdLoader alloc]
initWithAdUnitID:@"ca-app-pub-3940256099942544/3986624511"
// The UIViewController parameter is nullable.
rootViewController:rootViewController
adTypes:@[ GADAdLoaderAdTypeNative ]
options:@[ multipleAdsOptions ]];
self.adLoader.delegate = self;
[self.adLoader loadRequest:[GADRequest request]];
}
- (void)adLoader:(GADAdLoader *)adLoader
didReceiveNativeAd:(GADNativeAd *)nativeAd {
// A native ad has loaded, and can be displayed.
}
- (void)adLoaderDidFinishLoading:(GADAdLoader *) adLoader {
// The adLoader has finished loading ads, and a new request can be sent.
}
@end
處理失敗的要求
上述通訊協定會擴充 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:
所示。
顯示您的廣告
廣告載入完畢後,剩下的部分就是向使用者顯示。 請參閱原生進階指南,瞭解如何操作。