插页式广告

插页式广告是在应用上叠加展示的全屏广告,它们通常在正常的应用过渡点(如游戏关卡之间)展示。

本指南介绍如何在 DFP 广告管理系统(以下简称 DFP)移动广告 iOS 应用中集成插页式广告。

前提条件

实用的入门信息

  • 您可以从 GitHub 下载插页式广告示例并遵照相关说明将插页式广告添加到您的项目中。

    Objective-C Swift

  • 您可能还需要阅读广告事件指南以充分利用插页式广告。本指南中的部分示例使用广告事件执行更高级的插页式广告集成。

在 DFP 中创建插页式广告单元

在 DFP 中创建一个广告单元以表示插页式广告单元。插页式广告单元可以使用四种常见大小之一进行定义,而不考虑各个设备的实际屏幕大小。SDK 可在尺寸略有不同的屏幕上正确呈现广告素材。

  • 手机:320x480(纵向),480x320(横向)
  • 平板电脑:768x1024(纵向),1024x768(横向)

无需为横屏模式定义单独的广告单元。您可以简单地将横向尺寸(例如用于智能手机的 480x320)添加到定位插页式广告单元的订单项,并添加一个既有常规纵向尺寸也有横向尺寸的广告素材。

将插页式广告添加到项目中

对于 DFPInterstitial,建议您采用如下的生命周期设置:在应用启动时预加载它,并在应用的自然停止点展示它。本指南中的示例代码介绍了插页式广告在游戏中的运作方式。每次游戏开始时加载插页式广告,并在游戏结束时展示插页式广告。

此代码段显示了如何制作并在游戏启动时加载 DFPInterstitial

Objective-C

@import GoogleMobileAds;

@interface ViewController ()

@property(nonatomic, strong) DFPInterstitial *interstitial;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];

  [self startNewGame];
}

- (void)startNewGame {
  [self createAndLoadInterstitial];

  // Set up a new game.
}

- (void)createAndLoadInterstitial {
  self.interstitial = [[DFPInterstitial alloc] initWithAdUnitID:@"/6499/example/interstitial"];
  [self.interstitial loadRequest:[DFPRequest request]];
}

Swift

import UIKit
import GoogleMobileAds

class ViewController: UIViewController {

  var interstitial: DFPInterstitial!

  override func viewDidLoad() {
    super.viewDidLoad()

    startNewGame()
  }

  private func startNewGame() {
    createAndLoadInterstitial()

    // Set up a new game.
  }

  private func createAndLoadInterstitial() {
    interstitial = DFPInterstitial(adUnitID: "/6499/example/interstitial")
    interstitial.loadRequest(DFPRequest())
  }
}

当您可以展示插页式广告时,请在尝试展示之前查看它是否已准备就绪。以下是一个在游戏结束时展示插页式广告的示例。该应用必须在适当的时间显式调用此方法。

Objective-C

- (void)endGame {
  [[[UIAlertView alloc]
          initWithTitle:@"Game Over"
                message:@"Your time ran out!"
               delegate:self
      cancelButtonTitle:@"Ok"
      otherButtonTitles:nil] show];
}

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex {
  if (self.interstitial.isReady) {
    [self.interstitial presentFromRootViewController:self];
  } else {
    NSLog(@"Ad wasn't ready");
  }
  // Give user the option to start the next game.
}

Swift

private func endGame() {
  UIAlertView(title: "Game Over",
              message: "Your time ran out!",
              delegate: self,
              cancelButtonTitle: "Ok").show()
}

func alertView(alertView: UIAlertView, willDismissWithButtonIndex buttonIndex: Int) {
  if interstitial.isReady {
    interstitial.presentFromRootViewController(self)
  } else {
    print("Ad wasn't ready")
  }
  // Give user the option to start the next game.
}

结果

以下是展示插页式广告时该应用的外观。

只展示一次 DFPInterstitial

DFPInterstitial 是一次性使用的对象。也就是说,一旦展示插页式广告,hasBeenUsed 会返回 true,且插页式广告不能用于加载其他广告。要请求其他插页式广告,您需要创建新的 GADInterstitial 对象。如上所示,最佳做法是使用辅助方法来处理插页式广告的制作和加载。

常见问题解答

如何优化插页式广告的用户体验?
请查看我们的插页式广告实现指南
我收到了一条消息,显示“Cannot present interstitial. It is not ready”。
此错误表示系统未能成功抓取该插页式广告。要防止出现此警告,请使用 isReady 方法检查插页式广告是否已准备好进行展示。
我收到一条错误消息,显示“Request Error: Will not send request because interstitial object has been used”。
插页式广告是一次性使用的对象。您必须创建新的插页式对象,才能发送另一个插页式广告请求。
我未看到任何广告,但收到错误回复“Request Error: No ads to show”。
确保您的订单项包含定位到正确尺寸的广告素材。插页式广告尺寸是:在手机上为 320x480 和 480x320,在平板电脑上为 1024x768 和 768x1024。如果设备不够大,不足以容纳 1024x768 或 768x1024,它会回退到 320x480 或 480x320 的尺寸。

发送以下问题的反馈:

此网页
SDK for DFP Users on iOS
需要帮助?请访问我们的支持页面