原生广告

原生广告是通过平台原本就有的界面组件向用户呈现的广告素材资源。这种广告采用您已经在 Storyboard 中使用的那些类进行展示,能以和应用视觉设计相称的形式呈现,让用户有浑然一体的使用体验。

加载原生广告时,您的应用会收到一个包含其素材资源的广告对象, 然后应用(而不是 Google 移动广告 SDK) 来显示它们

一般来说,要成功植入原生广告,需要完成两部分工作: 使用 SDK 加载广告,然后在您的应用中展示广告内容。

本页介绍了如何使用 SDK 加载 原生广告

前提条件

始终使用测试广告进行测试

在构建和测试应用时,请务必使用测试广告 实际投放的广告。

对于 iOS 上的原生广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:

/21775744923/example/native

该测试广告单元 ID 已经过专门配置,可为每个请求返回测试广告,而且您可以 在自己应用的编码、测试和调试过程中使用。只需确保您 请将其替换为您自己的广告单元 ID,然后再发布应用。

如需详细了解 Google 移动广告 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]];

通过 loadRequest: 方法 GADAdLoader 接受相同的 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: 所示。

展示您的广告

加载广告后,剩下的工作就是将其展示给您的用户。 请访问原生高级广告 指南了解具体方法。